Example #1
0
	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
Example #2
0
	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")
Example #3
0
	def checkBinary(self, datatocheck):
		return UTFstring.decode(datatocheck)
Example #4
0
	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