#!/usr/bin/python

# location of this script: /home/osmc/.kodi/userdata/
# install RPi.GPIO: https://discourse.osmc.tv/t/gpio-control-need-some-help/3246/7
	# $ sudo su
	# apt-get update
	# apt-get install python-pip python-dev gcc
	# pip install rpi.gpio
# create a text file: /home/osmc/.kodi/temp/knop.txt, chmod 777


import xbmc
import os
from os import system
import subprocess
import time
from threading import Timer
from os.path import normpath, basename

contentdir = "/media/"

selected = 0
knop = 999

testcard = "/home/osmc/.kodi/userdata/testcard/testcard.png"
# blackcard = "/home/osmc/.kodi/userdata/black.png"
playlist = "/home/osmc/.kodi/userdata/playlists/video/tv.m3u"

def findVideofile():
	for root, dirs, files in os.walk('/media'):
		for name in files:
			if not name.startswith('.') and name != 'README':
				return os.path.join(root, name)


def createPlaylist():

	videofile = findVideofile()

	global playlist
	F = open(playlist,"w")

	F.write("#EXTM3U\n")
	F.write("#EXTINF:0,static.mp4\n")
	F.write("/home/osmc/static.mp4\n")
	F.write("#EXTINF:0,"+videofile+"\n")
	F.write(videofile+"\n")
	F.write("#EXTINF:0,testcard.mp4\n")
	F.write("/home/osmc/testcard.mp4\n")
	F.write("#EXTINF:0,black.mp4\n")
	F.write("/home/osmc/black.mp4\n")

	F.close() 


def testCard():

	global testcard

	xbmc.executebuiltin("xbmc.ShowPicture(" + testcard + ")")
	xbmc.executebuiltin("xbmc.Action(Fullscreen)")


def blackCard():

	# turn off monitor
	subprocess.call( "/opt/vc/bin/tvservice -o", shell=True )

	# first stop whatever is playing now
	xbmc.executebuiltin('xbmc.Action(Stop)')

	# global blackcard
	# xbmc.executebuiltin("xbmc.ShowPicture(" + blackcard + ")")
	# xbmc.executebuiltin("xbmc.Action(Fullscreen)")


def startKanaal():

	global playlist
	
	# first stop whatever is playing now
	xbmc.executebuiltin('xbmc.Action(Stop)')

	# turn on monitor again
	subprocess.call( "/opt/vc/bin/tvservice --explicit='DMT 35 HDMI'; fbset -depth 8; fbset -g 1280 1024 1280 1024 16;", shell=True )

	try:

		xbmc.executebuiltin( "xbmc.PlayMedia("+playlist+")" )
		xbmc.executebuiltin( "xbmc.PlayerControl(RepeatOff)" )

		return

	except IndexError:

		# Niet gelukt kanaal te openen
		testCard() # show testcard when something went wrong




# testCard() # start by showing a test card
# time.sleep(7)

blackCard() # then go to black screen

createPlaylist() # create a new playlist to make sure it always has the video file on the usb stick


while True:
	f = open('/home/osmc/.kodi/temp/knop.txt', 'r')
	knop = int(f.readline())
	if knop != selected:

		if knop == 99:
			blackCard() # go to black screen
		else:
			startKanaal()	# start video

			# pause video playback after 15 minutes
			t = Timer(900.0, blackCard)
			t.start()

		selected = knop
	
	f.close()
	time.sleep(0.2)



