fixed search partially

This commit is contained in:
Yorick Rommers
2015-11-02 23:20:59 +01:00
parent dc7f8905ae
commit e1de890f33
+23 -32
View File
@@ -2,6 +2,7 @@ import json
from yjdaemon.Database import Database as db
import configparser
import string
"""
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.
@@ -68,45 +69,35 @@ class calls:
@staticmethod
def search(args):
"""search?
q(gneeral search term)=iets&
artist=bleh
&genre=neeee"""
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="""
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 = ""
artistsres = ""
genresres = ""
songnamesres = ""
albumsres = ""
arguments = []
general = ""
for entry in data:
values = entry.split("=")
values[1] = values[1].replace("%20"," ")
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
def getsongs(args):