# Lauscht auf Port 8080 und spielt bei einem Request zufällig Geistervideos via mplayer auf Bildschirm 2 ab. # Die letzten beiden gespielten Videos werden ausgeschlossen, um für genug Abwechslung zu sorgen. # Videos: https://www.youtube.com/watch?v=9d868poEwK4 import os import random from http.server import BaseHTTPRequestHandler, HTTPServer import time import subprocess videos = [ "halloween-01-friendly_ghost_1.mp4", "halloween-02-friendly_ghost_2.mp4", "halloween-03-friendly_ghost_3.mp4", "halloween-04-friendly_ghost_4.mp4", "halloween-06-ghosts_pumpkins.mp4", "halloween-07-ghosts_candles.mp4", "halloween-08-marching_band.mp4", "halloween-05-skeletons.mp4", "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")) 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.")