70 lines
2.0 KiB
Bash
Executable File
70 lines
2.0 KiB
Bash
Executable File
#!/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
|