Normalne odtwarzanie radia internetowego polega na bezpośrednim przesyłaniu danych z serwera źródłowego. Zależnie od sytuacji może być to sporym minusem:
wymaga stałego połączenia z siecią, w przypadku jego braku odtwarzanie zostanie przerwane
niektóre programy nie obsługują poprawnie przesyłania informacji o odsłuchanych utworach radiowych do serwisów jak Last.fm
mogą w ogóle nie podejmować prób wysyłania
lub wysyłać błędne dane zawierające tagi radia lub reklamy
po zatrzymaniu utworu tracimy i jego wznowieniu nie trafimy już na ten sam utwór
Dość trafnym przykładem działania z użyciem lokalnego buforowania może być słuchanie radia podczas pracy, w siedzibie firmy.
Po rozpoczęciu procesu, każdy pobrany utwór zostaje osobno zapisany na dysku
Przy okazji odfiltrowane zostają reklamy, tagi zmienione na poprawne
Tak przygotowany plik zostaje dodany do aktualnie odtwarzanej listy aplikacji
Każdy odtworzony utwór zostaje usunięty z playlisty i dysku
W przypadku spotkania firmowego, odtwarzanie w aplikacji można zatrzymać, pliki będą wciąz pobierane
Po powrocie, można kontynuuować odtwarzanie z miejsca w którym się skończyło
Nagle połączenie z internetem przestaje działać - w niczym nam to nie przeszkadza gdyż mamy zapas muzyki pobranej podczas wcześniejszego spotkania :)
Potrzebne aplikacje
Streamripper - do pobierania utworów, filtrowania i zmiany metadanych
Audacious - zarządzanie listą utworów, odtwarzanie
Python3 - do uruchomienia skryptu łączącego dwie poprzednie aplikacje, dodatkowo potrzebne są biblioteki:
dbus-python
Skrypt streambuffer'a jest dostępny do pobrania tutaj.
Jak to działa
Streamripper łączy się z zadanym radiem i pobiera utwory do wskazanego katalogu. Gdy dany utwór zostaje przeniesiony do katalogu gotowe, Streambuffer doda go jako nowy utwór w Audacious'ie. Gdy audacious zmieni pozycję na playliście na następną, wcześniejsze których pliki znajdują się w katalogu gotowe zostaną usunięte (z kolejki jak i z dysku).
Do nasłuchiwania zmiany plików przez streamripper'a używane jest inotify, natomiast do komunikacji z playerem d-bus.
Struktura i opis plików
- katalog główny \- data \- *.* - utwory w pełni pobrane \- incomplete \- *.* - utwory niepełne \- pattern.txt - filtry streamripper'a
Użycie
Najpierw należy samodzielnie uruchomić odtwarzacz Audacious.
Następnie,
jako skrypt python:
m = Manager("/my/music", "http://itori.animenfo.com:443/") m.run()
lub prosto z linii poleceń:
./rip "/my/music" "http://itori.animenfo.com:443/"