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