# 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 ```bash ./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) ```bash # 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 ```bash # 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 1. **Crontab öffnen:** ```bash crontab -e ``` 2. **Zeile hinzufügen** (z.B. stündlich): ``` 0 * * * * /Users/manuel/dev/serman/rss-feeder/run_rss_generator.sh >/dev/null 2>&1 ``` 3. **Speichern und beenden** (meist `Ctrl+X`, dann `Y`, dann `Enter`) ## 📋 Logging und Monitoring ### Log-Datei anzeigen ```bash # 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 ```bash 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 1. **Pfade prüfen:** ```bash which python3 # Oder which uv ``` 2. **Script manuell testen:** ```bash ./run_rss_generator.sh ``` 3. **Log-Datei prüfen:** ```bash 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 ```bash # 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: ```bash # 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.