def pyrip_update (self): ret = pyrip_update() if ret['done'] == 1: print "Importing files:" print ret session = Session () session['cmdint'].db.importstart() i = 1 for file in ret['filenames_c']: tag = session['cmdint'].db.importupload(file) tag['filename'] = file tag['metaartistname'] = '' tag['tracknum'] = i for key in tag: tmp = UTFstring.encode (tag[key]) tag[key] = tmp session['cmdint'].db.importsongs(tag) i = i + 1 session['cmdint'].db.importend() print "Done importing" return ret
def handleRequest(self, cmd, argstuple): session = Session() args = [] for i in argstuple: args.append(i) #print "args " + str(args) #print "len args " + str(len(args)) if (session.hasKey('cmdint')): cmdint = session['cmdint'] if (cmd == "artists"): tmp = None if (len(args)>0): tmp = cmdint.list.artists(args[0]) else: tmp = cmdint.list.artists() for i in tmp: if "artistname" in i: i['artistname'] = UTFstring.encode(i['artistname']) return tmp elif (cmd == "albums"): tmp = None #if (len(args)>0): try: tmp = cmdint.list.albums(args[0],args[1]) except Exception: try: tmp = cmdint.list.albums(args[0]) except Exception: #return xmlrpclib.Fault(2, "Error in given parameters") tmp = cmdint.list.albums() for i in tmp: if "albumname" in i: i['albumname'] = UTFstring.encode(i['albumname']) if "artistname" in i: i['artistname'] = UTFstring.encode(i['artistname']) return tmp #else: # return xmlrpclib.Fault(1, "No artistid given") elif (cmd == "albumsbygenre"): tmp = None #if (len(args)>0): print "%s" % args try: tmp = cmdint.list.albums(genreid=args[0],anchor=args[1]) except Exception: try: tmp = cmdint.list.albums(genreid=args[0]) except Exception: return xmlrpclib.Fault(2, "Error in given parameters") for i in tmp: if "albumname" in i: i['albumname'] = UTFstring.encode(i['albumname']) return tmp elif (cmd == "songs"): tmp = None if (len(args) > 1): type = args[0] someid = args[1] if (type == "artistid" or type == "albumid" or type == "playlistid"): if (type == "artistid"): try: tmp = cmdint.list.songs(artistid=someid,anchor=args[2]) except Exception: tmp = cmdint.list.songs(artistid=someid) elif (type == "albumid"): try: tmp = cmdint.list.songs(albumid=someid,anchor=args[2]) except Exception: tmp = cmdint.list.songs(albumid=someid) elif (type == "playlistid"): try: tmp = cmdint.list.songs(playlistid=someid,anchor=args[2]) except Exception: tmp = cmdint.list.songs(playlistid=someid) for i in tmp: for j in i.keys(): i[j] = UTFstring.encode(i[j]) return tmp else: return xmlrpclib.Fault(2, "%s is not a valid type" % type) else: return xmlrpclib.Fault(1, "No artistid or albumid given") elif (cmd == "users"): return cmdint.list.users() elif (cmd == "stats"): return cmdint.list.stats() elif (cmd == "playlists"): return cmdint.list.playlists() elif (cmd == "genres"): return cmdint.list.genres() elif (cmd == "songinfo"): tmp = None if len(args) > 0: songid = args[0] tmp = cmdint.list.songinfo(songid) else: tmp = cmdint.list.songinfo() for i in tmp.keys(): tmp[i] = UTFstring.encode(tmp[i]) return tmp elif (cmd == "queue"): tmp = None if len(args) >= 0 and len(args) < 3: if len(args) == 2: if isinstance(args[0], types.IntType) and isinstance(args[1], types.IntType): if args[0] == 1: args[0] = True tmp = cmdint.list.queue(args[0], args[1]) else: return xmlrpclib.Fault(1, "Proper types not given") elif len(args) == 1: if isinstance(args[0], types.IntType): if args[0] == 1: args[0] = True tmp = cmdint.list.queue(args[0]) else: return xmlrpclib.Fault(1, "Proper types not given") else: tmp = cmdint.list.queue() if isinstance(tmp, types.ListType): for i in tmp: for j in i.keys(): i[j] = UTFstring.encode(i[j]) return tmp else: return xmlrpclib.Fault(1, "Proper number of parameters not given") elif (cmd == "top"): tmp = None if len(args) > 0 and len(args) < 3: if len(args) == 2: if isinstance(args[0], types.StringType) and isinstance(args[1], types.IntType): tmp = cmdint.list.top(args[0], args[1]) else: return xmlrpclib.Fault(1, "Proper types not given") else: if isinstance(args[0], types.StringType): tmp = cmdint.list.top(args[0]) else: return xmlrpclib.Fault(1, "Proper types not given") for i in tmp: for j in i.keys(): i[j] = UTFstring.encode(i[j]) return tmp else: return xmlrpclib.Fault(1, "Proper number of parameters not given")
def checkBinary(self, datatocheck): return UTFstring.decode(datatocheck)
def handleRequest(self, cmd, argstuple): session = Session() log.debug("funcs", "handleRequest(%s, %s)", cmd, argstuple) args = [] for i in argstuple: args.append(i) try: if (session.hasKey('cmdint')): cmdint = session['cmdint'] if (cmd == "importstart"): cmdint.db.importstart() return 1 elif (cmd == "importend"): cmdint.db.importend() return 1 elif (cmd == "importcancel"): cmdint.db.importcancel() return 1 elif (cmd == "importnewsongs"): if len(args) > 0: #import pprint #pprint.pprint(args[0]) tmp = args[0] for row in args[0]: for key in row.keys(): row[key] = UTFstring.decode(row[key]) #pprint.pprint(tmp) return cmdint.db.importnewsongs(tmp) elif (cmd == "importsong"): if len(args) > 0: if type(args[0]) is DictType: tmp = args[0] for i in tmp.keys(): tmp[i] = UTFstring.encode(tmp[i]) #print "tmp:%s" % str(tmp) return cmdint.db.importsongs(tmp) else: #It's not a valid param pass else: #It's a bad command pass elif (cmd == "importdelete"): if len(args) > 0: if isinstance(args[0], ListType): tmp = args[0] #for i in tmp: # if type(tmp[i]) is xmlrpclib.Binary: # tmp[i] = UTFstring.decode(tmp[i]) return cmdint.db.importdelete(tmp) else: #It's not a valid param pass else: #It's a bad command pass elif (cmd == "importcache"): log.debug("import", "Import cache called") cache = cmdint.db.importcache() for i in cache: i['filename'] = UTFstring.encode(i['filename']) return cache elif cmd == "upload": log.debug("import", "Upload called") if len(args) > 0: thehash = cmdint.db.importupload(UTFstring.decode(args[0])) for i in thehash.keys(): thehash[i] = UTFstring.encode(thehash[i]) return thehash else: #TODO: Make an error fault pass elif cmd == "getmetadata": log.debug("import", "Got to getmetadata check") if len(args) > 0: thehash = cmdint.db.getmetadata(UTFstring.decode(args[0])) for i in thehash.keys(): if isinstance(i, ListType): for j in i.keys(): i[j] = UTFstring.encode(i[j]) else: thehash[i] = UTFstring.encode(thehash[i]) return thehash else: #TODO: Make an error fault pass elif cmd == "getCDDB": if len(args) > 0: tags = cmdint.db.getCDDB(args[0]) return tags else: pass elif cmd == "pyrip": if len(args) > 0: return cmdint.db.pyrip (args[0], args[1], args[2]) else: pass elif cmd == "pyrip_update": return cmdint.db.pyrip_update () except: log.exception("Exception while calling XML function") raise