techoverload/slave/main.py

86 lines
2.3 KiB
Python
Raw Normal View History

2022-07-18 05:30:07 +00:00
# importing vlc module
2022-07-20 09:14:04 +00:00
from os import listdir
from os.path import isfile, join
from random import randint
2022-07-18 05:30:07 +00:00
from time import sleep
import paho.mqtt.client as mqtt
from video import Video
import multiprocessing
2022-07-18 06:47:01 +00:00
import sys
2022-07-20 09:14:04 +00:00
from random import randint
2022-07-20 11:46:55 +00:00
from PIL import Image, ImageDraw
import cv2
2022-07-18 05:30:07 +00:00
class App:
2022-07-18 06:47:01 +00:00
def __init__(self, client, x, y):
2022-07-20 11:46:55 +00:00
self.x = x
self.y = y
2022-07-18 05:30:07 +00:00
self.client = client
2022-07-18 06:47:01 +00:00
self.video = Video(x, y)
2022-07-20 09:14:04 +00:00
self.videos = [join("slave/videos", f) for f in listdir("slave/videos") if isfile(join("slave/videos", f))]
print(self.videos)
2022-07-20 11:46:55 +00:00
print(self.videos[randint(0, len(self.videos)-1)])
2022-07-18 05:30:07 +00:00
def on_connect(self, client, userdata, flags, rc):
print("Connected with result code "+str(rc))
2022-07-20 09:14:04 +00:00
self.client.subscribe("slave")
2022-07-18 05:30:07 +00:00
def on_message(self, client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
2022-07-20 09:14:04 +00:00
if msg.payload == b'idle':
print("Idle")
self.x = multiprocessing.Process(target = self.idle)
2022-07-18 05:30:07 +00:00
self.x.start()
elif msg.payload == b'stop':
print("Stop")
2022-07-20 11:46:55 +00:00
try:
self.x.terminate()
except:
pass
2022-07-20 09:14:04 +00:00
def idle(self):
2022-07-20 11:46:55 +00:00
last = -1
secondlast = -1
2022-07-20 09:14:04 +00:00
while True:
2022-07-20 11:46:55 +00:00
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)
2022-07-20 09:14:04 +00:00
self.video.start(video)
2022-07-20 11:46:55 +00:00
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)
2022-07-20 09:14:04 +00:00
2022-07-18 06:47:01 +00:00
def main():
2022-07-18 05:30:07 +00:00
2022-07-18 06:47:01 +00:00
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
2022-07-18 05:30:07 +00:00
2022-07-20 09:14:04 +00:00
client.connect("10.1.1.162", 1883, 60)
2022-07-18 06:47:01 +00:00
client.loop_forever()
if __name__ == "__main__":
main()