Moduł Net::Gadu

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Co to jest

Net::Gadu to moduł autorstwa naszego rodaka Marcina Krzyżanowskiego - http://www.hakore.com/. Moduł ten wykorzystuje bibliotekę libgadu.so która jest częścią projektu EKG. Dzięki temu modułowi jesteśmy w stanie zrobić wiele użytecznych rzeczy począwszy od zalogowania się na konto, wysyłania wiadomości, zmiany statusu, wyszukiwania osób oraz obsługi wielu innych zdarzeń.

Download

Zależności

Instalacja w systemie UNIX'owym

Po rozpakowaniu modułu wydajemy polecenie

perl Makefile.PL make make install

Sprawdzamy, czy został pomyślnie zainstalowany, pisząc jednolinijkowca: perl -e 'use Net::Gadu' Pomyślne wykonanie programu (żadnych komunikatów) daje nadzieję, że moduł został zainstalowany poprawnie i będzie działał. Jeżeli wszystko poszło zgodnie z planem to możemy już korzystać z możliwości naszego nowego modułu.

Konstruktor

$gg = new Net::Gadu();

Mogą być również użyte dodatkowe parametry :

Dostępne metody

Przykład

Pierwszym naszym programem będzie bardzo "surowy", tekstowy komunikator GG, korespondujący z jednym numerem. Przykładowy program wykorzystujący nasz moduł mógłby wyglądać tak

use strict; use Net::Gadu; use Proc::Fork; my $gg = new Net::Gadu(async=>0); my $mess; $gg->login("4377482","tajne_haslo_do_konta") or die "Login error\n"; #Proces rodzicielski parent { while (1) { #Sprawdzamy czy zaszlo zdarzenie if ($gg->check_event()==1) { my $e = $gg->get_event(); my $type = $e->{type}; #Jeżeli nie możemy się połączyć if ($type == $Net::Gadu::EVENT_CONN_FAILED) { die "Connection failed"; } #Jeżeli otrzymalismy wiadomość if ($type == $Net::Gadu::EVENT_MSG) { print "___________________________________________________________\n"; print "\nWiadomosc od: ".$e->{sender}."\n".$e->{message}."\n"; print "___________________________________________________________\n\n"; } } else { #Proces potomny child { $mess=<>; chomp $mess; #Wysyłamy wiadomość $gg->send_message_chat("3890516","$mess"); }; } } }

Dialog naszego programu ukazany na terminalu oraz w okienku EKG

Perlowe Gadu Gadu EKG
Terminalowe GG :PEKG

Kolejnym prostym zastosowaniem możliwości modułu jest przeszukiwanie katalogu publicznego zarejestrowanych osób oraz wyciąganie z niego osób spełniających interesujące nas kryteria. Przypuśćmy, że chcemy wyszukać użytkowniczki o nicku "Blondynka" i imieniu "Ania" ;). Oto prosty program pozwalający nam to zrobić.

use strict; use Net::Gadu; use Data::Dumper; my $gg = new Net::Gadu(async=>0); $gg->login("4377482","tajne_haslo_do_konta") or die "Login error\n"; $gg->search("","Blondynka","Ania","","","female",0); while (1) { while ($gg->check_event() == 1) { my $e = $gg->get_event(); my $type = $e->{type}; if ($type == $Net::Gadu::EVENT_CONN_FAILED) { die "Connection failed"; } if ($type == $Net::Gadu::EVENT_DISCONNECT) { die "disconnect"; } if ($type == $Net::Gadu::EVENT_SEARCH_REPLY) { print Dumper($e->{results}); #Zrzucamy wynik $gg->logoff(); #Wylogowujemy exit(1); #Wychodzimy z programu } } }

Wynikiem wykonania naszego programu będzie zrzut tablicy ze szczegółowymi informacjami dotyczącymi naszych blondynek

Zrzut
Zrzut struktury danych, miłego klikania xD

Dodatkowe informacje

Ciekawym zastosowaniem tego modułu mogłyby być różnego rodzaju warianty z zastosowaniem baz danych, gromadzeniem informacji na temat użytkowników, czy wszelkiego rodzaju spam.

Autor opracowania

Adrian Sielski

Email: adrian.sielski@gmail.com

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.