halloween.py
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
# Wird von der Türklingel ausgelöst und spield zufällig Geistervideos ab.
|
||||||
|
# Die letzten beiden gespielten Videos werden ausgeschlossen, um für genug Abwechslung zu sorgen.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import random
|
||||||
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
||||||
|
import time
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
videos = [
|
||||||
|
"/home/tilman/Videos/halloween-01-friendly_ghost_1.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-02-friendly_ghost_2.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-03-friendly_ghost_3.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-04-friendly_ghost_4.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-06-ghosts_pumpkins.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-07-ghosts_candles.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-08-marching_band.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-05-skeletons.mp4",
|
||||||
|
"/home/tilman/Videos/halloween-09-skulls.mp4"]
|
||||||
|
|
||||||
|
hostName = "192.168.178.31"
|
||||||
|
serverPort = 8080
|
||||||
|
|
||||||
|
|
||||||
|
class Player(object):
|
||||||
|
_instance = None
|
||||||
|
|
||||||
|
# we need a subprocess object for the first poll() so we just let the video run once
|
||||||
|
vid_process = subprocess.Popen(["mplayer","/home/tilman/Videos/halloween-04-friendly_ghost_4.mp4"], stdout=subprocess.PIPE)
|
||||||
|
|
||||||
|
def __new__(cls):
|
||||||
|
if cls._instance is None:
|
||||||
|
print('Creating the object')
|
||||||
|
cls._instance = super(Player, cls).__new__(cls)
|
||||||
|
# Put any initialization here.
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
|
||||||
|
class MyServer(BaseHTTPRequestHandler):
|
||||||
|
player = Player()
|
||||||
|
last_no = 0
|
||||||
|
last_no2 = 0
|
||||||
|
|
||||||
|
def do_GET(self):
|
||||||
|
self.send_response(200)
|
||||||
|
self.send_header("Content-type", "text/html")
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(bytes("<html><head><title>Halloween</title></head>", "utf-8"))
|
||||||
|
self.wfile.write(bytes("<p>Request: %s</p>" % self.path, "utf-8"))
|
||||||
|
self.wfile.write(bytes("<body><p>", "utf-8"))
|
||||||
|
|
||||||
|
if (self.player.vid_process.poll() is not None):
|
||||||
|
rnd_no = random.randint(0,6)
|
||||||
|
while (rnd_no == self.last_no or rnd_no == self.last_no2):
|
||||||
|
rnd_no = random.randint(0,6)
|
||||||
|
|
||||||
|
self.last_no2 = self.last_no
|
||||||
|
self.last_no = rnd_no
|
||||||
|
link = videos[rnd_no]
|
||||||
|
|
||||||
|
print('START ' + link + '\n')
|
||||||
|
self.wfile.write(bytes("START " + videos[rnd_no], "utf-8"))
|
||||||
|
|
||||||
|
# os.system(cmd)
|
||||||
|
# subprocess.check_call(cmd, shell=True)
|
||||||
|
# cmd = "vlc --qt-fullscreen-screennumber=1 -f %s"%(link)
|
||||||
|
cmd = "mplayer %s"%(link)
|
||||||
|
# cmd = "mplayer -xineramascreen 2 -fs %s"%(link)
|
||||||
|
self.player.vid_process = subprocess.Popen(["mplayer",link], stdout=subprocess.PIPE)
|
||||||
|
else:
|
||||||
|
print('RUNNING\n')
|
||||||
|
self.wfile.write(bytes("RUNNING " + videos[self.last_no], "utf-8"))
|
||||||
|
|
||||||
|
self.wfile.write(bytes("</p>", "utf-8"))
|
||||||
|
self.wfile.write(bytes("</body></html>", "utf-8"))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
webServer = HTTPServer((hostName, serverPort), MyServer)
|
||||||
|
print("Server started http://%s:%s" % (hostName, serverPort))
|
||||||
|
|
||||||
|
try:
|
||||||
|
webServer.serve_forever()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
|
||||||
|
webServer.server_close()
|
||||||
|
print("Server stopped.")
|
||||||
Reference in New Issue
Block a user