Esempio n. 1
0
def fill_features(store):
    conn = uutils.get_feature_db()
    @uutils.memo
    def tag_fct(tag):
        return uutils.tag_features(tag, conn=conn, normalize=True)
    for track in store.find(Track, Ne(Track.tags, None)
            & Eq(Track.features, None)):
        print "Processing %s - %s ..." % (track.artist, track.title)
        if isinstance(track.tags, basestring):
            continue
        features = uutils.track_features(
                track.tags, conn=conn, tag_fct=tag_fct)
        if features is None:
            # The track probably didn't have any tags.
            print "-- Feature vector is null."
            continue
        # Serialize and save the feature vector.
        track.features = uutils.encode_features(features)
        store.commit()
Esempio n. 2
0
 def _track_tags(self, meta):
     track = self._store.find(Track, (Track.artist == meta['artist'])
             & (Track.title == meta['title'])).one()
     if track is None:
         self._logger.warn("track not in database: %r" % meta)
         return
     try:
         tags = self._lfm.top_tags(track.artist, track.title)
     except Exception as ex:
         if type(ex) is LookupError and ex.args[0] == 'Track not found':
             # Track not found => no tags.
             self._logger.info("track not found on Last.fm: %r" % meta)
             self._store_tags(track, [])
         else:
             self._logger.error("couldn't fetch tags for: %r (%r)"
                     % (meta, ex))
     else:
         features = uutils.track_features(tags)
         self._store_tags(track, tags, features)
         self._logger.info("fetched tags for track: %r" % meta)
Esempio n. 3
0
 def _track_tags(self, meta):
     track = self._store.find(Track, (Track.artist == meta['artist'])
                              & (Track.title == meta['title'])).one()
     if track is None:
         self._logger.warn("track not in database: %r" % meta)
         return
     try:
         tags = self._lfm.top_tags(track.artist, track.title)
     except Exception as ex:
         if type(ex) is LookupError and ex.args[0] == 'Track not found':
             # Track not found => no tags.
             self._logger.info("track not found on Last.fm: %r" % meta)
             self._store_tags(track, [])
         else:
             self._logger.error("couldn't fetch tags for: %r (%r)" %
                                (meta, ex))
     else:
         features = uutils.track_features(tags)
         self._store_tags(track, tags, features)
         self._logger.info("fetched tags for track: %r" % meta)
Esempio n. 4
0
def fill_features(store):
    conn = uutils.get_feature_db()

    @uutils.memo
    def tag_fct(tag):
        return uutils.tag_features(tag, conn=conn, normalize=True)

    for track in store.find(Track,
                            Ne(Track.tags, None)
                            & Eq(Track.features, None)):
        print "Processing %s - %s ..." % (track.artist, track.title)
        if isinstance(track.tags, basestring):
            continue
        features = uutils.track_features(track.tags,
                                         conn=conn,
                                         tag_fct=tag_fct)
        if features is None:
            # The track probably didn't have any tags.
            print "-- Feature vector is null."
            continue
        # Serialize and save the feature vector.
        track.features = uutils.encode_features(features)
        store.commit()