Created
January 5, 2013 10:55
-
-
Save orymate/4460968 to your computer and use it in GitHub Desktop.
Simple HTTP based remote control for Totem media player.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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