Yorick Rommers пре 10 година
родитељ
комит
e1de890f33
1 измењених фајлова са 23 додато и 32 уклоњено
  1. 23 32
      yjmpd-c#/yjdaemon/API.py

+ 23 - 32
yjmpd-c#/yjdaemon/API.py

@@ -2,6 +2,7 @@ import json
 
 
 from yjdaemon.Database import Database as db
 from yjdaemon.Database import Database as db
 import configparser
 import configparser
+import string
 """
 """
 Add a key to the validAPIcalls dictionary, with a corresponding function
 Add a key to the validAPIcalls dictionary, with a corresponding function
 Function should return jsonified data, so that it can then be passed on to the client.
 Function should return jsonified data, so that it can then be passed on to the client.
@@ -68,45 +69,35 @@ class calls:
 
 
     @staticmethod
     @staticmethod
     def search(args):
     def search(args):
-        """search?
-        q(gneeral search term)=iets&
-        artist=bleh
-        &genre=neeee"""
         data = args.split("&")
         data = args.split("&")
-        songnames = """
-        SELECT * FROM tracks WHERE LCASE(trackName) LIKE LCASE(\"%{}%\") GROUP BY trackName;
-        """
-        artists = """
-        SELECT artistName FROM tracks WHERE LCASE(artistName) LIKE LCASE(\"%{}%\") GROUP BY artistName;
-        """
-        genres = """
-        SELECT genre FROM tracks WHERE LCASE(genre) LIKE LCASE(\"%{}%\") GROUP BY genre;
-        """
-        albums = """
-        SELECT albumName FROM tracks WHERE LCASE(albumName) LIKE LCASE(\"%{}%\") GROUP BY albumName;
-        """
         genquery="""
         genquery="""
-        SELECT * FROM tracks WHERE LCASE(genre) LIKE LCASE(\"%{}%\") OR LCASE(albumName) LIKE LCASE(\"%{}%\") OR LCASE(trackName) LIKE LCASE(\"%{}%\") OR LCASE(artistName) LIKE LCASE(\"%{}%\");
+        SELECT $ident FROM tracks WHERE LCASE(trackName) LIKE LCASE(\"%$trackname%\") $orgenre LCASE(genre) LIKE LCASE(\"%$genre%\") $oralbum LCASE(albumName) LIKE LCASE(\"%$album%\") $orartist LCASE(artistName) LIKE LCASE(\"%$artistname%\") $end;
         """
         """
+        test = string.Template(genquery)
         genqueryres = ""
         genqueryres = ""
-        artistsres = ""
-        genresres = ""
-        songnamesres = ""
-        albumsres = ""
+        arguments = []
+        general = ""
         for entry in data:
         for entry in data:
             values = entry.split("=")
             values = entry.split("=")
+            values[1] = values[1].replace("%20"," ")
             if values[0] == "q":
             if values[0] == "q":
-                genqueryres = genquery.format( values[1], values[1], values[1], values[1])
-            elif values[0] == "artist":
-                artistsres = artists.format(values[1])
-            elif values[0] == "genre":
-                genresres = genres.format(values[1])
-            elif values[0] == "songname":
-                songnamesres = songnames.format(values[1])
-            elif values[0] == "album":
-                albumsres = albums.format(values[1])
-        return calls.jsonify({"result":"OK", "genres": db.executequerystatic(genresres), "songnames": db.executequerystatic(songnamesres), "artists": db.executequerystatic(artistsres), "albums": db.executequerystatic(albumsres), "query" : db.executequerystatic(genqueryres)})
-        return calls.jsonify({"result":"OK"})
+                general = values[1]
+                continue
+            if values[1]:
+                arguments.append(values)
+        print(arguments)
+        finalstring = "" + genquery
+        for arg in arguments:
+            if arg[0] == "artist":
+                finalstring = string.Template(finalstring).safe_substitute(artistname=arg[1], orartist="AND")
+            elif arg[0] == "genre":
+                finalstring = string.Template(finalstring).safe_substitute(genre=arg[1],orgenre="AND")
+            elif arg[0] == "album":
+                finalstring = string.Template(finalstring).safe_substitute(album=arg[1],oralbum="AND")
+        print(finalstring)
+        finalstring = string.Template(finalstring).safe_substitute(genre=general,artistname=general,album=general,trackname=general)
+        print(finalstring)
+        return calls.jsonify({"result":"OK", "genres": db.executequerystatic(string.Template(finalstring).safe_substitute(ident="genre", orartist="OR", orgenre="OR", oralbum="OR", end="GROUP BY genre")),"artists": db.executequerystatic(string.Template(finalstring).safe_substitute(ident="artistName", orartist="OR", orgenre="OR", oralbum="OR",end="GROUP BY artistName")), "albums": db.executequerystatic(string.Template(finalstring).safe_substitute(ident="albumName", orartist="OR", orgenre="OR", oralbum="OR",end="GROUP BY albumName")), "songs" : db.executequerystatic(string.Template(finalstring).safe_substitute(ident="*", orartist="OR", orgenre="OR", oralbum="OR",end=""))})
 
 
     @staticmethod
     @staticmethod
     def getsongs(args):
     def getsongs(args):