86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
|
|
# importing vlc module
|
|
from os import listdir
|
|
from os.path import isfile, join
|
|
from random import randint
|
|
from time import sleep
|
|
import paho.mqtt.client as mqtt
|
|
from video import Video
|
|
import multiprocessing
|
|
import sys
|
|
from random import randint
|
|
from PIL import Image, ImageDraw
|
|
import cv2
|
|
|
|
class App:
|
|
def __init__(self, client, x, y):
|
|
self.x = x
|
|
self.y = y
|
|
self.client = client
|
|
self.video = Video(x, y)
|
|
self.videos = [join("slave/videos", f) for f in listdir("slave/videos") if isfile(join("slave/videos", f))]
|
|
print(self.videos)
|
|
print(self.videos[randint(0, len(self.videos)-1)])
|
|
|
|
def on_connect(self, client, userdata, flags, rc):
|
|
print("Connected with result code "+str(rc))
|
|
self.client.subscribe("slave")
|
|
|
|
|
|
def on_message(self, client, userdata, msg):
|
|
print(msg.topic+" "+str(msg.payload))
|
|
if msg.payload == b'idle':
|
|
print("Idle")
|
|
self.x = multiprocessing.Process(target = self.idle)
|
|
self.x.start()
|
|
|
|
elif msg.payload == b'stop':
|
|
print("Stop")
|
|
try:
|
|
self.x.terminate()
|
|
except:
|
|
pass
|
|
|
|
def idle(self):
|
|
last = -1
|
|
secondlast = -1
|
|
while True:
|
|
try:
|
|
self.x.terminate()
|
|
except:
|
|
pass
|
|
i = randint(0, len(self.videos)-1)
|
|
if i == last or i == secondlast:
|
|
continue
|
|
|
|
secondlast = last
|
|
last = i
|
|
video = self.videos[i]
|
|
print(video)
|
|
self.video.start(video)
|
|
self.blank()
|
|
sleep(1)
|
|
|
|
def blank(self):
|
|
image = Image.new('RGB', (2000, 2000), color='black')
|
|
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
|
|
cv2.moveWindow("window", self.x, self.y)
|
|
cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
|
|
|
|
cv2.imshow("window", image)
|
|
|
|
|
|
def main():
|
|
|
|
client = mqtt.Client()
|
|
app = App(client, int(sys.argv[1]), int(sys.argv[2]))
|
|
client.on_connect = app.on_connect
|
|
client.on_message = app.on_message
|
|
|
|
client.connect("10.1.1.162", 1883, 60)
|
|
|
|
client.loop_forever()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |