Jogger Minia

Strona w permanentnej budowie.

Wyświetlanie tekstów piosenek -- kompletne rozwiązanie

Informacje o wpisie.

Opublikowano 20 czerwca 2007 o 21:16:36 w kategoriach: Poradniki.

2 komentarze; Góra strony.

Trackback; Poprzedni wpis; Następny wpis.

Z pewnością każdy, kto słucha utworów zagranicznych wykonawców, ceni sobie możliwość słuchania piosenki z tekstem przed nosem. Największą zaletą takiego rozwiązania jest lepsze zrozumienie słuchanego tekstu (z różnych powodów nie zawsze jest on w pełni zrozumiały).

Również ja lubię mieć taką możliwość. Głównie z przyzwyczajenia teksty piosenek przechowuję na dysku, co rodzi kolejny problem — pobieranie ich wiąże się z poświęceniem pewnej ilości czasu na ten właśnie cel.

Ponieważ jestem człowiekiem który nie lubi robić czegoś, co wykonać za niego może równie dobrze ktoś inny, postanowiłem napisać skrypt wykonujący za mnie tę monotonną pracę.

W dalszej części notki opiszę także jak szybko wyświetlać tekst aktualnie odtwarzanego utworu w MPD we Fluxboksie.

Skrypt, o którym mowa powyżej, jest do pobrania na mojej stronie domowej (pamiętaj o zmianie rozszerzenia przed użyciem).
Do poprawnego działania wymaga modułów MP3::Tag, Ogg::Vorbis::Header, LWP::UserAgent (zazwyczaj w pakiecie libwww-perl) oraz HTML::Strip.
Ponieważ korzysta tylko z perlowych funkcji, powinien po drobnych przeróbkach (ścieżki, uprawnienia) działać także na MS Windows. Osobiście testowałem go na codziennie aktualizowanym Gentoo z perlem w wersji 5.8.8.

Jeśli chodzi o sam kod, zdaję sobię sprawę że zwłaszcza część odpowiedzialną za przetwarzanie źródła możnaby rozwiązać znacznie ładniej (np. poprzez parsowanie kodu i następne wyczytywanie zawartości jednego liścia?), jednak wydaje mi się to znacznie trudniejsze niż zastosowana metoda.
Jeśli mowa o kodzie, nie wiem dlaczego pierwsze sprawdzanie listy-zawartości katalogu przechodziły np. ".." (stąd natychmiastowe skrócenie listy o dwa pierwsze elementy) czy pliki zakończone na .jpg (jak i pewnie wiele innych).

Kiedy skrypt już zakończy swoją działalność, przydałoby się jeszcze mieć jakiś sposób na szybkie wyświetlanie pobranego tekstu. W tym celu już wcześniej napisałem banalny skrypcik w BASH-u — lyrics.sh. Wyświetla on, przy pomocy programu less, zawartość pliku $HOME/mp3/WYKONAWCA/ROK-ALBUM/Lyrics/NUMER.TYTUŁ (co oczywiście wymaga posiadania takiej a nie innej struktury katalogów, jednak z łatwością można skrypt dopasować do swoich potrzeb).

Jednak ponieważ otwieranie terminala i uruchamianie lyrics.sh za każdym razem do szybkich nie należy, warto jeszcze ułatwić sobie życie dodając do pliku $HOME/.fluxbox/keys na przykład taką linijkę:

Pause :ExecCommand xterm -e /home/user/skrypty/lyrics.sh

Co przypisze wyświetlanie tekstu aktualnie granego utworu w MPD pod przycisk Pause Break (zazwyczaj po prawej stronie, w okolicach klawiatury numerycznej). Dlaczego akurat ten przycisk? Gdyż nie przypominam sobie, do czego on służy, więc można go spokojnie nadpisać swoim poleceniem.

Przygotowane w ten sposób środowisko gotowe jest do tego, by w każdej chwili móc odczytać tekst aktualnie odtwarzanego utworu. Ponieważ liczę, że nie tylko mi przyda się takie rozwiązanie, skrypty publikuje na licencji "Bierzcie i jedzcie z niego wszyscy". Miło mi jednak będzie, jeśli po modyfikacji obecna będzie notka o oryginalnym autorstwie.

Komentarze

Jak się okazało, LWP::UserAgent nie wyświetlał komentarzy (do czego zresztą ma pełne prawo) lyricsondemand.com generuje różne kody utworów, czasem bez komenatarza HTML, co powodowało pobieranie zbytniego tekstu z lyricsondemand.com (drugi split nie znajdował wyrażenia regularnego opartego na wspomnianym komentarzu HTML, więc nie dzielił drugi raz kodu). Błąd ten został już poprawiony.

Dodałem także sprawdzanie, czy plik z tekstem (oczywiście w odpowiedniej formie) już istnieje. Jeżeli tak, program przejdzie do następnego utworu na liście (do tej pory sprawdzał dostępność tekstu i nadpisywał zawartość pliku).

Nowsza wersja skryptu jest na mojej stronie domowej.

I wreszcie, o czym zapomniałem napisać w notce — oczywiście wszelkie komentarze i raporty błędów proszę do mnie kierować (chociaż tych drugich być nie powinno).

getlirycs.pl 2.0

Blisko dwa lata temu opublikowałem kompletne rozwiązanie wyświetlania tekstów odtwarzanych utworów z Fluxboksem i MPD w tle. Wpis ten, pomimo niskiego polotu, cieszy się umiarkowaną, ale stałą popularnością.
Sugerowane prze[...]

Poniższy formularz służy do wysyłania komentarzy. O ich strukturę i prezentację dba Markdown.

Komentarze stanowią wyłączną własność autorów, choćby zaznaczono inaczej. Również autorom przysługuje wyłączne prawo do ich modyfikacji.

Autor zastrzega sobie prawo do moderacji komentarzy.

Śledzenie wątku: