Add loading animation

This commit is contained in:
phil
2025-04-03 13:23:58 +02:00
parent 176bb40315
commit 9537e16d9c

View File

@@ -17,8 +17,6 @@ by MoPa Ltd
EOF
#!/bin/bash
# .env-Datei laden, falls vorhanden
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
@@ -35,44 +33,67 @@ if [[ ! "$BASE_URL" =~ /$ ]]; then
BASE_URL="$BASE_URL/"
fi
# Funktion zum Abrufen des Passworts, falls es nicht gesetzt ist
get_password() {
if [ -z "$PASSWORD" ]; then
read -sp "Bitte Passwort eingeben: " PASSWORD
echo
fi
}
# Funktion zum Abrufen des Passworts, falls es nicht gesetzt ist
get_password() {
if [ -z "$PASSWORD" ]; then
read -sp "Bitte Passwort eingeben: " PASSWORD
echo
fi
}
# Funktion zum Generieren des JSON
update_json() {
# Passwort abfragen, falls nicht gesetzt
get_password
# HTML-Inhalt abrufen
HTML_CONTENT=$(curl -s -u "$USERNAME:$PASSWORD" "$BASE_URL")
# Alle Ordnernamen extrahieren
DIRS=($(echo "$HTML_CONTENT" | grep -o 'href="[^"]*/"'))
# Gesamtanzahl der Ordner
total_dirs=${#DIRS[@]}
# Zähler für Fortschritt
count=0
spin_index=0 # Spinner-Index für die Animation
# Spinner für Animation
spinner=("•" "◦" "○" "◔" "◑" "◕")
# JSON-Daten initialisieren
JSON_OUTPUT="{\n \"folders\": ["
# Verarbeiten der Ordner
# Fortschritt anzeigen (100% bei Ende)
for dir in "${DIRS[@]}"; do
# Entferne das href=" und "
dir=$(echo "$dir" | sed 's/href="\([^"]*\)"/\1/')
# Entschlüsselte Version des Ordnernamens (schöner Name)
readable_dir=$(echo "$dir" | sed 's/%20/ /g; s/%28/(/g; s/%29/)/g')
# Überprüfen, ob der Pfad mit einem / endet und ggf. hinzufügen
if [[ ! "$dir" =~ /$ ]]; then
dir="$dir/"
fi
# Vollständige URL mit Pfad erstellen
FULL_URL="$BASE_URL$dir"
echo "Verarbeite Ordner: $FULL_URL"
# Dateien im Ordner finden
FILES=($(curl -s -u "$USERNAME:$PASSWORD" "$FULL_URL" | grep -o 'href="[^"]*\.\(mp4\|mkv\|avi\|mov\|flv\)"' | sed 's/href="\([^"]*\)"/\1/'))
# Falls Dateien gefunden wurden
if [ ${#FILES[@]} -gt 0 ]; then
echo "Gefundene Dateien im Ordner '$dir':"
for file in "${FILES[@]}"; do
echo "$file"
done
# Ordner-JSON hinzufügen
JSON_OUTPUT+="{\n \"name\": \"$readable_dir\",\n \"files\": ["
@@ -85,23 +106,34 @@ update_json() {
# Letztes Komma entfernen und Ordner-JSON abschließen
JSON_OUTPUT=$(echo "$JSON_OUTPUT" | sed '$s/,$/\n ]/' )
JSON_OUTPUT+=" },"
else
echo "Keine Dateien im Ordner '$dir' gefunden."
fi
# Fortschritt aktualisieren
count=$((count + 1))
progress=$((count * 100 / total_dirs))
# Zeile überschreiben für Fortschritt, sicherstellen, dass % nicht als Formatzeichen interpretiert wird
printf "\rUpdating Library: [%3d%%] ${spinner[$spin_index]} " "$progress"
spin_index=$(( (spin_index + 1) % ${#spinner[@]} ))
# Optional: Kurze Pause für die Spinner-Animation
sleep 0.1
done
# Letztes Komma entfernen und JSON abschließen
JSON_OUTPUT=$(echo "$JSON_OUTPUT" | sed '$s/,$/\n ]/' )
JSON_OUTPUT="${JSON_OUTPUT%,}]"
JSON_OUTPUT+="}"
# JSON speichern
echo -e "$JSON_OUTPUT" > library.json
echo "Daten gespeichert in library.json"
# Abschlussmeldung
echo -e "\nDaten wurden erfolgreich verarbeitet und als JSON gespeichert!"
}
# Funktion zum Auflisten der Ordnernamen
list_folder_names() {
if [ -f "library.json" ]; then
folder_names=$(jq -r '.folders[].name' library.json)
if [ -n "$folder_names" ]; then
@@ -117,6 +149,7 @@ list_folder_names() {
# Funktion zur Ordnersuche
search_folder() {
if [ -z "$2" ]; then
echo "Bitte einen Suchbegriff angeben."
exit 1
@@ -147,6 +180,7 @@ search_folder() {
# Funktion zum Herunterladen einer Datei
download_file() {
if [ -z "$2" ]; then
echo "Bitte einen Suchbegriff angeben."
exit 1
@@ -176,6 +210,8 @@ download_file() {
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
choice=${choice:-J}
if [[ "$choice" =~ ^[Jj]$ ]]; then
# Passwort abfragen, falls nicht gesetzt
get_password
wget --user="$USERNAME" --password="$PASSWORD" --auth-no-challenge "$file_url" -O "$DOWNLOAD_LOCATION/$file_name"
echo "Download abgeschlossen: $file_name"
else
@@ -196,6 +232,8 @@ download_file() {
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
choice=${choice:-J}
if [[ "$choice" =~ ^[Jj]$ ]]; then
# Passwort abfragen, falls nicht gesetzt
get_password
wget --user="$USERNAME" --password="$PASSWORD" --auth-no-challenge "$file_url" -O "$DOWNLOAD_LOCATION/$file_name"
echo "Download abgeschlossen: $file_name"
else