Scrobbler last fm windows

Last.fm Scrobbling

Начало работы

Общаемся с Last.FM

Теперь необходимо написать на почту submissions@last.fm для того чтобы Вам активировали собственный clientID.
Собственный clientID иметь в принципе не обязательно, но если вы хотите чтобы при прослушивании трека показывалось приложение, через которые проигрывается трек, то написать все же придется.


Вот немного смешной лог моей переписки:
Я: Здравствуйте.
Хочу приобрести собственный clientID для использования в моих запросах.
Сайт — vpleer.ru музыкальный поисковик. Хочу прикрутить scrobbling на last.fm
Спасибо
Adrian: Hey there,
I’m afraid I don’t speak Russian, any way you could reword that request in English?
Regards, Adrian
Я: Okey, sorry for bad english..Hello.
I own clientID to use in my queries.
Website — vpleer.ru music search engine. I want to tie scrobbling to last.fm
Thanks. Understand me?)
Adrian: Hey there,
OK, I understood it this time. Your new client id is «***» — you should be able to start using this an hour from now. Happy scrobbling!
Regards, Adrian

Вот так вот =) Свой clientID я предпочел скрыть т.к. если будут какие-либо проблемы по запросам с моего client ID, то могут прикрыть. (По крайней мере так написано у них в API)

Приступаем к работе

Ваш пользователь должен перейти по ссылке: www.lastfm.ru/api/auth?api_key=MY_PUBLIC_KEY, где MY_PUBLIC_KEY это ваш публичный ключ.
Далее если пользователь соглашается работать с этим приложением, то его перенаправляет на тот самый Callback URL с одним единственным GET запросом ‘token’…

/*
Coded by Isis (c) 2010
Link: www.lastfm.ru/api/auth?api_key=8ea0be38326c1275db95968ab677cfb6
*/
define( ‘API_KEY’ , ‘8ea0be38326c1275db95968ab677cfb6’ );
define( ‘API_SECRET_KEY’ , ‘b95968ab6775f7474a4db827be6bcf’ );
define( ‘CLIENT_ID’ , ‘tst’ ); //Paste your clientID
define( ‘CLIENT_VERSION’ , ‘1.0’ );

function xml2arr($xml, $recursive = false )
<
if (!$recursive) $array = simplexml_load_string($xml); else $array = $xml ;

$newArray = array() ;
$array = (array)$array ;
foreach ($array as $key =>$ value )
<
$ value = (array)$ value ;
if (isset($ value [0])) $newArray[$key] = trim($ value [0]); else $newArray[$key] = xml2arr($ value , true );
>
return $newArray ;
>

function loginLastFM($url, $type, $post = null )
<
if ($ch = curl_init($url))
<
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, ‘Vpleer.ru Scrobbler.’ );
$type = $type == ‘get’ ? curl_setopt($ch, CURLOPT_POST, 0) : curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_REFERER, ‘http://www.lastfm.ru/api/’ );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
return $content;
>
else
<
return ‘notconnect’ ;
>
>

