#!/usr/bin/python3 import sys,os,cgi,json from urllib.parse import quote,unquote def getfilelist(d): fmt='ogg' if 'fmt' not in d else d['fmt'] AUDIO_BASE='//filestorage.chrisoft.org/music/ogg/' ro={'status':200,'message':'OK'} if 'folder' not in d or d['folder']=='': plp=os.environ['DOCUMENT_ROOT']+'/libs/music/player.d/playlists/playlists' alblist=list() with open(plp,mode='r',encoding='utf-8') as f: for line in f: line=line.strip() if len(line)>0:alblist.append(quote(line)) rro={'type':'fileList','data':{'subFolderList':alblist}} ro['result']=rro print(json.dumps(ro)) else: alp=os.environ['DOCUMENT_ROOT']+'/libs/music/player.d/playlists/'+unquote(d['folder'][0]).strip('/')+'.playlist' alblist=list() with open(alp,mode='r',encoding='utf-8') as f: for line in f: line=line.strip() if len(line)>0: alblist.append({ 'fileName':quote(line+'.ogg'), 'url':quote(AUDIO_BASE+line+'.ogg'), 'displayName':line, 'fileSize':0, 'modifiedTime':0 }) rro={'type':'fileList','data':{'musicList':alblist[1:],'subFolderList':list()}} ro['result']=rro print(json.dumps(ro)) def getserverinfo(d): ro={'status': 200, 'message': 'OK'} ro['result']={ 'serverName': 'Pineapple Cloud Music', 'serverShortName': 'PCM', 'baseFolderNameHint': '', 'preferredFormatsHint': 'ogg', 'apiVersion': 1, 'mediaRootUrl': '//filestorage.chrisoft.org/music/ogg/' } print(json.dumps(ro)) if __name__ == '__main__': d=cgi.parse(fp=sys.stdin) print('Status: 200 OK',end='\r\n') print('Content-type: application/json',end='\r\n') print(end='\r\n') actionmap={'getserverinfo':getserverinfo, 'getfilelist':getfilelist} if d['do'][0] in actionmap: actionmap[d['do'][0]](d)