# đ» Radioplayer mit Presets
Ein moderner, leichtgewichtiger Internetradio-Player zum Selber-Hosten. Der Player ist modular aufgebaut, responsiv und bietet volle Kontrolle ĂŒber deine Senderliste.
## đ Projektstruktur
```
/Radioplayer
âââ index.html # Hauptseite (Frontend-Einstieg)
âââ main.js # Zentrales Steuerungs-Skript
âââ README.md # Dokumentation
âââ LICENSE # Lizenzinformationen
â
âââ assets/ # Design-Ressourcen
â âââ style.css # Zentrales Stylesheet
â âââ fonts/ # Lokal eingebundene Webfonts (DSGVO-konform)
â âââ img/ # Favicons und Icons
â
âââ js/ # Modularisierte JavaScript-Logik
â âââ meta-handler.js # Abruf von Stream-Metadaten
â âââ preset-manager.js # Logik zur Speicherung (LocalStorage)
â âââ preset-ui.js # Verwaltung der Bearbeiten-OberflĂ€che
â âââ sleeptimer.js # Timer-FunktionalitĂ€t
â âââ ui-helper.js # Modals, Footer-Initialisierung & UI-Tools
â
âââ php/ # Serverseitige Skripte
âââ metadata.php # Proxy zum Auslesen von ICY-Metadaten
```
## âš Features
- **LÀuft auch auf Servern ohne PHP:** Es ist nur HTML und Javascript nötig.
- **Individuelle Presets:** Sender können einfach hinzugefĂŒgt, bearbeitet, gelöscht und per Drag & Drop sortiert werden.
- **Metadaten-Anzeige:** Automatische Anzeige von Sendername und aktuellem Song (diese Funktion erfordert PHP-UnterstĂŒtzung).
- **Flexibler Import/Export:** Sichere deine Senderliste als JSON-Datei oder als kompakten String.
- **Sleeptimer:** Praktische Abschaltautomatik fĂŒr entspanntes Hören.
- **Local Storage:** Deine Einstellungen werden direkt im Browser gespeichert â kein Backend-Setup fĂŒr die Datenbank nötig.
- **Modularer Code:** Sauber getrennte Logik fĂŒr UI, Presets, Metadaten und Player.
## đ Installation
1. Lade alle Dateien herunter und kopiere sie auf deinen Webserver.
2. Falls du die Titelanzeige (Metadaten) nutzen möchtest, muss dein Server **PHP** unterstĂŒtzen.
3. Die Datei `webradio_presets.json` dient als Standard-Vorlage beim ersten Start oder wenn alle vorhandenen Presets gelöscht werden.
## đ Dateistruktur
Um den Code wartungsfreundlich zu halten, ist das Projekt in Module unterteilt:
- `index.html`: Das GrundgerĂŒst des Players.
- `main.js`: Die Schaltzentrale (steuert den Ablauf).
- `ui-helper.js`: Verwaltet Modals, Titel und Footer-Anzeigen.
- `preset-manager.js`: Ăbernimmt das Speichern, Laden und die Kompression der Senderliste.
- `meta-handler.js`: Kommuniziert mit dem PHP-Proxy fĂŒr Songtitel.
- `sleeptimer.js`: Logik fĂŒr die automatische Abschaltung.
- `metadata.php`: Der Proxy, der die Metadaten von den Radio-Streams abruft.
## đ Nutzung
- **Sender hinzufĂŒgen:** Ăber "Presets bearbeiten" kannst du eigene Stream-URLs eintragen.
- **Sortieren:** Nutze das â°-Symbol in der Liste, um die Reihenfolge per Drag & Drop zu Ă€ndern.
- **Teilen:** Exportiere deine Liste als Code-String, um sie auf einem anderen GerÀt (z.B. Handy oder Tablet) einfach wieder zu importieren.
## đ Fehlerbehebung (Troubleshooting)
- **Keine Titelanzeige:** ĂberprĂŒfe, ob die `metadata.php` im Ordner /optional liegt und dein Server PHP-Requests erlaubt (CURL muss in der PHP-Konfiguration meist aktiviert sein).
- **Presets werden nicht gespeichert:** Stelle sicher, dass dein Browser "Local Storage" erlaubt und nicht im privaten Modus ist, der Daten nach dem Schliessen löscht.
- **Stream spielt nicht ab:** Einige Browser blockieren "Mixed Content" (HTTP-Streams auf einer HTTPS-Seite). Achte darauf, nach Möglichkeit `https://`-Stream-URLs zu verwenden.
## âïž Lizenz
Unlicense
## đ Kontakt
@simon@social.thepipes.ch
---
*Viel Spass beim Radiohören!*