Add loading animation
This commit is contained in:
+51
-13
@@ -17,8 +17,6 @@ by MoPa Ltd
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# .env-Datei laden, falls vorhanden
|
# .env-Datei laden, falls vorhanden
|
||||||
if [ -f .env ]; then
|
if [ -f .env ]; then
|
||||||
export $(grep -v '^#' .env | xargs)
|
export $(grep -v '^#' .env | xargs)
|
||||||
@@ -35,18 +33,47 @@ if [[ ! "$BASE_URL" =~ /$ ]]; then
|
|||||||
BASE_URL="$BASE_URL/"
|
BASE_URL="$BASE_URL/"
|
||||||
fi
|
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
|
# Funktion zum Generieren des JSON
|
||||||
update_json() {
|
update_json() {
|
||||||
|
# Passwort abfragen, falls nicht gesetzt
|
||||||
|
get_password
|
||||||
|
|
||||||
# HTML-Inhalt abrufen
|
# HTML-Inhalt abrufen
|
||||||
HTML_CONTENT=$(curl -s -u "$USERNAME:$PASSWORD" "$BASE_URL")
|
HTML_CONTENT=$(curl -s -u "$USERNAME:$PASSWORD" "$BASE_URL")
|
||||||
|
|
||||||
# Alle Ordnernamen extrahieren
|
# Alle Ordnernamen extrahieren
|
||||||
DIRS=($(echo "$HTML_CONTENT" | grep -o 'href="[^"]*/"'))
|
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-Daten initialisieren
|
||||||
JSON_OUTPUT="{\n \"folders\": ["
|
JSON_OUTPUT="{\n \"folders\": ["
|
||||||
|
|
||||||
# Verarbeiten der Ordner
|
# Fortschritt anzeigen (100% bei Ende)
|
||||||
for dir in "${DIRS[@]}"; do
|
for dir in "${DIRS[@]}"; do
|
||||||
# Entferne das href=" und "
|
# Entferne das href=" und "
|
||||||
dir=$(echo "$dir" | sed 's/href="\([^"]*\)"/\1/')
|
dir=$(echo "$dir" | sed 's/href="\([^"]*\)"/\1/')
|
||||||
@@ -61,18 +88,12 @@ update_json() {
|
|||||||
|
|
||||||
# Vollständige URL mit Pfad erstellen
|
# Vollständige URL mit Pfad erstellen
|
||||||
FULL_URL="$BASE_URL$dir"
|
FULL_URL="$BASE_URL$dir"
|
||||||
echo "Verarbeite Ordner: $FULL_URL"
|
|
||||||
|
|
||||||
# Dateien im Ordner finden
|
# Dateien im Ordner finden
|
||||||
FILES=($(curl -s -u "$USERNAME:$PASSWORD" "$FULL_URL" | grep -o 'href="[^"]*\.\(mp4\|mkv\|avi\|mov\|flv\)"' | sed 's/href="\([^"]*\)"/\1/'))
|
FILES=($(curl -s -u "$USERNAME:$PASSWORD" "$FULL_URL" | grep -o 'href="[^"]*\.\(mp4\|mkv\|avi\|mov\|flv\)"' | sed 's/href="\([^"]*\)"/\1/'))
|
||||||
|
|
||||||
# Falls Dateien gefunden wurden
|
# Falls Dateien gefunden wurden
|
||||||
if [ ${#FILES[@]} -gt 0 ]; then
|
if [ ${#FILES[@]} -gt 0 ]; then
|
||||||
echo "Gefundene Dateien im Ordner '$dir':"
|
|
||||||
for file in "${FILES[@]}"; do
|
|
||||||
echo "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Ordner-JSON hinzufügen
|
# Ordner-JSON hinzufügen
|
||||||
JSON_OUTPUT+="{\n \"name\": \"$readable_dir\",\n \"files\": ["
|
JSON_OUTPUT+="{\n \"name\": \"$readable_dir\",\n \"files\": ["
|
||||||
|
|
||||||
@@ -85,23 +106,34 @@ update_json() {
|
|||||||
# Letztes Komma entfernen und Ordner-JSON abschließen
|
# Letztes Komma entfernen und Ordner-JSON abschließen
|
||||||
JSON_OUTPUT=$(echo "$JSON_OUTPUT" | sed '$s/,$/\n ]/' )
|
JSON_OUTPUT=$(echo "$JSON_OUTPUT" | sed '$s/,$/\n ]/' )
|
||||||
JSON_OUTPUT+=" },"
|
JSON_OUTPUT+=" },"
|
||||||
else
|
|
||||||
echo "Keine Dateien im Ordner '$dir' gefunden."
|
|
||||||
fi
|
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
|
done
|
||||||
|
|
||||||
# Letztes Komma entfernen und JSON abschließen
|
# Letztes Komma entfernen und JSON abschließen
|
||||||
JSON_OUTPUT=$(echo "$JSON_OUTPUT" | sed '$s/,$/\n ]/' )
|
JSON_OUTPUT="${JSON_OUTPUT%,}]"
|
||||||
JSON_OUTPUT+="}"
|
JSON_OUTPUT+="}"
|
||||||
|
|
||||||
# JSON speichern
|
# JSON speichern
|
||||||
echo -e "$JSON_OUTPUT" > library.json
|
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
|
# Funktion zum Auflisten der Ordnernamen
|
||||||
list_folder_names() {
|
list_folder_names() {
|
||||||
|
|
||||||
if [ -f "library.json" ]; then
|
if [ -f "library.json" ]; then
|
||||||
folder_names=$(jq -r '.folders[].name' library.json)
|
folder_names=$(jq -r '.folders[].name' library.json)
|
||||||
if [ -n "$folder_names" ]; then
|
if [ -n "$folder_names" ]; then
|
||||||
@@ -117,6 +149,7 @@ list_folder_names() {
|
|||||||
|
|
||||||
# Funktion zur Ordnersuche
|
# Funktion zur Ordnersuche
|
||||||
search_folder() {
|
search_folder() {
|
||||||
|
|
||||||
if [ -z "$2" ]; then
|
if [ -z "$2" ]; then
|
||||||
echo "Bitte einen Suchbegriff angeben."
|
echo "Bitte einen Suchbegriff angeben."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -147,6 +180,7 @@ search_folder() {
|
|||||||
|
|
||||||
# Funktion zum Herunterladen einer Datei
|
# Funktion zum Herunterladen einer Datei
|
||||||
download_file() {
|
download_file() {
|
||||||
|
|
||||||
if [ -z "$2" ]; then
|
if [ -z "$2" ]; then
|
||||||
echo "Bitte einen Suchbegriff angeben."
|
echo "Bitte einen Suchbegriff angeben."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -176,6 +210,8 @@ download_file() {
|
|||||||
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
|
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
|
||||||
choice=${choice:-J}
|
choice=${choice:-J}
|
||||||
if [[ "$choice" =~ ^[Jj]$ ]]; then
|
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"
|
wget --user="$USERNAME" --password="$PASSWORD" --auth-no-challenge "$file_url" -O "$DOWNLOAD_LOCATION/$file_name"
|
||||||
echo "Download abgeschlossen: $file_name"
|
echo "Download abgeschlossen: $file_name"
|
||||||
else
|
else
|
||||||
@@ -196,6 +232,8 @@ download_file() {
|
|||||||
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
|
read -p "Soll '$file_name' in '$DOWNLOAD_LOCATION' heruntergeladen werden? (J/n, Standard: J) " choice
|
||||||
choice=${choice:-J}
|
choice=${choice:-J}
|
||||||
if [[ "$choice" =~ ^[Jj]$ ]]; then
|
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"
|
wget --user="$USERNAME" --password="$PASSWORD" --auth-no-challenge "$file_url" -O "$DOWNLOAD_LOCATION/$file_name"
|
||||||
echo "Download abgeschlossen: $file_name"
|
echo "Download abgeschlossen: $file_name"
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user