//1st step. Get token from $_GET[‘token’]
function getKey($token, $API_KEY, $API_SECRET_KEY)
<
$api_sig = md5( ‘api_key’ .$API_KEY. ‘methodauth.getSessiontoken’ .$token.$API_SECRET_KEY);
$ get = ‘method=auth.getSession&api_key=’ .$API_KEY. ‘&token=’ .$token. ‘&api_sig=’ .$api_sig;
$ return = xml2arr(loginLastFM( ‘http://ws.audioscrobbler.com/2.0/’ , ‘get’ , $ get ));
return $ return ;
>

//handShake. Рукопожатие. Вызывается каждый раз когда что-либо не сработало
function handShake($user, $key, $time, $CLIENT_ID, $CLIENT_VERSION, $API_KEY, $API_SECRET_KEY)
<
$handtoken = md5($API_SECRET_KEY.$time);
$handget = ‘hs=true&p=1.2.1&c=’ .$CLIENT_ID. ‘&v=’ .$CLIENT_VERSION. ‘&u=’ .$user. ‘&t=’ .$time. ‘&a=’ .$handtoken. ‘&api_key=’ .$API_KEY. ‘&sk=’ .$key;
$handshake = loginLastFM( ‘http://post.audioscrobbler.com/’ , ‘get’ , $handget);
$handecho = explode( «\n» , $handshake);
return $handecho;
>

//Посылаем на last.fm все данные песни на момент начала проигрывания
function nowPlaying($session, $artist, $song, $duration)
<
$playget = ‘s=’ .$session. ‘&a=’ .$artist. ‘&t=’ .$song. ‘&b=&l=’ .$duration. ‘&n=&m=’ ;
$playnow = loginLastFM( ‘http://post.audioscrobbler.com:80/np_1.2’ , ‘post’ , $playget);
return $playnow;
>

Читайте также:  Windows installer redistributable что это

//Посылаем на last.fm все данные песни на момент окончания проигрывания или спустя 50% проигрывания трека
function submission($session, $artist, $song, $duration, $starttime)
<
$subget = ‘s=’ .$session. ‘&a[0]=’ .$artist. ‘&t[0]=’ .$song. ‘&i[0]=’ .$starttime. ‘&o[0]=P&r[0]=&l[0]=’ .$duration. ‘&b[0]=&n[0]=&m[0]=’ ;
$submission = loginLastFM( ‘http://post2.audioscrobbler.com:80/protocol_1.2’ , ‘post’ , $subget);
return $submission;
>

function doShake($fmuser, $fmkey, $time, $CLIENT_ID, $CLIENT_VERSION, $API_KEY, $API_SECRET_KEY)
<
$handshake = handShake($fmuser, $fmkey, $time, $CLIENT_ID, $CLIENT_VERSION, $API_KEY, $API_SECRET_KEY);
$handerror = trim($handshake[0]);
$session = trim($handshake[1]);
if ($handerror == ‘OK’ && isset($session))
<
setcookie( ‘fmsess’ , $session, time() + 3600 * 24 * 730, ‘/’ , ‘.’ .$_SERVER[ ‘HTTP_HOST’ ]);
return ‘OK’ ;
>
else
<
return ‘Error : ‘ .$handerror;
>
>

//Если к нам пришли ппервый раз с last.fm, то ставим куки с необходимыми данными
if (isset($_GET[ ‘token’ ]))
<
$ return = getKey($_GET[ ‘token’ ], API_KEY, API_SECRET_KEY);
$error = isset($ return [ ‘error’ ]) ? $ return [ ‘error’ ] : null ;
$key = isset($ return [ ‘session’ ][ ‘key’ ]) ? $ return [ ‘session’ ][ ‘key’ ] : null ;
$user = isset($ return [ ‘session’ ][ ‘name’ ]) ? $ return [ ‘session’ ][ ‘name’ ] : null ;
if (!isset($error) && isset($key) && isset($user))
<
setcookie( ‘fmkey’ , $key, time() + 3600 * 24 * 730, ‘/’ , ‘.’ .$_SERVER[ ‘HTTP_HOST’ ]);
setcookie( ‘fmuser’ , $user, time() + 3600 * 24 * 730, ‘/’ , ‘.’ .$_SERVER[ ‘HTTP_HOST’ ]);
setcookie( ‘scrobb’ , ‘on’ , time() + 3600 * 24 * 730, ‘/’ , ‘.’ .$_SERVER[ ‘HTTP_HOST’ ]);
$a = doShake($user, $key, $time, CLIENT_ID, CLIENT_VERSION, API_KEY, API_SECRET_KEY);
header( ‘Location: /scrobb/’ );
>
else
<
echo $error;
>
>

//Начали играть!
if (isset($_POST[ ‘nowplaying’ ], $_COOKIE[ ‘fmkey’ ], $_COOKIE[ ‘fmuser’ ], $_COOKIE[ ‘fmsess’ ]))
<
$artist = isset($_POST[ ‘artist’ ]) ? urldecode($_POST[ ‘artist’ ]) : ‘Undefined’ ;
$song = isset($_POST[ ‘song’ ]) ? urldecode($_POST[ ‘song’ ]) : ‘Undefined’ ;
$duration = isset($_POST[ ‘duration’ ]) ? urldecode($_POST[ ‘duration’ ]) : ‘Undefined’ ;
setcookie( ‘fmtime’ , $time, time() + 600, ‘/’ , ‘.’ .$_SERVER[ ‘HTTP_HOST’ ]);
echo $playnow = nowPlaying($_COOKIE[ ‘fmsess’ ], $artist, $song, $duration);
if (!strstr($playnow, ‘OK’ ))
<
echo doShake($_COOKIE[ ‘fmuser’ ], $_COOKIE[ ‘fmkey’ ], $time, CLIENT_ID, CLIENT_VERSION, API_KEY, API_SECRET_KEY);
//$playnow = nowPlaying($_COOKIE[‘fmsess’], $artist, $song, $duration);
>
>

//Отправляем на last.fm
if (isset($_POST[ ‘submission’ ], $_COOKIE[ ‘fmkey’ ], $_COOKIE[ ‘fmuser’ ], $_COOKIE[ ‘fmsess’ ]))
<
$artist = isset($_POST[ ‘artist’ ]) ? urldecode($_POST[ ‘artist’ ]) : ‘Undefined’ ;
$song = isset($_POST[ ‘song’ ]) ? urldecode($_POST[ ‘song’ ]) : ‘Undefined’ ;
$duration = isset($_POST[ ‘duration’ ]) ? urldecode($_POST[ ‘duration’ ]) : ‘Undefined’ ;
$starttime = isset($_COOKIE[ ‘fmtime’ ]) ? $_COOKIE[ ‘fmtime’ ] : time();
echo $submiss = submission($_COOKIE[ ‘fmsess’ ], $artist, $song, $duration, $starttime);
if (!strstr($submiss, ‘OK’ ))
<
echo doShake($_COOKIE[ ‘fmuser’ ], $_COOKIE[ ‘fmkey’ ], $time, CLIENT_ID, CLIENT_VERSION, API_KEY, API_SECRET_KEY);
//$submiss = submission($_COOKIE[‘fmsess’], $artist, $song, $duration, $starttime);
>
>

* This source code was highlighted with Source Code Highlighter .

Scrobbler last fm windows

Краткое описание:
Скробблинг музыки для Last.fm.

Описание:
Простой и лёгкий аналог официального приложения от Last.fm, скробблит музыку которую вы слушаете на своем телефоне.

Требуется Android: 4.0.3 или более поздняя
Русский интерфейс: Нет

Скачать: Версия: 1.0.3
Scrobb for Last.fm_1.0.3.apk ( 191,78 КБ )

Сообщение отредактировал Doppelgänger — 25.06.16, 20:08

Scrobb for Last.fm только русская версия: 1.0.3 Scrobb+for+Last.fm_1.0.3.Rus.apk ( 194,1 КБ )

проверить не могу,в соц. сетях не состою

Читайте также:  Linux terminal server windows clients

Neutron Music Player
Poweramp
Stellio Плеер
Плеер мечты
GoneMAD Music Player
Jet Audio
P.S.: Если Ваш плеер поддерживает приложение «Scrobb for Last.fm» напишете об этом, пожалуйста, в теме или мне в ЛС.

Сообщение отредактировал Doppelgänger — 05.02.17, 22:07

А приложение умерло?
Или просто не обновления не требуются?)) У меня с последней (8.0.1) версией JetAudio полет отличный!

Сообщение отредактировал uzeerpc — 15.01.17, 22:34

Информирую, что с Neutron Music Player полет отличный!
Upd: Нет, не отличный. Зайдя сегодня на Ласт увидел что всю ночь скробблился один трек, причем плеер был отключен (даже настройка «Работать в фоновом режиме»). С Simple Last.fm Scrobbler такой проблемы нет.

Сообщение отредактировал uzeerpc — 03.03.17, 13:59

Приложение работает в фоне? То есть, я послушал альбом в PowerAmp и открыл Scroball, по идее должен заскробблить прослушанные треки. Так?

Сообщение отредактировал Death_Blooms — 17.10.17, 08:55

Death_Blooms, да не надо ничего открывать, в фоне скробблит.

Сообщение отредактировал uzeerpc — 08.03.20, 14:36

Simple Last.fm Scrobbler — еще больше интеграции

Ужасно не люблю всякие социальные сети, вконтакте там всякие, одноклассники и прочие им подобные секты. Но очень люблю самую разную статистику. Чем ее больше, тем интереснее. Вот поэтому, несмотря на свою не любовь к социальным сервисам, все же зарег.

Ужасно не люблю всякие социальные сети, вконтакте там всякие, одноклассники и прочие им подобные секты. Но очень люблю самую разную статистику. Чем ее больше, тем интереснее. Вот поэтому, несмотря на свою не любовь к социальным сервисам, все же зарегистрирован на last.fm. Именно поэтому, когда решил попробовать слушать музыку с моего HTC Hero, то сразу же полез в Google Market и на форум last.fm. После недолгих поисков выяснил, что существуют две программы под Android OS, которые взаимодействуют с этим онлайн сервисом. Погонял обе, сравнил, а теперь об одной расскажу и всем читателям droidnews.

Свой выбор я остановил на Simple Last.fm Scrobbler. Все, чем она занимается — пристально следит за тем, что вы слушаете, собирает об этом информацию, которую потом отправляет на last.fm, где вам покажут самую разную статистику о ваших музыкальных предпочтениях.

Посмотрите на скриншот. В левой части вы видите пример окна с кешем программы. Там перечислены последние прослушанные мной песни, которые она смогла заскробблить. В правой части отображается окно статуса, где имеется информация о моем профиле на last.fm, о времени и названии последней заскроббленной песни, о количестве песен в кеше, об общем количестве проигранных треков и информация о количестве посланных сигналов «сейчас играет». Причем, как видно по закладкам этого окна, программа может взаимодействовать еще и с libre.fm.

В настройках же мы можем (да и этого не избежать) указать свой логин и пароль на ласт.фм, выбрать какие музыкальные плееры, установленные в системе, должны подхватываться программой. Далее можно выбрать момент, с которого трек считается заскроббленным (30% трека проиграно, 50% и т.д.), после идут настройки профилей: обычного и энергосберегающего. В них можно выбрать, стоит ли отсылать уведомления «сейчас играет», выбрать частоту отправки результатов заскроббленных треков (например, после каждого трека или после каждых 10 треков или после проигрывания альбома целиком), можно выбрать при каком типе подключения к сети отсылать собранную информацию (gprs/wi-fi), и запретить отслыку, если вы в роуминге. Тогда программа будет копить информацию в кеше до тех пор, пока вы не разрешите все отправить. Ну и, конечно же, есть возможность принудительной отправки набранной информации на сервер — вручную.

Читайте также:  Windows 10 spdif passthrough

Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.

Скробблим треки в Last.fm с мобильного устройства

В этом посте я хотел бы предложить свой метод отправления музыки на Last.fm с мобильного устройства (коммуникатор, КПК, телефон) без использования на нём интернета.

Проблема
Легко скробблить на last.fm треки с компьютера. Для этого есть множество программ (я, например, использую Rhythmbox). Но достаточно большую часть музыки мы слушаем на мобильном устройстве. Хотелось бы и с него отправлять музыку на сайт.
При этом желательно не использовать интернет на мобильном устройстве, т.к., во-первых, интернет не везде доступен, а во-вторых, он недешев (особенно, если вы, например, поехали отдыхать в Турцию и взяли с собой КПК как плеер).

Идея решения
Используем на мобильном устройстве плеер, умеющий писать лог-файл прослушанных композиций (я, например, пользуюсь MortPlayer). Далее, этот лог-файл переносим на компьютер и отправляем на Last.fm с использованием скрипта на Python, о котором ниже.

Требования к системе
1. На мобильном устройстве нужен плеер, умеющий писать лог-файл прослушанных композиций. Формат лог-файла должен быть «день-месяц-год час: минута: секунда исполнитель — композиция — альбом», например:

14-01-2008 21:17:45 Sean Paul — Like Glue — Dutty Rock
14-01-2008 21:21:43 Sean Paul — Get Busy — Dutty Rock

Остальные требования к компьютеру (с которого будем скробблить):
2. Linux.
3. Rhythmbox с плагином Last.fm (в последних версиях поставляется вместе с программой, но нужно его включить и настроить логин/пароль доступа к сервису).
4. Python.

Порядок действий
1. Переносим на компьютер лог-файл (например, вставляем карту памяти с коммуникатора).
2. Запускаем скрипт scrobble.
Всё 🙂

«Фичи» скрипта
1. Проверка появления треков на личной странице last.fm (сверяется счетчик прослушанных композиций).
2. Возможность выдать таблицу прослушанных композиций, сгруппированных по исполнителю, со счетчиками прослушивания (удобно, например, если вы вернулись издалека и хотите посмотреть, что чаще всего вы слушали на отдыхе).
3. Фильтрация композиций, которые звучали менее минуты.

Конфигурационные параметры (например, путь к лог-файлу) настраиваем в начале текста скрипта.

UPD 29.07.2008
В связи с недавним обновлением интерфейса Last.fm скрипт нужно изменить: а именно, регулярное выражение на строке 219

pattern = re.compile(‘Tracks played:\W* \W*(\d+),(\d+) ‘)
нужно заменить на

— Это мой первый P.оS.т на хабре. Пожалуйста, не судите строго.

Оцените статью