Add poster_display.sh
This commit is contained in:
69
poster_display.sh
Normal file
69
poster_display.sh
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user