Exemple #1
0
def mbsync_singletons(lib, query, move, pretend, write):
    """Synchronize matching singleton items.
    """
    singletons_query = library.get_query(query, library.Item)
    singletons_query.subqueries.append(
        dbcore.query.BooleanQuery('singleton', True)
    )
    for s in lib.items(singletons_query):
        if not s.mb_trackid:
            log.info(u'Skipping singleton {0}: has no mb_trackid'
                     .format(s.title))
            continue

        old_data = dict(s)

        # Get the MusicBrainz recording info.
        track_info = hooks.track_for_mbid(s.mb_trackid)
        if not track_info:
            log.info(u'Recording ID not found: {0}'.format(s.mb_trackid))
            continue

        # Apply.
        with lib.transaction():
            autotag.apply_item_metadata(s, track_info)
            _print_and_apply_changes(lib, s, old_data, move, pretend, write)
Exemple #2
0
    def singletons(self, lib, query, move, pretend, write):
        """Retrieve and apply info from the autotagger for items matched by
        query.
        """
        for item in lib.items(query + [u'singleton:true']):
            item_formatted = format(item)
            if not item.mb_trackid:
                self._log.info(u'Skipping singleton with no mb_trackid: {0}',
                               item_formatted)
                continue

            # Do we have a valid MusicBrainz track ID?
            if not re.match(MBID_REGEX, item.mb_trackid):
                self._log.info(u'Skipping singleton with invalid mb_trackid:' +
                               ' {0}', item_formatted)
                continue

            # Get the MusicBrainz recording info.
            track_info = hooks.track_for_mbid(item.mb_trackid)
            if not track_info:
                self._log.info(u'Recording ID not found: {0} for track {0}',
                               item.mb_trackid,
                               item_formatted)
                continue

            # Apply.
            with lib.transaction():
                autotag.apply_item_metadata(item, track_info)
                apply_item_changes(lib, item, move, pretend, write)
Exemple #3
0
    def singletons(self, lib, query, move, pretend, write):
        """Retrieve and apply info from the autotagger for items matched by
        query.
        """
        for item in lib.items(query + ['singleton:true']):
            item_formatted = format(item)
            if not item.mb_trackid:
                self._log.info('Skipping singleton with no mb_trackid: {0}',
                               item_formatted)
                continue

            # Do we have a valid MusicBrainz track ID?
            if not re.match(MBID_REGEX, item.mb_trackid):
                self._log.info(
                    'Skipping singleton with invalid mb_trackid:' + ' {0}',
                    item_formatted)
                continue

            # Get the MusicBrainz recording info.
            track_info = hooks.track_for_mbid(item.mb_trackid)
            if not track_info:
                self._log.info('Recording ID not found: {0} for track {0}',
                               item.mb_trackid, item_formatted)
                continue

            # Apply.
            with lib.transaction():
                autotag.apply_item_metadata(item, track_info)
                apply_item_changes(lib, item, move, pretend, write)
Exemple #4
0
    def item_candidates(self, item, artist, title):
        if item.path not in _matches:
            return []

        recording_ids, _ = _matches[item.path]
        tracks = []
        for recording_id in prefix(recording_ids, MAX_RECORDINGS):
            track = hooks.track_for_mbid(recording_id)
            if track:
                tracks.append(track)
        self._log.debug(u'acoustid item candidates: {0}', len(tracks))
        return tracks
Exemple #5
0
    def item_candidates(self, item, artist, title):
        if item.path not in _matches:
            return []

        recording_ids, _ = _matches[item.path]
        tracks = []
        for recording_id in prefix(recording_ids, MAX_RECORDINGS):
            track = hooks.track_for_mbid(recording_id)
            if track:
                tracks.append(track)
        self._log.debug(u'acoustid item candidates: {0}', len(tracks))
        return tracks
Exemple #6
0
    def item_candidates(self, item, artist, title):
        if item.path not in _matches:
            return []

        recording_ids, _ = _matches[item.path]
        tracks = []
        for recording_id in recording_ids:
            track = hooks.track_for_mbid(recording_id)
            if track:
                tracks.append(track)
        log.debug('acoustid item candidates: {0}'.format(len(tracks)))
        return tracks
Exemple #7
0
def mbsync_singletons(lib, query, move, pretend, write):
    """Retrieve and apply info from the autotagger for items matched by
    query.
    """
    for item in lib.items(query + ['singleton:true']):
        if not item.mb_trackid:
            log.info(u'Skipping singleton {0}: has no mb_trackid', item.title)
            continue

        # Get the MusicBrainz recording info.
        track_info = hooks.track_for_mbid(item.mb_trackid)
        if not track_info:
            log.info(u'Recording ID not found: {0}', item.mb_trackid)
            continue

        # Apply.
        with lib.transaction():
            autotag.apply_item_metadata(item, track_info)
            apply_item_changes(lib, item, move, pretend, write)
Exemple #8
0
def mbsync_singletons(lib, query, move, pretend, write):
    """Retrieve and apply info from the autotagger for items matched by
    query.
    """
    for item in lib.items(query + ['singleton:true']):
        if not item.mb_trackid:
            log.info(u'Skipping singleton {0}: has no mb_trackid', item.title)
            continue

        # Get the MusicBrainz recording info.
        track_info = hooks.track_for_mbid(item.mb_trackid)
        if not track_info:
            log.info(u'Recording ID not found: {0}', item.mb_trackid)
            continue

        # Apply.
        with lib.transaction():
            autotag.apply_item_metadata(item, track_info)
            apply_item_changes(lib, item, move, pretend, write)
Exemple #9
0
def mbsync_singletons(lib, query, move, pretend, write):
    """Synchronize matching singleton items.
    """
    singletons_query = library.get_query(query, library.Item)
    singletons_query.subqueries.append(library.SingletonQuery(True))
    for s in lib.items(singletons_query):
        if not s.mb_trackid:
            log.info(u'Skipping singleton {0}: has no mb_trackid'.format(
                s.title))
            continue

        old_data = dict(s)

        # Get the MusicBrainz recording info.
        track_info = hooks.track_for_mbid(s.mb_trackid)
        if not track_info:
            log.info(u'Recording ID not found: {0}'.format(s.mb_trackid))
            continue

        # Apply.
        with lib.transaction():
            autotag.apply_item_metadata(s, track_info)
            _print_and_apply_changes(lib, s, old_data, move, pretend, write)
Exemple #10
0
    def singletons(self, lib, query, move, pretend, write, fmt):
        """Retrieve and apply info from the autotagger for items matched by
        query.
        """
        template = Template(ui._pick_format(False, fmt))

        for item in lib.items(query + ['singleton:true']):
            item_formatted = item.evaluate_template(template)
            if not item.mb_trackid:
                self._log.info(u'Skipping singleton with no mb_trackid: {0}',
                               item_formatted)
                continue

            # Get the MusicBrainz recording info.
            track_info = hooks.track_for_mbid(item.mb_trackid)
            if not track_info:
                self._log.info(u'Recording ID not found: {0} for track {0}',
                               item.mb_trackid, item_formatted)
                continue

            # Apply.
            with lib.transaction():
                autotag.apply_item_metadata(item, track_info)
                apply_item_changes(lib, item, move, pretend, write)