4.6 KiB
4.6 KiB
SERMAN RSS Feed Generator - Cron-Version
Automatischer RSS-Feed-Generator für Podcast-Apps, optimiert für Cron-Jobs.
🚀 Schnellstart für Cron-Jobs
1. Automatisches Setup
./cron_setup.sh
Das Setup-Script:
- ✅ Testet die Python-Umgebung
- ✅ Erstellt Wrapper-Scripts für Cron
- ✅ Bietet automatische Cron-Installation
- ✅ Konfiguriert Log-Rotation
2. Manueller Aufruf (ohne Cron)
# Standard-Ausführung
python main.py
# Mit benutzerdefinierten Parametern
python main.py --audio-dir "/pfad/zu/mp3s" --output "mein_podcast.xml"
# Stille Ausführung (für Cron)
python main.py --quiet
⏰ Cron-Konfiguration
Häufige Cron-Intervalle
# Alle 15 Minuten
*/15 * * * * /pfad/zum/script/run_rss_generator.sh >/dev/null 2>&1
# Jede Stunde (empfohlen)
0 * * * * /pfad/zum/script/run_rss_generator.sh >/dev/null 2>&1
# Alle 6 Stunden
0 */6 * * * /pfad/zum/script/run_rss_generator.sh >/dev/null 2>&1
# Täglich um 6:00 Uhr
0 6 * * * /pfad/zum/script/run_rss_generator.sh >/dev/null 2>&1
Cron-Installation
-
Crontab öffnen:
crontab -e
-
Zeile hinzufügen (z.B. stündlich):
0 * * * * /Users/manuel/dev/serman/rss-feeder/run_rss_generator.sh >/dev/null 2>&1
-
Speichern und beenden (meist
Ctrl+X
, dannY
, dannEnter
)
📋 Logging und Monitoring
Log-Datei anzeigen
# Aktuelle Logs anzeigen
tail -f rss_generator.log
# Letzte 50 Zeilen
tail -n 50 rss_generator.log
# Log-Datei komplett anzeigen
cat rss_generator.log
Log-Rotation
Das System rotiert die Logs automatisch (behält nur die letzten 100 Zeilen).
🛠️ Kommandozeilen-Parameter
python main.py [OPTIONEN]
Optionen:
-a, --audio-dir PATH Verzeichnis mit MP3-Dateien
(Standard: ../httpdocs/_audio)
-o, --output DATEI Ausgabedatei für RSS-Feed
(Standard: serman_podcast.xml)
-u, --base-url URL Basis-URL für Audio-Dateien
(Standard: https://www.serman.club)
-t, --title TITEL Titel des Podcasts
(Standard: "SERMAN - Organic House Podcast")
--author AUTOR Autor des Podcasts
(Standard: "SERMAN")
-q, --quiet Unterdrückt Ausgaben (für Cron-Jobs)
-h, --help Zeigt diese Hilfe an
📁 Verzeichnisstruktur
rss-feeder/
├── main.py # Haupt-Script (ohne Server)
├── local_podcast_generator.py # Generator-Klasse
├── cron_setup.sh # Automatisches Cron-Setup
├── run_rss_generator.sh # Cron-Wrapper (wird erstellt)
├── rotate_logs.sh # Log-Rotation (wird erstellt)
├── rss_generator.log # Log-Datei (wird erstellt)
├── serman_podcast.xml # Generierter RSS-Feed
└── _audio/ # MP3-Dateien
├── track1.mp3
├── track2.mp3
└── cover_track1.jpg # Automatisch extrahierte Cover
🔧 Troubleshooting
Cron-Job läuft nicht
-
Pfade prüfen:
which python3 # Oder which uv
-
Script manuell testen:
./run_rss_generator.sh
-
Log-Datei prüfen:
tail -f rss_generator.log
Keine MP3-Dateien gefunden
- Prüfe ob das Audio-Verzeichnis existiert
- Prüfe Dateiberechtigungen
- Verwende absolute Pfade in der Cron-Konfiguration
Dependencies fehlen
# Mit UV (empfohlen)
uv sync
# Oder mit pip
pip install -r requirements.txt
🎵 Audio-Format-Unterstützung
- Unterstützt: MP3-Dateien (.mp3)
- Cover-Art: Automatische Extraktion aus ID3-Tags
- Metadaten: Titel, Künstler, Album, Dauer aus ID3-Tags
🌐 Webserver-Integration
Der RSS-Feed kann direkt auf einen Webserver kopiert werden:
# Manuelle Kopie
cp serman_podcast.xml /var/www/html/
# Automatisch im Wrapper-Script (wenn httpdocs existiert)
# Der Feed wird automatisch nach ../httpdocs/ kopiert
📱 Podcast-App-Kompatibilität
Optimiert für:
- ✅ Apple Podcasts
- ✅ Spotify
- ✅ Google Podcasts
- ✅ Overcast
- ✅ Pocket Casts
- ✅ Alle RSS-2.0-kompatiblen Apps
🔄 Aktualisierungsverhalten
- Neue MP3-Dateien: Werden automatisch erkannt und hinzugefügt
- Metadaten-Änderungen: Werden bei der nächsten Ausführung übernommen
- Cover-Art: Wird einmalig extrahiert und wiederverwendet
- Sortierung: Neueste Dateien erscheinen zuerst (nach Änderungsdatum)
💡 Tipp: Für die beste Performance empfiehlt sich eine stündliche Aktualisierung via Cron-Job.