Cand am primit prima data invitatie pe Hi5 (acum cativa ani) m-am gandit: "Ce-o mai fi si asta?". Ca sa aflu, mi-am facut cont. Am completat cateva informatii, am pus 10 poze si gata. Pe urma am mai intrat in cont doar cand am primit alte invitatii. N-am fost niciodata fan Hi5, dar imi place sa ma uit la pozele prietenilor (pe unii dintre ei asta e singurul mod in care ii mai vad:D). Am pierdut ore bune uitandu-ma la pozele prietenilor si ale prietenilor prietenilor si ale prietenilor prietenilor prietenilor etc...
De aceea Hi5 a fost prima alegere cand am vazut enuntul temei 1: analiza unor comunitati web. Trebuia sa extrag cunostinte referitoare la relatiile sociale din cadrul comunitatii. Prima idee a fost sa parsez efectiv pagina web a profilului unui utilizator (am pornit chiar de la mine). Am folosit cunostintele despre DOM&SAX si am ales sa parsez cu SAX (deoarece nu trebuia sa fac cine stie ce prelucrari de date, ci doar sa le afisez; asadar pe masura ce se declanseaza un eveniment - apare tag-ul corespunzator - se extrage informatia si se afiseaza). Problema a fost insa ca pagina nu era corecta din punct de vedere al sintaxei XML: aparea caracterul & care este strict interzis in XML.
Asa ca am cautat alte metode, stiind ca unele comunitati ofera API-uri pentru extragerea informatiilor. Am descoperit HI5 API care este deocamdata in stadiul de beta - a fost lansat abia in martie anul acesta (lucky me:P). Acest API permite extragerea de informatii prin 2 metode: folosind SOAP (Simple Object Access Protocol) sau folosind REST (REpresentational State Transfer). SOAP este un protocol prin care serviciile web schimba informatii, formatul mesajelor folosind sintaxa XML. REST, asa cum a fost el initial definit, se bazeaza pe o serie de principii dintre care cel mai important este reprezentat de conceptul de resurse: o resursa mentine anumite informatii si este identificata printr-un URI (Universal Resource Identifier) unic.
Eu am folosit REST pentru rezolvarea temei. Practic tot ce am facut consta in urmatoarele: in primul rand am creat un parser de tip SAX, caruia i-am dat sa parseze un URL (Universal Resource Locator - locatia unde se afla resursa dorita). Totodata am mentinut si un vector de URL-uri ale prietenilor deja "vizitati" - pentru a nu ajunge la cicluri (daca un user are un prieten care a mai fost afisat, nu il mai introduc in vector). La rulare am dat de alta exceptie (dupa parsarea mai multor prieteni): unul dintre URL-uri continea caractere non-Unicode. Am tras concluzia ca paginile web sunt facute cam in graba, bazandu-se pe faptul ca browserele sunt suficient de "destepte" incat sa treaca cu vederea aceste mici "scapari".
Revenind la URL-ul ce l-am trimis spre parsare, linia de cod este:
parser.parse("http://api.hi5.com/rest/profile/foaf/id")
Radacina pentru toate resursele este http://api.hi5.com/rest/. De exemplu, pentru a obtine lista de albume a unui utilizator URL-ul este http://api.hi5.com/rest/feed/albumlist/id. Din pacate nu exista resurse pentru extragerea comentariilor.
ID-ul utilizatorului din URL-urile de mai sus se poate afla din adresa paginii sale de profil: http://hi5.com/friend/p8260414--Micky--html sau, daca utilizatorul este logat, http://hi5.com/friend/profile/displaySameProfile.do?userid=8260414. In aceste exemple ID-ul este 8260414.
In concluzie, aceasta tema m-a ajutat sa descopar noi notiuni pe care le pot folosi pentru a dezvolta aplicatii pentru Hi5 - si pentru orice alte site-uri compatibile cu standardul OpenSocial. Acum imi mai trebuie doar idei de aplicatii:P
MIrror: CItiti mailul Yahoo in Gmail
Acum 17 ani