From d411e1391bf4d80eae3ab0f75c61124b56cde4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Z=C3=A1le=C5=A1=C3=A1k?= Date: Thu, 12 Jun 2025 22:03:29 +0000 Subject: [PATCH] Add poster_display.sh --- poster_display.sh | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 poster_display.sh diff --git a/poster_display.sh b/poster_display.sh new file mode 100644 index 0000000..46c1eed --- /dev/null +++ b/poster_display.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +DIR_NAME="/tmp/poster_display/" +REMOTE_URL="http://217.115.244.100/tvpresentation/" +CHECKSUM_FILE="/tmp/poster_display_checksum" +LOG_FILE="/tmp/poster_display_log" + +# pomocná funkce na výpočet hash obsahu vzdáleného seznamu souborů +calculate_remote_checksum() { + wget -q -O - "$REMOTE_URL" | md5sum | cut -d' ' -f1 +} + +# stáhne soubory a vytvoří adresář +download_files() { + rm -rf "$DIR_NAME" + mkdir -p "$DIR_NAME" + wget -q -r -np -nH --cut-dirs=2 --reject "index.html*" -P "$DIR_NAME" "$REMOTE_URL" +} + +# spustí mpv s aktuálními soubory +play_files() { + pkill mpv 2>/dev/null + mpv --playlist=<(find "$DIR_NAME" -type f | sort) \ + --no-audio --fs --loop-playlist=inf --shuffle \ + --image-display-duration=7 --no-osc & +} + +# zaloguje událost +log_msg() { + echo "$(date '+%F %T') - $1" >> "$LOG_FILE" + echo "$1" +} + +# inicializace +log_msg "Inicializace prezentace" +if wget --spider -q "$REMOTE_URL"; then + log_msg "Server dostupný, stahuji obsah poprvé" + download_files + play_files + current_checksum=$(calculate_remote_checksum) + echo "$current_checksum" > "$CHECKSUM_FILE" +else + log_msg "Server NEDOSTUPNÝ při startu, pokračuji s předchozím obsahem (pokud existuje)" + if [ ! -d "$DIR_NAME" ] || [ -z "$(find "$DIR_NAME" -type f)" ]; then + log_msg "Žádné lokální soubory k přehrání. Ukončuji." + exit 1 + fi + play_files +fi + +# smyčka kontroly každou minutu +while true; do + sleep 60 + + if wget --spider -q "$REMOTE_URL"; then + new_checksum=$(calculate_remote_checksum) + + if [ "$new_checksum" != "$(cat "$CHECKSUM_FILE")" ]; then + log_msg "Změna detekována, stahuji nové soubory" + download_files + play_files + echo "$new_checksum" > "$CHECKSUM_FILE" + else + log_msg "Bez změny, obsah zůstává stejný" + fi + else + log_msg "Server NEDOSTUPNÝ, přehrávání pokračuje s původními soubory" + fi +done