194 lines
4.6 KiB
Markdown
194 lines
4.6 KiB
Markdown
# 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.
|