Files
serman-rss-wrapper-mixcloud/CRON_README.md

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.