Jun-13-2018, 03:17 PM
Hello everybody.
New to python, I'm making a little application, with a keyboard listener (pyxhook). When user press "Enter" key, a video is shown on screen, but if the user press again "Enter", it's waiting for video to stop and then launched again...
How can I make the listener to pause until the video has ended ?
Here's my code :
New to python, I'm making a little application, with a keyboard listener (pyxhook). When user press "Enter" key, a video is shown on screen, but if the user press again "Enter", it's waiting for video to stop and then launched again...
How can I make the listener to pause until the video has ended ?
Here's my code :
#!/usr/bin/env python
import pygame
import sys
import time
import subprocess
import os
import requests
import youtube_dl
import pyxhook
import _thread
from pygame.locals import *
# MAXIMUM picture display sizes
max_width = 1600
max_height = 960
width = 0
height = 0
#color
black = (0,0,0)
pygame.init()
def image(imagefile):
image = pygame.image.load(imagefile)
size = image.get_rect()
width = size[2]
height = size[3]
windowSurfaceObj = pygame.display.set_mode((width,height),pygame.FULLSCREEN)
windowSurfaceObj.blit(image,(0,0))
pygame.display.update()
def video(myvideo):
global black
global videoRunning
image("/home/pi/wait.png")
command = 'youtube-dl --no-warnings -f mp4 -g ' + myvideo
url = subprocess.check_output(command.split(), shell=False)
realurl = url.decode("utf-8", "strict")[:-1]
command = 'omxplayer -o local -b --no-osd --vol -2000 ' + realurl
windowSurfaceObj = pygame.display.set_mode((width,height),pygame.FULLSCREEN)
windowSurfaceObj.fill(black)
pygame.display.update()
video = subprocess.run(command.split(), shell=False)
videoRunning = False
def kbevent(event):
global videoRunning
if event.Ascii ==13:
if videoRunning:
print("nothing, video running")
else:
print("run video")
videoRunning = True
myvideo='https://www.youtube.com/watch?v=B7bqAsxee4I'
video(myvideo)
image("/home/pi/home.png")
elif event.Ascii ==27:
if videoRunning:
print("stop video")
videoRunning=False
os.system('killall omxplayer.bin')
image("/home/pi/home.png")
else:
print("quit program")
pygame.quit()
sys.exit()
else:
pass
def listener():
global running
hookman = pyxhook.HookManager()
hookman.KeyDown = kbevent
hookman.HookKeyboard()
hookman.start()
running = True
while running:
time.sleep(0.1)
hookman.cancel()
videoRunning=False
_thread.start_new_thread(listener, ())
image("/home/pi/home.png")
