From 055dca4b6d4cc4db20ff21f7a7a920a5a909c5e9 Mon Sep 17 00:00:00 2001 From: krateng Date: Sun, 13 Feb 2022 08:21:26 +0100 Subject: [PATCH] Reimplemented search function --- maloja/database/__init__.py | 63 ++----------------------------------- 1 file changed, 2 insertions(+), 61 deletions(-) diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 0317b2c..91a480c 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -468,70 +468,11 @@ def start_db(): - - # Search for strings def db_search(query,type=None): results = [] if type=="ARTIST": - results = [a for a in ARTISTS if simplestr(query) in simplestr(a)] + results = [a for a in sqldb.get_artists() if sqldb.normalize_name(query) in sqldb.normalize_name(a)] if type=="TRACK": - results = [ - get_track_dict(t) for t in TRACKS if simplestr(query) in simplestr(t[1]) - ] + results = [t for t in sqldb.get_tracks() if sqldb.normalize_name(query) in sqldb.normalize_name(t['title'])] return results - - -#### -## Useful functions -#### - - - - -# makes a string usable for searching (special characters are blanks, accents and stuff replaced with their real part) -def simplestr(input,ignorecapitalization=True): - norm = unicodedata.normalize("NFKD",input) - norm = [c for c in norm if not unicodedata.combining(c)] - norm = [c if len(c.encode())==1 else " " for c in norm] - clear = ''.join(c for c in norm) - if ignorecapitalization: clear = clear.lower() - return clear - - - -#def getArtistId(nameorid): -# if isinstance(nameorid,int): -# return nameorid -# else: -# try: -# return ARTISTS.index(nameorid) -# except: -# return -1 - - -def insert(list_,item,key=lambda x:x): - i = 0 - while len(list_) > i: - if key(list_[i]) > key(item): - list_.insert(i,item) - return i - i += 1 - - list_.append(item) - return i - - -def scrobbles_in_range(start,end,reverse=False): - if reverse: - for stamp in reversed(STAMPS): - #print("Checking " + str(stamp)) - if stamp < start: return - if stamp > end: continue - yield SCROBBLESDICT[stamp] - else: - for stamp in STAMPS: - #print("Checking " + str(stamp)) - if stamp < start: continue - if stamp > end: return - yield SCROBBLESDICT[stamp]