import os
import time
import RPi.GPIO as GPIO
from subprocess import Popen, call
import sys

os.system('sudo chvt 1')

# Pfade zu den Dateien
THUMBNAIL_IMAGE = "/home/tim/PiVideo/videos/thumb.jpg"
TRIGGER_VIDEO = "/home/tim/PiVideo/videos/trigger.mp4"
LOG_FILE = "/home/tim/PiVideo/log.txt"

# GPIO-Einstellungen
BUTTON_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# Umleitung der Ausgaben in eine Log-Datei
sys.stdout = open(LOG_FILE, "a")
sys.stderr = open(LOG_FILE, "a")

def log_message(message):
    """Schreibt eine Nachricht in die Log-Datei."""
    timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print(f"{timestamp} - {message}")
    sys.stdout.flush()

def show_thumbnail(image_path):
    """Zeigt das Thumbnail an."""
    log_message(f"Displaying thumbnail: {image_path}")
    call(['sudo', 'fbi', '-T', '1', '-d', '/dev/fb0', '-a','-noverbose', image_path])

def close_thumbnail():
    """Beendet fbi, um das Thumbnail zu schließen."""
    log_message("Closing thumbnail.")
    call(['sudo', 'killall', 'fbi'])

def play_video(video_path):
    """Spielt das Trigger-Video ab."""
    log_message(f"Playing video: {video_path}")
    p = Popen(['cvlc', '--play-and-exit', '--fullscreen', '--no-video-title-show', video_path])
    p.wait()



def main():
    log_message("Starting main loop.")
    try:
        while True:
            # Thumbnail anzeigen
            show_thumbnail(THUMBNAIL_IMAGE)

            # Warten, bis der Button gedrückt wird
            while GPIO.input(BUTTON_PIN) == GPIO.HIGH:
                time.sleep(0.1)

            
            # Video abspielen, wenn Button gedrückt wurde
            log_message("Button pressed, playing trigger video.")
            play_video(TRIGGER_VIDEO)

            # fbi schließen, bevor das Video abgespielt wird
            close_thumbnail()
            # Nach dem Video wieder Thumbnail anzeigen
            log_message("Trigger video finished, displaying thumbnail again.")

    except KeyboardInterrupt:
        log_message("Script interrupted by user.")
    finally:
        GPIO.cleanup()
        log_message("GPIO cleanup completed. Exiting script.")

if __name__ == "__main__":
    log_message("Script started.")
    main()
