webserver.py aktualisiert

This commit is contained in:
Kaisa Marysia 2024-07-07 15:08:14 +02:00
parent 27874e57f6
commit d8af8e398b

View file

@ -4,6 +4,8 @@ import socket
import sys
import getopt
import signal
import json
import datetime
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse
@ -16,30 +18,166 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
mpvurl = "url"
i = self.path.index ( "?" )
apirq = self.path[i:]
print(apirq)
if apirq == mpvpause:
cmd = "echo 'cycle pause' | socat - /tmp/mpvsocket"
mpvurl = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
if apirq.startswith("?mpv"):
arg=apirq.split("=",1)[1]
if arg == "pause":
outputcmd = "echo \'{ \"command\": [\"get_property\", \"pause\"] }\' | socat - /tmp/mpvsocket"
output = subprocess.check_output(outputcmd,shell=True)
outputjson = json.loads(output)
outputjson = str(outputjson["data"])
if outputjson == "False":
cmd = "echo '{\"command\":[\"set_property\",\"pause\",true]}' | socat - /tmp/mpvsocket"
mpvurl = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
elif outputjson == "True":
cmdurl = "echo '{ \"command\": [\"set_property\", \"pause\", false]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
elif arg == "volume":
outputcmd = "echo '{ \"command\": [\"get_property_string\", \"volume\"] }' | socat - /tmp/mpvsocket"
output = subprocess.check_output(outputcmd,shell=True)
outputjson = json.loads(output)
outputjson = str(outputjson["data"])
response = "Volume is: " + outputjson
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif arg == "volminus":
outputcmd = "echo '{ \"command\": [\"get_property_string\", \"volume\"] }' | socat - /tmp/mpvsocket"
output = subprocess.check_output(outputcmd,shell=True)
outputjson = json.loads(output)
outputjson = int(float(outputjson["data"]))
volminus = outputjson-10
arg = str(volminus)
cmdurl = "echo '{\"command\":[\"set_property_string\", \"volume\"," + arg +"]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True)
response = "Volume is: " + arg
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif arg == "volplus":
outputcmd = "echo '{ \"command\": [\"get_property_string\", \"volume\"] }' | socat - /tmp/mpvsocket"
output = subprocess.check_output(outputcmd,shell=True)
outputjson = json.loads(output)
outputjson = int(float(outputjson["data"]))
volplus = outputjson+10
arg = str(volplus)
cmdurl = "echo '{\"command\":[\"set_property_string\", \"volume\"," + arg +"]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True)
response = "Volume is: " + arg
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif arg.startswith("volset"):
arg=arg.split("=",1)[1]
outputcmd = "echo '{ \"command\": [\"get_property_string\", \"volume\"] }' | socat - /tmp/mpvsocket"
output = subprocess.check_output(outputcmd,shell=True)
outputjson = json.loads(output)
outputjson = int(float(outputjson["data"]))
cmdurl = "echo '{\"command\":[\"set_property_string\", \"volume\"," + arg +"]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True)
response = "Volume is: " + arg
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif arg == "playnext":
cmd = "echo 'playlist-next weak' | socat - /tmp/mpvsocket"
mpvurl = subprocess.Popen(cmd,shell=True)
response = "Playing Next Track"
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif arg == "playprev":
cmd = "echo 'playlist-prev weak' | socat - /tmp/mpvsocket"
mpvurl = subprocess.Popen(cmd,shell=True)
response = "Playing Previous Track"
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif apirq.startswith("?file"):
arg=apirq.split("=",1)[1]
cmdurl = "echo '{\"command\":[\"loadfile\", \"" + arg + "\"]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
response = "Now Playing: " + arg
self.send_response(200)
self.end_headers()
self.wfile.write(b'Paused MPV')
self.send_header("Content-Type", "text/html")
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif apirq.startswith("?url"):
music=apirq.split("=",1)[1]
cmdmusic = "echo '{\"command\":[\"loadfile\", \"" + music + "\"]}' | socat - /tmp/mpvsocket"
cmd = cmdmusic
elif apirq.startswith("?add"):
arg=apirq.split("=",1)[1]
cmdurl = "echo '{\"command\":[\"loadfile\", \"" + arg + "\", \"append-play\"]}' | socat - /tmp/mpvsocket"
cmd = cmdurl
mpvurl = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
print(music)
print(cmdmusic)
response = "Add File To Playlist: " + arg
self.send_response(200)
self.end_headers()
self.wfile.write(response.encode("utf-8"))
elif apirq.startswith("?status"):
cmdtitle = "echo '{\"command\":[\"get_property\", \"media-title\"]}' | socat - /tmp/mpvsocket"
outputtitle = subprocess.check_output(cmdtitle,shell=True)
outputjsontitle = json.loads(outputtitle)
outputjsontitle = str(outputjsontitle["data"])
cmdduration = "echo '{\"command\":[\"get_property\", \"duration\"]}' | socat - /tmp/mpvsocket"
outputduration = subprocess.check_output(cmdduration,shell=True)
outputjsonduration = json.loads(outputduration)
outputjsonduration = int(float(outputjsonduration["data"]))
outputjsonduration = str(datetime.timedelta(seconds=outputjsonduration))
cmdtimepos = "echo '{\"command\":[\"get_property\", \"time-pos\"]}' | socat - /tmp/mpvsocket"
outputtimepos = subprocess.check_output(cmdtimepos,shell=True)
outputjsontimepos = json.loads(outputtimepos)
outputjsontimepos = int(float(outputjsontimepos["data"]))
outputjsontimepos = str(datetime.timedelta(seconds=outputjsontimepos))
cmdvolume = "echo '{\"command\":[\"get_property\", \"volume\"]}' | socat - /tmp/mpvsocket"
outputvolume = subprocess.check_output(cmdvolume,shell=True)
outputjsonvolume = json.loads(outputvolume)
outputjsonvolume = str(outputjsonvolume["data"])
cmdplaylistpos = "echo '{\"command\":[\"get_property\", \"playlist-pos-1\"]}' | socat - /tmp/mpvsocket"
outputplaylistpos = subprocess.check_output(cmdplaylistpos,shell=True)
outputjsonplaylistpos = json.loads(outputplaylistpos)
outputjsonplaylistpos = str(outputjsonplaylistpos["data"])
cmdplaylistcount = "echo '{\"command\":[\"get_property\", \"playlist-count\"]}' | socat - /tmp/mpvsocket"
outputplaylistcount = subprocess.check_output(cmdplaylistcount,shell=True)
outputjsonplaylistcount = json.loads(outputplaylistcount)
outputjsonplaylistcount = str(outputjsonplaylistcount["data"])
cmdplaylistplaylist = "echo '{\"command\":[\"get_property\", \"playlist\"]}' | socat - /tmp/mpvsocket"
outputplaylistplaylist = subprocess.check_output(cmdplaylistplaylist,shell=True)
outputjsonplaylistplaylist = json.loads(outputplaylistplaylist)
irange=int(outputjsonplaylistcount)
outputplaylistlist=[""]
for i in range(0, irange):
outputfullplaylist=outputjsonplaylistplaylist["data"][int(i)]["filename"]
outputplaylistlist.insert(irange, outputfullplaylist)
response = "Now Playing: " + outputjsontitle + "\n" + "Duration: " + outputjsontimepos + "/" + outputjsonduration + "\n" + "Volume: " + outputjsonvolume + "\n" + "Playlist Position: " + outputjsonplaylistpos + "/" + outputjsonplaylistcount + "\n" + "Playlist: "
self.send_response(200)
self.end_headers()
self.wfile.write(b'Playing String', )
self.send_header("Content-Type", "text/html")
self.end_headers()
self.wfile.write(response.encode("utf-8"))
value=0
for i in outputplaylistlist:
response="[" + str(value) + "]" + i
self.wfile.write(response.encode("utf-8"))
self.wfile.write(b"\n")
value = value + 1
httpd = HTTPServer(('', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()