Spaces:
Sleeping
Sleeping
| set -e | |
| LIBRARY_FILE=/data/library.xml | |
| JSON_FILE=/home/default/library.json # Emplacement dans l'image | |
| echo "=== Initialisation de la bibliothèque ===" | |
| rm -f "$LIBRARY_FILE" | |
| # Ajouter les fichiers ZIM déjà présents dans /data (persistance) | |
| shopt -s nocaseglob nullglob | |
| zim_files=(/data/**/*.zim) | |
| shopt -u nocaseglob nullglob | |
| if [ ${#zim_files[@]} -gt 0 ]; then | |
| for f in "${zim_files[@]}"; do | |
| [ -f "$f" ] && kiwix-manage "$LIBRARY_FILE" add "$f" | |
| done | |
| fi | |
| [ -f "$LIBRARY_FILE" ] || echo '<library version="20110515"></library>' > "$LIBRARY_FILE" | |
| echo "=== Démarrage du serveur Kiwix ===" | |
| kiwix-serve --library "$LIBRARY_FILE" --port=7860 & | |
| SERVER_PID=$! | |
| # Téléchargement automatique en arrière‑plan | |
| ( | |
| if [ ! -f "$JSON_FILE" ]; then | |
| echo "[auto-dl] $JSON_FILE introuvable. Aucun téléchargement automatique." | |
| exit 0 | |
| fi | |
| python3 -c " | |
| import json, subprocess, os, signal, time | |
| with open('$JSON_FILE') as f: | |
| data = json.load(f) | |
| for name, url in data.items(): | |
| fname = url.split('/')[-1] | |
| dest = '/data/' + fname | |
| if os.path.exists(dest): | |
| print(f'[auto-dl] {fname} déjà présent, ignoré.') | |
| continue | |
| print(f'[auto-dl] Téléchargement de {fname}…') | |
| ret = subprocess.run(['wget', '-c', '-O', dest, url]).returncode | |
| if ret == 0: | |
| print(f'[auto-dl] {fname} terminé, ajout à la bibliothèque.') | |
| subprocess.run(['kiwix-manage', '$LIBRARY_FILE', 'add', dest]) | |
| # Recharger la bibliothèque du serveur sans redémarrage | |
| pid = int(subprocess.check_output(['pidof', 'kiwix-serve']).strip()) | |
| os.kill(pid, signal.SIGHUP) | |
| else: | |
| print(f'[auto-dl] Échec du téléchargement de {fname}') | |
| " | |
| ) & | |
| # Attendre la fin du serveur principal | |
| wait $SERVER_PID |