Skrypt Bash do odtwarzania stacji radiowych z open.fm w terminalu za pomocą VLC (cvlc).
Zastrzeżenie: to nieoficjalne narzędzie, niezwiązane z open.fm ani Audioteka Group. Korzysta wyłącznie z publicznie dostępnego streamu i publicznej strony serwisu - nie omija żadnych zabezpieczeń ani płatnych treści. Przeznaczone do osobistego użytku (jak nagrywanie radia na kasetę). Używasz na własną odpowiedzialność; nazwa, logo i treści open.fm należą do ich właścicieli.
openfm-cli to narzędzie wiersza poleceń, które umożliwia odtwarzanie dowolnych stacji radiowych z serwisu open.fm bezpośrednio w terminalu. Skrypt wykorzystuje VLC w trybie konsoli (cvlc) oraz tmux do zarządzania sesjami w tle, dzięki czemu muzyka gra nawet po odłączeniu od terminala.
Główne funkcjonalności:
- Odtwarzanie dowolnej stacji z open.fm w tle
- Pełna lista stacji z automatycznym cache'owaniem (odświeżanie co 7 dni)
- Wyszukiwanie i interaktywny wybór stacji (z obsługą
fzf) - Automatyczny reconnect przy zerwaniu połączenia
- Autostart ostatnio granej stacji przy logowaniu (systemd)
- Logowanie błędów i aktywności do plików
- Brak reklam podczas słuchania
curl- pobieranie listy stacji i tokenów streamuvlc(konkretniecvlc) - odtwarzanie strumieni audiotmux- zarządzanie sesjami w tleffmpeg- opcjonalnie, tylko do nagrywania stacji (--record)
sudo apt update && sudo apt install -y curl vlc tmux ffmpegchmod +x openfm.sh
sudo ./openfm.sh --installPo instalacji skrypt będzie dostępny globalnie jako komenda openfm.
chmod +x openfm.sh
./openfm.sh trance| Komenda | Opis |
|---|---|
openfm <slug> |
Odtwarza stację w tle (np. openfm trance) |
openfm <slug> --url-only |
Wypisuje tylko URL streamu (do VLC, MPV itp.) |
openfm --attach |
Podłącza się do aktualnie grającej sesji |
openfm --stop |
Zatrzymuje odtwarzanie |
openfm --resume |
Wznawia ostatnio graną stację |
openfm --status |
Pokazuje, co aktualnie gra |
openfm --nowplaying [slug] |
Pokazuje wykonawcę i tytuł aktualnie granego utworu (domyślnie: stacja z --status) |
openfm --record <slug> |
Nagrywa stację do pliku w tle, niezależnie od odtwarzania |
openfm --record <slug> --file <ścieżka> |
J.w., pod wskazaną ścieżką (.mp3 = transkodowanie, inne = surowy .aac) |
openfm --record <slug> --time 12h |
J.w., kończy automatycznie po podanym czasie (np. 12h, 90m, 3600s) |
openfm --stop-recording |
Zatrzymuje trwające nagrywanie, bezpiecznie domykając plik |
openfm --list |
Pokazuje pełną listę dostępnych stacji |
openfm --list <fraza> |
Szuka stacji po nazwie/slug (np. openfm --list rock) |
openfm --logs [N] |
Pokazuje ostatnie N linii logu (domyślnie 50) |
openfm --refresh |
Wymusza odświeżenie listy stacji z open.fm |
openfm --help |
Pokazuje pełną pomoc |
Pełną listę stacji można wyświetlić komendą:
openfm --listPopularne kategorie:
| Kategoria | Przykładowe stacje |
|---|---|
| Trance/Electronic | trance, elektronika, house, edm-anthems |
| Rock/Metal | rock-pl, polski-rock, classic-rock, giganci-rocka |
| Hip-Hop/Rap | hip-hop-pl, polski-rap, trap-pl |
| Pop/Hity | 100-hits, 500-hits, 1001-hits, hity-na-caly-dzien |
| Chill/Relax | chill, chillout, spokoj, piano-chill |
| Klasyki | lata-80, lata-90, classic-hits |
| Polskie stacje | eska2, radio-zet, rmf24, rmf-classic |
- Ctrl+B, D - Odłącz od sesji (muzyka dalej leci w tle)
- Ctrl+C - Zatrzymaj odtwarzanie (w sesji tmux)
Możliwość automatycznego wznawiania ostatnio granej stacji przy logowaniu do systemu:
# Włącz autostart
openfm --autostart on
# Wyłącz autostart
openfm --autostart off| Plik | Opis |
|---|---|
~/.cache/openfm-cli/stations.tsv |
Cache listy stacji (format: slug TAB id TAB nazwa) |
~/.cache/openfm-cli/last_station |
Ostatnio grana stacja |
~/.cache/openfm-cli/logs/openfm_*.log |
Logi aktywności i błędów |
- Sprawdź, co gra:
openfm --status
- Zobacz logi:
openfm --logs 20
- Odśwież listę stacji:
openfm --refresh
- Zrestartuj sesję:
openfm --stop && openfm trance
- Sprawdź poprawność nazwy:
openfm --list
- Odśwież cache:
openfm --refresh
- Zainstaluj VLC:
sudo apt install vlc
- Sprawdź, czy
cvlcdziała:cvlc --version
MIT - używaj, modyfikuj, rozprowadzaj swobodnie.
Paweł (Paffcio)
Jeśli znajdziesz błędy lub masz pomysły na ulepszenia, zgłoś Issue lub Pull Request.
