Files

4.3 KiB

SERMAN RSS Feed Generator - Lokale Version

Ein Python-Tool zum Erstellen von RSS-Feeds aus lokalen MP3-Dateien für Podcast-Apps. Optimiert für Cron-Jobs und automatische Aktualisierungen.

🚀 Schnellstart

Für Cron-Jobs (empfohlen)

# Automatisches Setup
./cron_setup.sh

# Oder manuell
uv run python main.py --quiet

Für manuelle Nutzung

# Einfache Generierung
uv run python main.py

# Mit eigenen Parametern
uv run python main.py --audio-dir /pfad/zu/mp3s --title "Mein Podcast"

Features

  • 🎵 Scannt automatisch nach MP3-Dateien
  • 📱 Erstellt Podcast-kompatible RSS-Feeds (Apple Podcasts, Spotify, etc.)
  • 🏷️ Liest ID3-Tags und Cover-Art aus MP3-Dateien
  • Optimiert für Cron-Jobs (quiet-Mode, keine Server-Abhängigkeiten)
  • 🔄 Automatische Cover-Extraktion und -Optimierung
  • 📊 Vollständige iTunes-Podcast-Kompatibilität

Installation

# Dependencies installieren
uv sync

# MP3-Dateien in das _audio/ Verzeichnis legen
mkdir -p _audio
# Kopiere deine MP3-Dateien nach _audio/

🛠️ Parameter

uv run python main.py [OPTIONEN]

Optionen:
  -a, --audio-dir PATH     MP3-Verzeichnis (Standard: _audio)
  -o, --output DATEI       RSS-Datei (Standard: serman_podcast.xml)
  -u, --base-url URL       Basis-URL (Standard: https://www.serman.club)
  -t, --title TITEL        Podcast-Titel
  --author AUTOR           Podcast-Autor (Standard: SERMAN)
  -q, --quiet              Stille Ausgabe (für Cron-Jobs)
  -h, --help               Hilfe anzeigen

Cron-Job Setup

Automatisches Setup

./cron_setup.sh

Das Setup erstellt:

  • Cron-Wrapper-Script (run_rss_generator.sh)
  • Log-Rotation (rotate_logs.sh)
  • Automatische Cron-Installation (optional)

Manuelle Cron-Konfiguration

# Crontab bearbeiten
crontab -e

# Beispiel: Stündliche Aktualisierung
0 * * * * /pfad/zum/script/run_rss_generator.sh >/dev/null 2>&1

Weitere Cron-Beispiele:

  • */15 * * * * - Alle 15 Minuten
  • 0 */6 * * * - Alle 6 Stunden
  • 0 6 * * * - Täglich um 6:00 Uhr

📁 Verzeichnisstruktur

rss-feeder/
├── main.py                    # Haupt-Script (Cron-optimiert)
├── local_podcast_generator.py # RSS-Generator-Klasse
├── cron_setup.sh             # Automatisches Cron-Setup
├── run_rss_generator.sh      # Cron-Wrapper (auto-generiert)
├── rss_generator.log         # Log-Datei (auto-generiert)
├── serman_podcast.xml        # RSS-Feed (auto-generiert)
├── _audio/                   # MP3-Dateien hier ablegen
│   ├── mix1.mp3
│   ├── mix2.mp3
│   └── cover_mix1.jpg        # Auto-extrahierte Cover
└── requirements.txt

🌐 Webserver-Integration

# RSS-Feed zu Webserver kopieren
cp serman_podcast.xml /var/www/html/

# Mit nginx/Apache bereitstellen
# URL: https://deinserver.de/serman_podcast.xml

📱 Podcast-App-Kompatibilität

Getestet mit:

  • Apple Podcasts
  • Spotify
  • Google Podcasts
  • Overcast
  • Pocket Casts
  • Alle RSS-2.0-Apps

🎵 Audio-Features

  • Format: MP3-Dateien (.mp3)
  • Metadaten: Automatische ID3-Tag-Erkennung
  • Cover-Art: Automatische Extraktion und Optimierung für Apple Podcasts
  • Sortierung: Neueste Dateien zuerst (nach Änderungsdatum)

📋 Logging und Monitoring

# Live-Log anzeigen
tail -f rss_generator.log

# Letzte Einträge
tail -n 50 rss_generator.log

# Cron-Job Status prüfen
crontab -l

🔧 Troubleshooting

Script läuft nicht

# Dependencies prüfen
uv sync

# Manual testen
uv run python main.py

# Pfade prüfen
which uv
which python3

Cron-Job läuft nicht

# Wrapper-Script testen
./run_rss_generator.sh

# Log prüfen  
tail -f rss_generator.log

# Crontab prüfen
crontab -l

📚 Dokumentation

🔄 Migration von Server-Version

Wenn du die alte Server-Version verwendet hast:

  1. Stoppe den alten Server
  2. Installiere Cron-Version: ./cron_setup.sh
  3. Teste: uv run python main.py --quiet
  4. RSS-URL bleibt gleich (nur Generation ändert sich)

💡 Empfehlung: Für Produktiveinsatz stündliche Cron-Jobs verwenden.