Zachciało mi się ostatnio słuchanej piosenki z serwisu Last.fm jako status opisowy w EKG.
Jako że nikt nie napisał takiego skryptu, musiałem spłodzić go sam. Na dodatek na koncie shell, gdzie stoi EKG, nie ma wbudowanej obsługi skryptów Pythona, dostępu do kompilatorów też nie.
Jednak wystarczyło trochę pokombinować - wyszło nawet całkiem ładnie. No, ale żeby dalej nie zanudzać napiszę Wam, jak stworzyć takie cudo.
Po pierwsze potrzebujemy jakiegoś hostingu. Gdy takowy znajdziemy, w zależności od posiadanej wersji PHP, tworzymy skrypt:
Wersja dla PHP4: (bez wbudowanej obsługi plików XML)
Tutaj będzie potrzebny nam skrypt LastRSS, który możemy pobrać z tej strony. Skrypt prezentuje się następująco:
<?php include "lastrss.php"; $nick = "kubz"; # <- NASZ NICK NA LAST.FM $rss = new lastRSS; $rss->cache_time = 0; $rss->cp = "UTF-8"; $rss->date_format = "l"; $rssurl = "http://ws.audioscrobbler.com/2.0/user/".$nick. "/recenttracks.rss"; if ($rs = $rss->get($rssurl)) { $f = $rs[items][0][title]; $f = str_replace(chr(128), "-", $f); # zamiana dziwnych #znaczków na myślnik, wersja dla domyślnego kodowania: ISO-8859-2 $f = str_replace(chr(226), "", $f); # j.w. $f = str_replace(chr(147), "", $f); # j.w. echo "Last.fm: ".$f; } else { echo 'Error'; } ?>
<?php $nick = "kubz"; # NASZ NICK NA LAST.FM $url = "http://ws.audioscrobbler.com/2.0/user/".$nick."/recent". "tracks.rss"; require('rss_fetch.inc.php'); $rss = fetch_rss($url); $f = $rss->items[0]['title']; $f = str_replace("?", "-", $f); # zamiana długiego myślnika na #krótszy, przecież EKG i GG nie obsługuje UTF-8... echo "Last.fm: ".$f; ?>
<?php function getLastTrack($username, $line = 14) { $file = file('http://ws.audioscrobbler.com/2.0/user/'.$username.'/recenttracks.rss'); echo str_replace('?','-',mb_convert_encoding(trim(preg_replace("/(<title>|<\/title>)/i","",$file[$line-1])),'ISO-8859-2','UTF-8')); } getLastTrack('marines'); ?>
#!/bin/sh ADRES="http://..." # adres do naszego skryptu wget -q $ADRES -O /tmp/lastfm LAST=`cat /tmp/lastfm` echo "/away "$LAST > ~/.gg/ekg-pipe rm /tmp/lastfm
chmod +x lastfmscreen ekg -c ~/.gg/ekg-pipe
timer -a last */60 exec ./lastfm