+ @blacklist(track=True)
+ def fuzzy_find_track(self, artist, title):
+ # Retrieve all tracks from artist
+ all_tracks = self.find('artist', artist)
+ # Get all titles (filter missing titles set to 'None')
+ all_artist_titles = frozenset([tr.title for tr in all_tracks
+ if tr.title is not None])
+ match = get_close_matches(title, all_artist_titles, 50, 0.78)
+ if not match:
+ return []
+ for title_ in match:
+ leven = levenshtein_ratio(title.lower(), title_.lower())
+ if leven == 1:
+ pass
+ elif leven >= 0.79: # PARAM
+ self.log.debug('title: "%s" should match "%s" (lr=%1.3f)' %
+ (title_, title, leven))
+ else:
+ self.log.debug('title: "%s" does not match "%s" (lr=%1.3f)' %
+ (title_, title, leven))
+ return []
+ return self.find('artist', artist, 'title', title_)
+