Тема: Perl + LastFM

Есть простой способ скроблить на ластфм perl скриптом что угодно и откуда угодно (почти)
К примеру такую фитчу можно прикрутить даже к ices, ezstream  и тп

Для начала нужно установить  Net::LastFM::Submission, можно скачать отсюда http://search.cpan.org/~sharifuln/Net-L … mission.pm (кстате там сразу описание) и инсталировать по инструкции внутри,
лично я установил через cpan

сам код

        use Net::LastFM::Submission;
        
        my $submit = Net::LastFM::Submission->new(
                'user'      => 'XXX',
                'password'  => 'YYY',
        );
        
        $submit->handshake;
        
        $submit->submit(
                'artist' => 'Artist name',
                'title'  => 'Track title',
                'time'   => time - 10*60, # 10 minutes ago
        );
        
        $submit->now_playing(
                'artist' => 'Artist name',
                'title'  => 'Track title',
        );

там где user password все понятно, $submit->handshake проходим авторизацию - жмем ластфм руку ))

$submit->submit будет отображать что проиграно  10*60 то есть 10 минут назад
$submit->now_playing будет отображать что играет сейчас, но использовать только эту функцию не получиться, так как без предыдущей песня пропадет из списка через минуту

'Artist name' и 'Track title' меняем везде на свою переменную
также не мешало б поставить кодировку, у меня все в utf-8 поэтому  'enc'    => 'utf-8' в submit и now_playing

и можно этот кусок кода вставить например в ices.pm но есть пару НО

если поставить это до вывода трека скриптом то может быть задержка, поставить после вывода - вещалка может не дожидатся окончания выполнения скрипта и отрубить после получения трека, хотя в ices может будет ждать, сам проверял это в liquidsoap

Тем не менее, лучше скрипт дергать в бекграунде например такой строчкой в основном скрипте

exec("/home/ls/lastfm.pl 'исполнитель' 'песня' & >/dev/null");

lastfm.pl тогда выглядит так

#!/usr/bin/perl

use Net::LastFM::Submission;

my ($lfm_a, $lfm_t) = @ARGV;

if ($lfm_a){
$submit = Net::LastFM::Submission->new(
        'user'      => 'логин',
        'password'  => 'пароль',
        'enc'       => 'utf-8',
);

$submit->handshake;

$submit->submit(
       'artist' => $lfm_a,
       'title'  => $lfm_t,
       'time'   => time - 5*60,
       'enc'    => 'utf-8',
);

$submit->now_playing(
        'artist' => $lfm_a,
        'title'  => $lfm_t,
        'enc'    => 'utf-8',
);
}

$submit->now_playing впринципе можно не использовать, так как это для realtime

Можем вообще в крон засунуть чтоб он парсил историю или еще что.

Конечно же можно обойтись без Net::LastFM::Submission написав скрипт чуть побольше, но об этом как нибуть позже )