Skip to content

Instantly share code, notes, and snippets.

@orymate
Created January 5, 2013 10:55
Show Gist options
  • Save orymate/4460968 to your computer and use it in GitHub Desktop.
Save orymate/4460968 to your computer and use it in GitHub Desktop.
Simple HTTP based remote control for Totem media player.
# coding=utf-8
from BaseHTTPServer import *
import subprocess
from cgi import *
class Taviranyito(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html; charset=UTF-8')
self.end_headers()
self.wfile.write('<!DOCTYPE html><html><head><meta name="viewport" content="width=320"><title>Távirányító</title></head><body><h1>♪</h1>')
self.wfile.write('<form method="POST" action="">')
self.wfile.write('<p><input type="submit" name="do" value="play/pause"></p>')
self.wfile.write('<p><input type="submit" name="do" value="next"></p>')
self.wfile.write('<p><input type="submit" name="do" value="volume up"></p>')
self.wfile.write('<p><input type="submit" name="do" value="volume down"></p>')
self.wfile.write('<p><input type="submit" name="do" value="halt"></p>')
self.wfile.write('</form>')
self.wfile.write('</body></html>')
def parse_POST(self):
ctype, pdict = parse_header(self.headers['content-type'])
if ctype == 'multipart/form-data':
postvars = parse_multipart(self.rfile, pdict)
elif ctype == 'application/x-www-form-urlencoded':
length = int(self.headers['content-length'])
postvars = parse_qs(
self.rfile.read(length),
keep_blank_values=1)
else:
postvars = {}
return postvars
def do_POST(self):
postvars = self.parse_POST()
do = postvars['do'][0]
print do
if do == 'play/pause':
subprocess.call(['totem', '--play-pause'])
elif do == 'next':
subprocess.call(['totem', '--next'])
elif do == 'volume up':
subprocess.call(['totem', '--volume-up'])
elif do == 'volume down':
subprocess.call(['totem', '--volume-down'])
elif do == 'halt':
subprocess.call(['/home/kata/taviranyito/halt'])
self.send_response(301)
self.send_header('Location', '/')
self.end_headers()
self.wfile.write("Ok.")
def main():
try:
server = HTTPServer(('', 8080), Taviranyito)
server.serve_forever()
finally:
server.socket.close()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment