2008
MusicBot - czyli pokaż innym, czego słuchasz ;)
...dzisiaj, drogie dzieci, nauczymy się umieszczać aktualnie odtwarzaną piosenkę na naszym Joggerowym blogasku. Otóż: dawno, dawno temu...
Oj, sporo czasu minęło od momentu, w którym rozpocząłem zabawę ze skryptami w Amaroku. Zaczęło się dosyć niewinnie, bo od przerobienia skryptu wyświetlającego aktualnie słuchaną piosenkę na wyświetlaczu klawiatury Logitech G15 - był napisany bodajże w Perlu. Trochę później (a może i wcześniej?) również przerabiałem skrypt, pythonowy, który pozwalał organizować konferencje przy użyciu Google Talk i Gadu-Gadu jednocześnie (na potrzeby pewnego klanu ;)). Od tego czasu polubiłem Pythona, w którym napisałem bota dla węgierskiej wersji pewnej polskiej gry MMORPG ;) Pewnego dnia postanowiłem połączyć to, czego się nauczyłem z klawiaturą z tym, co mnie zafascynowało w Pythonie - tak więc napisałem prosty skrypt, który pozwala na wyświetlanie w statusie na Jabberze aktualnie odtwarzaną piosenkę z Amaroka.
Skrypt łączy się z serwerem Jabbera poprzez bibliotekę TelnetController, którą znalazłem gdzieś w internecie. Na początku wykorzystywałem go do łączenia się z jabber.autocom.pl, jednak w momencie, kiedy ten serwer przeżywał swoje ostatnie dni, ja miałem problemy z kartą dźwiękową, tak więc szybkie przenoszenie konta na inny serwer nie miało większego sensu. Jednak niedawno, dzięki dexterowi, udało mi się zmusić moją X-Fi do współpracy z 32-bitowym Linuksem (niech żyje OSS4!), tak więc poczułem wewnętrzną potrzebę uczynienia skryptu ponownie działającym. co też zacząłem czynić.
Pierwszym problemem, z którym się spotkałem, był wybór nowego serwera. Pierwszą, jakby oczywistą oczywistością było wybranie sukcesora starego serwera, czyli jabster.pl. Zarejestrowałem się, zmieniłem zmienne w skrypcie, odpalam... i nic. MusicBot był offline tak samo, jak przed odpaleniem. Odpaliłem telneta i ręcznie wklepałem kod - dostałem informacje o braku autoryzacji. Trochę się jeszcze pobawiłem z konsolą XML w Psi, ale bez większego powodzenia - nawet wklejanie XMLa prosto z konsoli XML do telneta nie pomagało. Domyśliłem się, że problem tkwi gdzieś w szyfrowaniu, więc zabrałem się za szukanie mniej restrykcyjnego serwera - skoro autocom taki był, to jakiś jeszcze musi się znaleźć. ubuntu.pl odpadło z tego samego powodu, zaś przy następnym serwerze się udało - był to jid.pl.
Zadziałał. Oto MusicBot. Jeżeli założyliście już konto na jid.pl (lub innym serwerze, na którym logowanie po porcie 5222 bez zabezpieczeń działa w identyczny sposób - ze względu na brak szyfrowania polecam wybranie innego hasła niż zwykle), otwórzcie ściągnięty plik i ustawcie odpowiednie dane w zmiennych na początku pliku. Odpowiednio - zmienna login przechowuje część JIDa przed małpą (w moim przypadku: 'musicbot'), password - chyba oczywiste, server - w moim przypadku 'jid.pl' a w waszym zwykle to co po małpie oraz jid - Wasz codzienny JID Jabberowy.
W tym momencie warto spróbować odpalić skrypt ręcznie, z konsoli, i sprawdzić, czy zarejestrowane przez Was konto staje się online. Jeśli tak - możemy przejść dalej ;) W konsoli przechodzimy do katalogu, w którym zapisany jest ściągnięty plik musicbot.py i wpisujemy następującą komendę: tar -cf musicbot.amarokscript.tar musicbot.py . Spowodowała ona utworzenie archiwum TAR z MusicBotem o rozszerzeniu amarokscript.tar - czyli dokładnie takim, jakiego życzy sobie Amarok przy instalacji skryptów. Odpalamy właśnie teraz wilczka i wchodzimy w "Menedżer skryptów" (w menu "Narzędzia"). Po kliknięciu na "Zainstaluj skrypt" wybieramy świeżoutworzony plik musicbot.amarokscript.tar. Po zainstalowaniu wybieramy z listy pozycję "musicbot.py" i klikamy na "Uruchom". Od tego momentu na naszym nowym koncie Jabbera w statusie będzie pojawiać się aktualnie odsłuchiwana piosenka :)
Dobrze, to jak teraz dodać te dane do Joggera? Potrzebny będzie własny serwer z obsługą PHP, aczkolwiek jeżeli będzie takie zapotrzebowanie mogę udostępnić skrypt na własnym serwerze.
W pierwszej kolejności logujemy się na konto MusicBota z jakiegoś normalnego komunikatora - Psi, Gaim, czy cokolwiek innego - to tylko Wasz wybór ;) Dodajemy do rostera i autoryzujemy kontakt bot@jabberland.com, a następnie wchodzimy na stronę http://jabberland.com/status-en/ i wypełniamy pola w następujący sposób: "Your JID" - JID Twojego MusicBota. W "Information you want to show" wybieramy "Status message", a następnie "Plain format. Output the status message like you enter it in your favorite client.". Kopiujemy tekst w czerwonej ramce po URL: i gdzieś zapisujemy.
Następnym krokiem jest przygotowanie obrazka przedstawiającego pauzę - możecie wykorzystać ten. Nazywamy go "paused.png" i wysyłamy jako plik na Joggera. Teraz zaczyna się zabawa z własnym serwerem: pobieramy ten ten skrypt PHP, do zmiennej $jaburl w pierwszej linijce podstawiamy zapisany wcześniej adres URL z ramki na stronie. Tak przygotowany plik zapisujemy i wysyłamy na serwer.
Aby skrypt zadziałał na naszym Joggerze, musimy przygotować dla niego miejsce. Tam, gdzie ma pojawić się skrypt, proponuję wstawić tag div, bądź span, jednak równie dobrze może to być p albo h1. Wystarczy tylko, że przypiszemy temu tagowi id, np. "musicbot". Następnie, do sekcji head strony dodajemy znacznik <script type="text/javascript" src="http://seaven.aplus.pl/dos/status.php"/>, zaś do onload znacznika body: updateStatus(document.getElementById('musicbot'));
Zdaje się, że to już wszystko :) Jeżeli macie jakieś zastrzeżenia lub propozycje - piszcie. Skrypt oczywiście na licencji GPL, zaś w TODO mam automatyczną autoryzacje osób, które o nią proszą (aktualnie trzeba samemu logować się z komunikatora i te autoryzacje akceptować) oraz może jakieś szyfrowanie. Ciao! :)
Jabber: Dostępny



17:21:37
pytanie: nie prosciej last.fm?