def choose_item(task, config): """Ask the user for a choice about tagging a single item. Returns either an action constant or a track info dictionary. """ print_() print_(task.item.path) candidates, rec = task.item_match if config.quiet: # Quiet mode; make a decision. if task.rec == autotag.RECOMMEND_STRONG: dist, track_info = candidates[0] show_item_change(task.item.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.interactive_autotag, 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(False) candidates, rec = autotag.tag_item(task.item, search_artist, search_title) else: # Chose a candidate. assert not isinstance(choice, importer.action) return choice
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 task.set_item_match(*autotag.tag_item(task.item))
def search_name(self, task, name, artist): if task.is_album: _, _, prop = autotag.tag_album(task.items, artist, name) else: prop = autotag.tag_item(task.item, artist, name) if len(prop.candidates) > 0: task.candidates = prop.candidates task.rec = prop.recommendation return task
def search_id(self, task, search_id): if task.is_album: _, _, prop = autotag.tag_album(task.items, search_ids=search_id.split()) else: prop = autotag.tag_item(task.item, search_ids=search_id.split()) if len(prop.candidates) > 0: task.candidates = prop.candidates task.rec = prop.recommendation return task
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 choose_item(self, task): """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 # Take immediate action if appropriate. action = _summary_judment(task.rec) if action == importer.action.APPLY: match = candidates[0] show_item_change(task.item, match) return match elif action is not None: return action while True: # Ask for a choice. choice = choose_candidate(candidates, True, rec, 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, 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, search_id=search_id) else: # Chose a candidate. assert isinstance(choice, autotag.TrackMatch) return choice
def item_lookup(session): """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', session=session, task=task) task.set_item_candidates(*autotag.tag_item(task.item))
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_match(*autotag.tag_item(task.item, config.timid))
def search_id(self, task_id, search_id): task = self.tasks.get(task_id) if not task: print(task, "not in tasks") return if task.is_album: _, _, prop = autotag.tag_album( task.items, search_ids=search_id.split() ) else: prop = autotag.tag_item(task.item, search_ids=search_id.split()) if len(prop.candidates) > 0: task.candidates = prop.candidates task.rec = prop.recommendation return task
def search_name(self, task_id, name, artist): task = self.tasks.get(task_id) if not task: print(task, "not in tasks") return if task.is_album: _, _, prop = autotag.tag_album( task.items, artist, name ) else: prop = autotag.tag_item(task.item, artist, name) if len(prop.candidates) > 0: task.candidates = prop.candidates task.rec = prop.recommendation return task
def lookup_candidates(self): candidates, recommendation = autotag.tag_item(self.item) self.candidates = candidates self.rec = recommendation