#!/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/vorbis/'
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)