From e1de890f335b9b53792857dfea158e6fe58b4e0d Mon Sep 17 00:00:00 2001 From: Yorick Rommers Date: Mon, 2 Nov 2015 23:20:59 +0100 Subject: [PATCH] fixed search partially --- yjmpd-c#/yjdaemon/API.py | 55 +++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/yjmpd-c#/yjdaemon/API.py b/yjmpd-c#/yjdaemon/API.py index 1c6d5f1..5c8bec0 100644 --- a/yjmpd-c#/yjdaemon/API.py +++ b/yjmpd-c#/yjdaemon/API.py @@ -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):