def _similar_tracks(self, artist_nameA, track_titleA, artist_nameB, track_titleB, match, source, locked=False): if not locked: self.acquire() #self._logger.debug(u"%s: [%s-%s]-[%s-%s] %2.2f" % (source, artist_nameA, # track_titleA, artist_nameB, track_titleB, match)) trackA = TrackFactory.by_key(TrackFactory.get_key(artist_nameA, track_titleA)) trackB = TrackFactory.by_key(TrackFactory.get_key(artist_nameB, track_titleB)) #if not trackA: self._logger.debug(u"similar_tracks[%s-%s]: not found" % # (artist_nameA, track_titleA)) #if not trackB: self._logger.debug(u"similar_tracks[%s-%s]: not found" % # (artist_nameB, track_titleB)) if trackA and trackB: relation = TrackRelationFactory.get(trackA, trackB) old_rating = relation.rating relation.rate(0.75 + 0.25 * match) self._logger.debug(u"%s [%s]-[%s] m(%2.2f) r(%2.2f|%2.2f)" % (source, trackA, trackB, match, relation.rating, old_rating)) if self._queue_lookup_results: if self._lastfm: self._lastfm.similar_tracks_low(self.similar_tracks, artist_nameB, track_titleB, self._thres_lastfm_lookup) if self._echonest: self._echonest.similar_tracks_low(self.similar_tracks, artist_nameB, track_titleB, self._thres_lastfm_lookup) if not locked: self.release()
def __setstate__(self, dict): trackA = TrackFactory.by_key(dict['trackA_key']) del dict['trackA_key'] trackB = TrackFactory.by_key(dict['trackB_key']) del dict['trackB_key'] ratingref = RatingFactory.by_key(dict['ratingref_key']) del dict['ratingref_key'] self.__dict__ = dict self.trackA = trackA self.trackB = trackB self.ratingref = ratingref
def __setstate__(self, dict): track = TrackFactory.by_key(dict['track_key']) del dict['track_key'] self.__dict__ = dict self.track = track FileFactory.register(self)