Ejemplo n.º 1
0
def choose_item(task, config):
    """Ask the user for a choice about tagging a single item. Returns
    either an action constant or a TrackMatch object.
    """
    print_()
    print_(task.item.path)
    candidates, rec = task.candidates, task.rec

    if config.quiet:
        # Quiet mode; make a decision.
        if rec == autotag.RECOMMEND_STRONG:
            match = candidates[0]
            show_item_change(task.item, match, config.color)
            return match
        else:
            return _quiet_fall_back(config)

    while True:
        # Ask for a choice.
        choice = choose_candidate(candidates,
                                  True,
                                  rec,
                                  config.color,
                                  config.timid,
                                  item=task.item)

        if choice in (importer.action.SKIP, importer.action.ASIS):
            return choice
        elif choice == importer.action.TRACKS:
            assert False  # TRACKS is only legal for albums.
        elif choice == importer.action.MANUAL:
            # Continue in the loop with a new set of candidates.
            search_artist, search_title = manual_search(True)
            candidates, rec = autotag.tag_item(task.item, config.timid,
                                               search_artist, search_title)
        elif choice == importer.action.MANUAL_ID:
            # Ask for a track ID.
            search_id = manual_id(True)
            if search_id:
                candidates, rec = autotag.tag_item(task.item,
                                                   config.timid,
                                                   search_id=search_id)
        else:
            # Chose a candidate.
            assert isinstance(choice, autotag.TrackMatch)
            return choice
Ejemplo n.º 2
0
def item_lookup(config):
    """A coroutine used to perform the initial MusicBrainz lookup for
    an item task.
    """
    task = None
    while True:
        task = yield task
        if task.sentinel:
            continue

        task.set_item_match(*autotag.tag_item(task.item, config.timid))
Ejemplo n.º 3
0
def item_lookup(config):
    """A coroutine used to perform the initial MusicBrainz lookup for
    an item task.
    """
    task = None
    while True:
        task = yield task
        if task.sentinel:
            continue

        task.set_item_match(*autotag.tag_item(task.item, config.timid))
Ejemplo n.º 4
0
def choose_item(task, config):
    """Ask the user for a choice about tagging a single item. Returns
    either an action constant or a TrackInfo object.
    """
    print_()
    print_(task.item.path)
    candidates, rec = task.item_match

    if config.quiet:
        # Quiet mode; make a decision.
        if rec == autotag.RECOMMEND_STRONG:
            dist, track_info = candidates[0]
            show_item_change(task.item, track_info, dist, config.color)
            return track_info
        else:
            return _quiet_fall_back(config)

    while True:
        # Ask for a choice.
        choice = choose_candidate(candidates, True, rec, config.color,
                                  config.timid, item=task.item)

        if choice in (importer.action.SKIP, importer.action.ASIS):
            return choice
        elif choice == importer.action.TRACKS:
            assert False # TRACKS is only legal for albums.
        elif choice == importer.action.MANUAL:
            # Continue in the loop with a new set of candidates.
            search_artist, search_title = manual_search(True)
            candidates, rec = autotag.tag_item(task.item, config.timid,
                                               search_artist, search_title)
        elif choice == importer.action.MANUAL_ID:
            # Ask for a track ID.
            search_id = manual_id(True)
            if search_id:
                candidates, rec = autotag.tag_item(task.item, config.timid,
                                                search_id=search_id)
        else:
            # Chose a candidate.
            assert not isinstance(choice, importer.action)
            return choice
Ejemplo n.º 5
0
def item_lookup(config):
    """A coroutine used to perform the initial MusicBrainz lookup for
    an item task.
    """
    task = None
    while True:
        task = yield task
        if task.sentinel:
            continue

        plugins.send('import_task_start', task=task, config=config)

        task.set_item_candidates(*autotag.tag_item(task.item, config.timid))