#!/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