vit$oft freeware home page

scrobbat - dokumentace

English version

Účel programu

scrobbat je dávkový soubor pro odesílání informací o právě poslouchané hudbě na komunitní server Last.fm. Tato činnost se nazývá scrobbling a používá webovou službu definovanou zde.

Skript se může hodit, pokud používáte přehrávač, který není podporován oficiálním klientem Last.fm Scrobbler ani žádným z řady dalších scrobblerů.

Instalace

Níže uvedený kód skriptu překopírujte do souboru scrobbat.php anebo si stáhněte a rozbalte scrobbat.zip. K jeho spuštění je potřeba mít na počítači instalováno PHP. Kvůli fungování funkce curl je nutné v konfiguraci PHP.INI odkomentovat řádek extension=php_curl.dll. Dále je potřeba v instalaci PHP rozbalit knihovnu ID3Tags library, která je ke stažení zde.

Textovým editorem upravte ve skriptu scrobbat.php čtyři definice v jeho záhlaví. Otisk MD5 hesla k vašemu účtu na last.fm můžete zjistit pomocí PHP takto: Spusťte php-cli v konsole a pak napište <?php echo md5('bar');?>, namísto bar ovšem použijte vaše skutečné heslo. Pak ukončete zadávání z konsoly stiskem Ctrl-Z a po dalším stisku Enter byste již měli vidět 32znakový MD5 hash vašeho hesla, který zadejte do definice "MD5PWD".

Používání skriptu scrobbat

Jméno právě vyposlechutého souboru MP3 se zadává jako parametr při spuštění skriptu. Musí mít vyplněny ID3 tagy Artist a Title. Příklad:

php-cli scrobbat.php "/Music/Grunge/Creed - Weathered/Weathered.mp3"

V případě úspěšného odeslání na last.fm skript vrací errorlevel 1. Pokud došlo k chybě, nastaví se errorlevel 0, což se dá využít v dávkovém souboru k opakovanému pokusu o nové odeslání.

Obsah skriptu scrobbat.php

<?php // Script scrobbat.php submits one mp3 file to last.fm define ("LASTFMNAME","foo"); // Login name of your account on last.fm define ("MD5PWD","37b51d194a7513e45b56f6524f2d51f2"); // MD5 hash of password define ("CODEPAGE","CP1250"); // Code page used in ID3 tags of your music define ("GETID3LIB","../getid3/getid3.php"); // Path to getid3.php file $mp3file=@$_SERVER['argv'][1]; if (!$mp3file) die("No input file given\r\n"); include GETID3LIB; $getID3 = new getID3; $info=$getID3->analyze($mp3file); $tagsv1=@$info['tags']['id3v1']; $tagsv2=@$info['tags']['id3v2']; $artist=@$tagsv2['artist'][0]; if (!$artist) $artist=@$tagsv1['artist'][0]; if (!$artist) die("Id3tag 'Artist' not set\r\n"); $uart=urlencode(iconv(CODEPAGE,"UTF-8",trim($artist))); $album=@$tagsv2['album'][0]; if (!$album) $album=@$tagsv1['album'][0]; $ualb=urlencode(iconv(CODEPAGE,"UTF-8",trim($album))); $track=@$tagsv2['title'][0]; if (!$track) $track=@$tagsv1['title'][0]; if (!$track) die("Id3tag 'Title' not set\r\n"); $utit=urlencode(iconv(CODEPAGE,"UTF-8",trim($track))); $trnr=@$tagsv2['track_number'][0]; if (!$trnr) $trnr=@$tagsv1['track_number'][0]; $utrnr=(integer)$trnr; $secs=(integer)@$info['playtime_seconds']; $time=time(); $token=md5(MD5PWD.$time); $Url="http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=bat&v=1.0&u=". LASTFMNAME."&t=$time&a=$token"; $CurlHandle=curl_init(); curl_setopt($CurlHandle, CURLOPT_URL, $Url); curl_setopt($CurlHandle, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($CurlHandle, CURLOPT_TIMEOUT, 15); curl_setopt($CurlHandle, CURLOPT_RETURNTRANSFER, true); $response=(curl_exec($CurlHandle)); if (curl_errno($CurlHandle)) die("CURL error: ".curl_error($CurlHandle)."\r\n"); $resparr=explode("\n",$response); if ($resparr[0]!="OK") die($resparr[0]); $sid=$resparr[1]; $SubUrl=$resparr[3]; $post="s=$sid&a[0]=$uart&t[0]=$utit&i[0]=$time&o[0]=P&r[0]=&l[0]=$secs&b[0]=$ualb&n[0]=$utrnr&m[0]="; curl_setopt($CurlHandle, CURLOPT_URL, $SubUrl); curl_setopt($CurlHandle, CURLOPT_POST, 1); curl_setopt($CurlHandle, CURLOPT_POSTFIELDS, $post); $response=(curl_exec($CurlHandle)); if (curl_errno($CurlHandle)) die("Curl error:".curl_error($CurlHandle)."\r\n"); curl_close($CurlHandle); if (trim($response)!="OK") die ($response); else echo "Submitted to last.fm\r\n"; exit(1); ?>