MOC i Audioscrobbler (Last.fm)

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
duo666
Posty: 79
Rejestracja: 02 kwietnia 2007, 19:34

MOC i Audioscrobbler (Last.fm)

Post autor: duo666 »

Witam

Wszyscy z was zapewne wiedzą czym jest i do czego służy społeczność Last.fm. Jednak oprogramowanie dostępne na ich stronie nie obsługuje wielu odtwarzaczy (w chwili obecnej tylko XMMS, BMP, Quod Libet, Noatun, Banshee i Amarok). Chciałbym więc zaprezentować sprytny sposób scrobblowania utworów z mojego ulubionego odtwarzacza muzyki pod konsole.

Na początek instalujemy oprogramowanie umożliwiające bezpośrednie przesyłanie scrobblowanych utworów do serwera Last.fm:

Kod: Zaznacz cały

su -c "aptitude install lasftfmsubmitd"
Konfigurator poprosi nas o podanie nazwy użytkownika i hasła do konta last.fm, a także grupy - wpisujemy audio.

Następnym krokiem jest utworzenie skryptu który będzie pobierał informacje z naszego odtwarzacza do demona:

Kod: Zaznacz cały

#!/bin/bash

TITLE="`mocp -i | grep 'Title:' | sed -e 's/^.*: //'`"

if [ "$TITLE" != "" ]; then
ARTIST="`mocp -i | grep 'Artist:' | sed -e 's/^.*: //'`"
SONGTITLE="`mocp -i | grep 'SongTitle:' | sed -e 's/^.*: //'`"
ALBUM="`mocp -i | grep 'Album:' | sed -e 's/^.*: //'`"
LENGTH="`mocp -i | grep 'TotalTime:' | sed -e 's/^.* //'`"
TIME="`date +'%Y-%m-%d %H:%M:%S'`"

 if [ "`cat /home/user/.mocp.log | head -n1`" != "$ARTIST $SONGTITLE $ALBUM $LENGTH" ];then
 /usr/lib/lastfmsubmitd/lastfmsubmit --artist "$ARTIST" --title "$SONGTITLE" --album "$ALBUM" --length "$LENGTH" --time "$TIME"
 fi

 echo "$ARTIST $SONGTITLE $ALBUM $LENGTH" > /home/user/.mocp.log

fi
zamiast user należy oczywiście wpisać swoją nazwę użytkownika ;) .

Po zapisaniu skryptu przychodzi czas na ostatni krok - modyfikujemy tabelę crona:

Kod: Zaznacz cały

crontab -e
i dopisujemy:

Kod: Zaznacz cały

*/2 * * * * /home/user/ścieżka_do_skryptu
I to już wszystko :)

Metoda ta ma jednak kilka minusów. Po pierwsze utwory scrobblowane będą tylko raz, jeśli słuchamy jednego utworu kilka razy pod rząd do last.fm'a będzie przesłane tylko jedno przesłuchanie. Można by usunąć część skryptu odpowiedzialną za porównanie obecnie odtwarzanego utworu z zapisanym w ~/.mocp.log jednak wtedy należało by wydłużyć interwał zapisany w pliku crona do przynajmniej pięciu minut, by nie scrobblował długich utworów po kilka razy. Wtedy jednak utwory które nie zmieszczą się w tym przedziale czasowym w ogóle nie zostaną zescrobblowane. Jednak wydaje mi się że sposób opisany przeze mnie jest optymalny :)

ps. Metoda i skrypt nie są moim pomysłem, a jedynie podszlifowaną wersją sposobu opisanego przez |FoLKeN|'a, więc to jemu należą się wszystkie zaszczyty :) . Oryginalny artykuł można przeczytać pod tym adresem: http://www.weblog.svx.pl/archive/25
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

Mam problem z polskimi znakami. Tagi są zakodowane w Windows-1250 (windows ;/). Kiedy uruchamiam lastfmsubmitd z terminala z parametrami zawierającymi polskie znaki - wszystki działa. Jednak kiedy wysyła dane z "mopc -i" to widać krzaczki na profilu, np. "Łza " zamiast "£za". Nie mam pojęcia, co zrobić. Czy to wina mocp, że źle odczytuje tagi, czy w złym kodowaniu wysyła demon...

Dodam, że w konfigu MOC mam "ID3v1TagsEncoding = WINDOWS-1250", ale chyba do ignoruje (niewkompilowane?)

Kod: Zaznacz cały

$ mocp --version
moc 2.5.0-alpha2 Build: Jun 21 2007 22:33:23
Compiled with: OSS ALSA JACK DEBUG internet streams resample
Dodam w samym playerze źle wyświetla np. 'ś' jako '##'...
Awatar użytkownika
ruun
Member
Posty: 1366
Rejestracja: 29 marca 2007, 21:07
Lokalizacja: Kruszwica

Post autor: ruun »

Pod adresem http://devnulll.blogspot.com/2007/08/ho ... st_03.html jest alternatywna metoda. Jeszcze tego nie przetestowałem, więc nie wiem czy/jak to działa.
Awatar użytkownika
parrotlarch
Beginner
Posty: 393
Rejestracja: 12 kwietnia 2007, 07:31
Lokalizacja: Olsztyn

Post autor: parrotlarch »

melduję (trochę po czasie), że działa wyśmienicie bo właśnie próbowałem (i jest o wiele prostsza). dosłownie 3 rzeczy do zrobienia:

Kod: Zaznacz cały

aptitude install lastfmsubmitd
potem do ~/.moc/config dopisać:
OnSongChange = "/usr/lib/lastfmsubmitd/lastfmsubmit --artist %a --title %t --length %d --album %r"
ja jeszcze musiałem sobie nadać prawa do /var/spool/lastfm:

Kod: Zaznacz cały

chmod a=rwx -R /var/spool/lastfm
pomyj
Posty: 14
Rejestracja: 24 listopada 2007, 18:07
Lokalizacja: Bielsko-Bia³a

Post autor: pomyj »

Mam pytanko, czy ktoś wie czy da rady zmusić moc'a do wysyłania poprawnie danych do last.fm jeżeli w tagach są czcionki azjatyckie?
Korzystam z metody podanej przez parrotlarch czyli OnSongChange + lastfmsubmitd i w przypadku czcionek azjatyckich wysyłane jest # a w moc w tagach wyświetla . natomiast samą nazwę pliku moc wyświetla poprawnie.
Kodowanie nazw plików jak i tagów to utf-8. Moc'a odpalam pod urxvt.

Może w OnSongChange dać skrypt który jako parametr dostaje nazwę pliku i który będzie pobierał info bezpośrednio z mp3 tylko ktoś musiałby mi pomóc przy wyciągnięciu taga z mp3.

Z góry dzięki za odp
Zablokowany