Rockbox, scrobbling i obsługa libre.fm pod Linuksem.

Wygląda, że mój odtwarzacz dorobił się finalnej postaci. To, co najważniejsze, czyli odtwarzanie muzyki działało od samego początku. Ostatnio dorobił się dodatkowej karty flash, a teraz obsługi scrobblingu. O ile samo włączenie scrobblingu, które już wcześniej planowałem zrobić, jest trywialne i aż dziwne, że wcześniej tego nie zrobiłem, o tyle spięcie z libre.fm trywialne nie jest (trudne też nie, ale). Do rzeczy.

Włączenie obsługi scrobblingu w Rockboksie jest proste i sprowadza się do zaznaczenia jednej opcji. Konkrentnie należy zmienić Settings -> Playback Settings -> Last.fm Log na Yes. Tworzony i automatycznie uzupełniany jest plik .scrobbler.log, w standardowym formacie. Nie wiem, czemu wcześniej tego nie zrobiłem w sumie. Pewnie rzuciłem okiem na dalsze wymagane czynności i odpuściłem.

Gorzej z obsługą libre.fm, bo sam plik to nie wszystko (a w zasadzie prawie nic). Początkowo chciałem korzystać z QTscrobblera – klikalne, wolne, niby libre.fm obsługuje. Pierwszy zgrzyt – nie ma tego w repo Debiana, nie ma pakietu .deb do pobrania. Kompilacja i budowa paczki to wprawdzie moment (ave checkinstall!) plus konieczność doinstalowania paru pakietów koniecznych do kompilacji, ale niestety nie widzę nigdzie opcji wyboru libre.fm, a dokumentacja w tym zakresie jest na poziomie non-existent, mimo, że sama aplikacja jest oznaczona jako wspierająca libre.fm na ich wiki. Być może należy dodać wpisy w hosts. Być może ustawić proxy. Zawsze można w źródle zmienić… No ale jakby nie o to chodzi – to miało być łatwe i klikalne, a robi się rzeźba. A wyniki wyszukiwania nie pomagają.

Podczas poszukiwań wielokrotnie natykałem się na opis, jak w prosty sposób (skrypt w bashu plus dwa skrypty w pythonie) aktualizować dane na libre.fm z wiersza poleceń. Metoda prymitywna, ale wyglądająca na prostą i skuteczną, więc stwierdziłem, że dam jej szansę. Jedyne na co warto zwrócić uwagę, to aktualizacja strefy czasowej. OTOH nie mam pewności, dla której strefy czasowej Rockbox dodaje timestampy przy poprawnie ustawionym czasie na odtwarzaczu i komputerze, ale nawet jeśli będzie przesunięcie o te 2 godziny, ale dzień się będzie zgadzał, a taka dokładność w zupełności mi wystarczy.

Instrukcja step-by-step:

  1. Pobierz skrypt bashowy (drugą wersję) z forum i zapisz do pliku
  2. Dostosuj strefę czasową
  3. Utwórz katalog librefm w katalogu użytkownika (mkdir ~/librefm)
  4. Pobierz skrypty import.py oraz gobble.py z tej strony
  5. Uruchom skrypt bashowy (sh nazwa_pod_jaka_zapisany). W katalogu musi być plik .scrobbler.log
  6. Opcjonalnie możesz wykasować pozycje, których nie chcesz wysyłać (np. podcasty czy audiobooki)
  7. Uruchom skrypt w Pythonie (chmod 700 import.py && ./import.py login_do_librefm ~/librefm/rockbox.log)
  8. Podaj hasło do swojego konta na libre.fm
  9. Enjoy your stats

Jeśli ktoś spiął QTscrobblera z libre.fm, to chętnie dowiem się, jak to dokładnie zrobić.

Poza tym, ciągle rozglądam się za wygodnym sposobem słuchania muzyki, ze wsparciem (natywnym) dla libre.fm i – najlepiej – jednoczesnym wsparciem dla Jamendo. Jest Pyjama, ale po pierwsze nie jest to player ogólnego przeznaczenia, tylko – skądinąd wygodny – program do Jamendo. Po drugie, demon szybkości to to nie jest. Nie wiem, czy kwestia Pythona z testinga, czy czego, ale obecnie potrafi zmulić i to do granicy reponsywności (OTOH odtwarzanie działa w tym czasie płynnie, więc nie krytyk). A kiedyś było dobrze… Po trzecie, Pyjama jest słabo rozwijana.

Ideałem byłoby coś, co potrafi scrobble’ować i radia internetowe, i dobrze obsługującego zwykłe albumy z dysku, i Jamendo. W sumie kolejność Jamendo -> radia -> albumy z dysku, bo jakoś nie jestem fanem trzymania wybranej kolekcji (co innego odtwarzacz).

Odczyt S.M.A.R.T. via USB w Debian Lenny.

Dyski potrafią się sypnąć – pewnie każdemu zdarzyło się odzyskiwać dane z dysku, który „umarł”. Dyski mechaniczne posiadają jednak bardzo przyjemną cechę, która może zapobiec utracie danych, czyli tytułowy S.M.A.R.T.. Tylko, że… nie działa w przypadku dysków podłączonych po USB. Przynajmniej w Debianie Lenny. Przynajmniej domyślnie.

Wikipedii przepisywać nie ma sensu, więc krótko: pod każdym systemem dostępny jest pakiet narzędzi smartmontools. Do niedawna pakiet obsługiwał dyski IDE, SCSI oraz SATA. Natomiast bezradny był w przypadku dysków podłączanych przez USB (przynajmniej pod Linuksem), co znacznie ograniczało jego skuteczność.

Byłem przekonany, że to kwestia protokołu, ale przy okazji rozmowy okazało się, że da się, co więcej, niektórze narzędzia pod Windows umieją to zrobić. Linux jak zwykle w tyle? Okazuje się, że niekoniecznie. Co prawda wersja z Debiana Lenny nie potrafi odczytać stanu dysku podłączonego po USB, ale wersja z testinga – jak najbardziej.

Pakiet jest dostępny w backportach, a dla tych, którzy wolą zrobić sami informacja – samodzielnie backportuje się trywialnie. Wystarczy dodać do /etc/apt/sources.list repozytoria ze źródłami dla testing, pobrać źródła smartmontools oraz libcap-ng w wersji dla testing (wajig source smartmontools; wajig source libcap-ng), przebudować na Lennym (dpkg-buildpackage) najpierw libcap-ng, zainstalować otrzymane libcap-ng0_0.6.2-4_i386.deb oraz libcap-ng-dev_0.6.2-4_i386.deb, następnie zbudować smartmontools. Tak naprawdę do działania potrzebne są tylko libcap-ng0_0.6.2-4_i386.deb oraz smartmontools_5.39.1+svn3060-1_i386.deb). I to wszystko. Od tej pory działa smartctl -A /dev/sda, gdzie sda to dysk w kieszeni USB.

Przydatna sprawa, zwłaszcza, że w nowym routerku dysk w kieszeni jest dość krytyczny – wszak wszystkie katalogi, które muszą być dostępne do zapisu są właśnie na nim…

PS. Podziękowania dla peceta za informację o tej zmianie w smartmontools.