Esempio 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 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
Esempio n. 2
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
Esempio 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
        task.set_item_match(*autotag.tag_item(task.item))
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
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
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
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))
Esempio n. 10
0
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))
Esempio n. 11
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_match(*autotag.tag_item(task.item, config.timid))
Esempio n. 12
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_match(*autotag.tag_item(task.item, config.timid))
Esempio n. 13
0
 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
Esempio n. 14
0
 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
Esempio n. 15
0
 def lookup_candidates(self):
     candidates, recommendation = autotag.tag_item(self.item)
     self.candidates = candidates
     self.rec = recommendation
Esempio n. 16
0
 def lookup_candidates(self):
     candidates, recommendation = autotag.tag_item(self.item)
     self.candidates = candidates
     self.rec = recommendation