97 lines
3.0 KiB
Python
Executable File
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()
|