Ładowanie...
dos Jogger
...czyli pomyślenia, przemyślenia i te sprawy.
CLOSED
Ikonka Jabber: Dostępny
seba.dos1 w Poczcie Google

Super Derpy: Muffin Attack
http://mytimeorganizer.com/ | http://www.pinkiedb.com/

Google Google Yahoo
29 marca
2008
16:54:06

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! :)

Infobox
Wpis został dodany na poziomie 0, co oznacza, że .
ID wpisu: e388080 Trackback

Komentarze:

1
  D4rky 29 marca 2008
17:21:37

pytanie: nie prosciej last.fm?

2
  dos 29 marca 2008
17:26:51

Może i prościej, ale nie ma tej frajdy ;> A na poważnie – w last.fm nie da się pokazać piosenki jako status na Jabberze ;> Dodanie tego do Joggera to tylko dodatek, który można przerobić i pokazywać status dowolnego kontaktu, nie tylko MusicBota. Ale last.fm też mam i pewnie niedługo dodam do tego jogga wyświetlanie danych stamtąd (ale chyba nie będą to piosenki, tylko jakieś statystyki, ale zastanowię się jeszcze :) )

3
  wikiyu 29 marca 2008
18:39:16

nie prościej żeby ten skrypt pythona robił np
wget skrypt.php?nazwa=nazwa%20piosenki&amp;autor=autor%20piosenki
i ten skrypt php żeby już sobie robił to co robi dalej?

4
  dos 29 marca 2008
18:41:49

@wikiyu – najpierw napisałem skrypt dla Jabbera – jakieś pół roku temu. Pomysł na umieszczenie tego na Joggera jest dopiero sprzed kilku dni, a ten wpis to przepis na zrobienie obu tych rzeczy ;) Jakby moim założeniem od początku było wstawienie piosenki na jogga, użyłbym albo last.fm, albo czegoś podobnego do tego co napisałeś :)

5
  dex 30 marca 2008
11:53:29

Prościej to by było, jakby zamiast telnetem łączył się z serwerem biblioteką XMPP dla pythona (patrz: (prawie) mój bot :P ), nie miałby wtedy problemów z szyfrowaniem między innymi.

6
  dos 30 marca 2008
12:53:08

To też w todo – bez tego zapewne nie poradzę sobie z automatyczną autoryzacją :P

7
  dex 30 marca 2008
12:56:09

BTW, wiesz że przez tego bot’a tamta gra MMORPG chyba umarła? Nic nie grając wybiliśmy postacie na najwyższe lvle kasując wszystko co się rusza w tamtym świecie. Był tylko jeden skubaniec ze spacją w nicku… :P

8
  dos 30 marca 2008
13:01:09

Nie jestem przekonany – my kosiliśmy tylko w centrach wszystkich planet, a niektórzy byli nawet trochę dalej niż nasze nienaturalne zasięgi skanerów i broni (sprawdzałem przez telefon ;>) Gra pewnie umarła z innych względów – i tak nigdy oficjalnie nie wystartowała ;>

9
  dos 30 marca 2008
13:01:39

No, a buga zgłaszałem odpowiednim osobom. To też należy zauważyć :P

10
Livio 30 marca 2008
14:24:39

Brrr… Ale oczodajnie tutaj…

11
dos Mobile 31 marca 2008
01:37:00

Wspaniała puenta w dyskusji, nie ma co :-P


Dodaj komentarz:



Nawigacja:

Mądry głupiemu ustępuje I had a dream
napędzane i pędzone przez Jogger Joggera, layout i content by Jogger dos, inspirowane przez Jogger Maję :)