From 735bc1e8e0354459a094a14df6e01572151cfb30 Mon Sep 17 00:00:00 2001 From: Tilman Date: Mon, 30 Oct 2023 13:09:55 +0100 Subject: [PATCH] halloween.py --- halloween.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 halloween.py diff --git a/halloween.py b/halloween.py new file mode 100644 index 0000000..3fe7f14 --- /dev/null +++ b/halloween.py @@ -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("Halloween", "utf-8")) + self.wfile.write(bytes("

Request: %s

" % self.path, "utf-8")) + self.wfile.write(bytes("

", "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("

", "utf-8")) + self.wfile.write(bytes("", "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.")