Files
serman-rss-wrapper-mixcloud/start_server.py

97 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Einfacher Server-Starter für den Mixcloud RSS-Feed
"""
import os
import sys
import subprocess
import time
import threading
import http.server
import socketserver
from pathlib import Path
def update_feed():
"""Aktualisiert den RSS-Feed."""
print("🔄 Aktualisiere RSS-Feed...")
result = subprocess.run([
"uv", "run", "python", "mixcloud_rss_pro.py", "serman_dj",
"--output", "mixcloud_feed.xml"
], capture_output=True, text=True)
if result.returncode == 0:
print("✅ RSS-Feed erfolgreich aktualisiert!")
print(result.stdout)
return True
else:
print(f"❌ Fehler beim Aktualisieren: {result.stderr}")
return False
def start_server(port=8000):
"""Startet den HTTP-Server für den RSS-Feed."""
handler = http.server.SimpleHTTPRequestHandler
try:
with socketserver.TCPServer(("", port), handler) as httpd:
print(f"🌐 Server läuft auf http://localhost:{port}")
print(f"📡 RSS-Feed: http://localhost:{port}/mixcloud_feed.xml")
print("=" * 60)
print("📱 Podcast-App Anleitung:")
print(" 1. Kopiere diese URL: http://localhost:{port}/mixcloud_feed.xml")
print(" 2. Öffne deine Podcast-App")
print(" 3. Wähle 'Podcast hinzufügen' oder 'Feed hinzufügen'")
print(" 4. Füge die URL ein")
print("=" * 60)
print("⏹️ Drücke Ctrl+C zum Beenden")
print()
httpd.serve_forever()
except KeyboardInterrupt:
print("\n👋 Server beendet.")
except Exception as e:
print(f"❌ Fehler beim Starten des Servers: {e}")
def auto_update_feed(interval_minutes=60):
"""Aktualisiert den Feed automatisch in regelmäßigen Abständen."""
while True:
time.sleep(interval_minutes * 60) # Warte x Minuten
print(f"\n⏰ Automatische Aktualisierung nach {interval_minutes} Minuten...")
update_feed()
def main():
"""Hauptfunktion."""
print("🎵 SERMAN DJ - Mixcloud RSS Server")
print("=" * 40)
# Überprüfe ob wir im richtigen Verzeichnis sind
if not Path("mixcloud_rss_pro.py").exists():
print("❌ mixcloud_rss_pro.py nicht gefunden!")
print(" Stelle sicher, dass du im richtigen Verzeichnis bist.")
sys.exit(1)
# Erstelle initialen Feed
print("🏁 Erstelle initialen RSS-Feed...")
if not update_feed():
sys.exit(1)
# Überprüfe ob Feed existiert
if not Path("mixcloud_feed.xml").exists():
print("❌ RSS-Feed konnte nicht erstellt werden!")
sys.exit(1)
# Starte automatische Updates in separatem Thread
update_thread = threading.Thread(
target=auto_update_feed,
args=(60,), # Aktualisiere jede Stunde
daemon=True
)
update_thread.start()
print("⏰ Automatische Updates aktiviert (alle 60 Minuten)")
# Starte Server
start_server()
if __name__ == "__main__":
main()