'Given an initial autotagging of items, go through an interactive
dance with the user to ask for a choice of metadata. Returns an
AlbumMatch object, ASIS, or SKIP.'

def choose_match(self, task):

    print_()
    print_((displayable_path(task.paths, u'\n') + u'    ({0}    items)'.format(len(task.items))))
    action = _summary_judgment(task.rec)
    if (action == importer.action.APPLY):
        match = task.candidates[0]
        show_change(task.cur_artist, task.cur_album, match)
        return match
    elif (action is not None):
        return action
    (candidates, rec) = (task.candidates, task.rec)
    while True:
        choices = self._get_choices(task)
        choice = choose_candidate(candidates, False, rec, task.cur_artist, task.cur_album, itemcount=len(task.items), choices=choices)
        if (choice in (importer.action.SKIP, importer.action.ASIS)):
            return choice
        elif (choice in choices):
            post_choice = choice.callback(self, task)
            if isinstance(post_choice, importer.action):
                return post_choice
            elif isinstance(post_choice, autotag.Proposal):
                candidates = post_choice.candidates
                rec = post_choice.recommendation
        else:
            assert isinstance(choice, autotag.AlbumMatch)
            return choice
