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
Ostatnio słuchana piosenka z Last.fm jako status w EKG
Po uwadze dotyczącej "dziwacznego kodu" w poście bunia zostałem zmuszony do wymyślenia czegoś lepszego i kompatybilnego z PHP4 i PHP5 zarazem. Mało tego! Nie będziemy musieli mieć w systemie obecnego wgeta (ale czy jest taki ktoś?).
Hm.. ale dlaczego napisałeś, że jeden jest dla PHP 4, a drugi dla 5, kiedy to żaden nie jest napisany w 5, a oba zostaną obsłużone i w 4 i w 5?
Napisałem tak, gdyż pod PHP4, które dysponuje nie ma obsługi XMLów i trzeba kombinować, ale dobra, poprawię toto.
Oczywiście, że jest obsługa XML w PHP 4. :)
To że jest to wiem, ale ja na tym serwerze mam jakąś radziecką wersję PHP4 bez obsługi XMLów
IMHO dziwaczny trochę ten kod, ale przyda się :)
Kod okropny, fakt. :)
No cóż, programista PHP ze mnie marny, ważne że ten kod działa ^^”