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
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))
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
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))