Files
poster_display/poster_display.sh

70 lines
2.0 KiB
Bash

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