Webbasiertes Internetradio, Podcast-Player und Audiorecorder mit HiFi-Optik. Konzipiert für Raspberry Pi, läuft aber auf jedem System mit Python und Node.js.
Zugriff auf tausende Sender weltweit über die Radio-Browser-API. Filterbar nach Land, Bitrate, Codec und Votes. Favoritenverwaltung inklusive.
- Sendersuche mit Echtzeit-Filter und Sortierung
- Länderliste mit Senderanzahl
- Favoritensystem mit Drag-and-Drop-Sortierung
- Sender-Details: Homepage, Codec, Bitrate, Stream-URL
- Favicon-Caching für schnelle Darstellung
- Laufschrift mit aktuellem Titel (ICY-Metadata)
Laufende Streams mitschneiden, segmentieren und bearbeiten. Integrierter Waveform-Cutter für präzises Schneiden.
- Zeitgesteuerte und manuelle Aufnahme
- Waveform-basierter Audio-Cutter mit Minimap
- Segment-Schnitt per Doppelklick oder Tastatur
- Normalisierung (LUFS) und Format-Konvertierung (MP3, FLAC, OGG, WAV)
- Datei-Explorer mit Sortierung und Segment-Selektion
RSS-Feeds abonnieren, Episoden streamen oder herunterladen.
- Podcast-Suche und Abonnement-Verwaltung
- Episoden-Filter: Alle, Ungehört, Downloads
- Streaming und Offline-Downloads
- Automatische Feed-Aktualisierung
Umfangreiche Einstellungen für Darstellung, Sprache und System.
- Dark Mode und Light Mode
- 20+ Sprachen mit Flaggen-Auswahl
- Aufnahme-Einstellungen (Format, Qualität, Speicherpfad)
- Timeshift-Buffer-Konfiguration
- System-Informationen und Dienste-Verwaltung
Der Player orientiert sich an klassischer HiFi-Geräte-Optik:
- Gebürstetes Edelstahl-Design (Brushed Metal)
- VU-Meter mit Echtzeit-Pegelanzeige
- Transport-Buttons im Hardware-Look
- Drehregler für Lautstärke
- LED-Anzeigen für Status und Navigation
- Laufschrift-Display mit Stream-Titel
- Tastatursteuerung (Space, Pfeiltasten, 1-4 für Tabs)
Alle Oberflächen sind auch im hellen Design verfügbar.
| Komponente | Technologie |
|---|---|
| Frontend | Svelte 5 (Runes), Vite, hls.js |
| Backend | Python, FastAPI, FFmpeg |
| Audio | HLS-Streaming, ICY-Metadata, LUFS-Normalisierung |
| Datenbank | SQLite |
| Icons | Font Awesome 6 |
| Fonts | Orbitron (Logo), Barlow (UI) |
radiohub-frontend/ Svelte 5 SPA (Port 5180)
radiohub-backend/ FastAPI REST-API (Port 9091)
backend/
routers/ API-Endpunkte
services/ Business-Logik, Audio-Verarbeitung
database.py SQLite-Anbindung
Voraussetzung: Docker mit Compose-Plugin.
git clone git@github.com:HalloWelt42/RadioHub.git
cd RadioHub
docker compose up -dAufruf:
- App:
http://localhost:9092(bzw.http://<host-ip>:9092im LAN) - Backend-API direkt:
http://localhost:9091 - API-Docs:
http://localhost:9092/docs
Daten (Datenbank, Aufnahmen, Cache) liegen in ./data neben dem Repo.
Updates:
git pull
docker compose up -d --buildVoraussetzungen: Python 3.11+, Node.js 18+, FFmpeg.
# Backend
cd radiohub-backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Frontend
cd ../radiohub-frontend
npm installStarten:
# Backend (Port 9091)
cd radiohub-backend
source .venv/bin/activate
uvicorn backend.main:app --host 0.0.0.0 --port 9091 --reload
# Frontend Dev-Server (Port 5180, mit Vite-Proxy auf 9091)
cd radiohub-frontend
npm run devDie App ist im Dev-Modus unter http://localhost:5180 erreichbar.
Nicht-kommerzielle Lizenz v1.0 (LicenseRef-RadioHub-NC-1.0)
Basierend auf CC BY-NC-ND 4.0 mit Ergänzungen.
Copyright 2025-2026 HalloWelt42
Private, nicht-kommerzielle Nutzung und private Modifikation erlaubt. Kommerzielle Nutzung, Verkauf und Veröffentlichung modifizierter Versionen untersagt. Vollständige Lizenzbedingungen: lizenz.md





