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()
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)
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()