def time_left_str(seconds):
    """
    Produces a human-readable string in hh:mm:ss format
    :param seconds:

    :return:
    """
    m, s = divmod(int(seconds), 60)
    h, m = divmod(m, 60)
    d, h = divmod(h, 24)
    if d > 0:
        thetime = 'Projected time remaining  |  {:d}d:{:d}h:{:02d}m'.format(d,
            h, m)
    elif h > 0:
        thetime = 'Projected time remaining:  |  {:d}h:{:02d}m'.format(h, m)
    elif m > 0:
        thetime = 'Projected time remaining:  |  {:02d}m:{:02d}s'.format(m, s)
    else:
        thetime = 'Projected time remaining:  |  {:02d}s'.format(seconds)
    return thetime
