16Jul/090

Goldenblog twitter verseny – devel view

Must read: Using the Twitter API with PHP and PEAR.

Idén először rendezték meg a Goldenblog twitter versenyt ehhez készült a netninja.hu -n egy miniapp a twitter apira építve, ami a szavazatokat számolta. Egy kicsit magamnak egy kicsit azoknak akik twitter apira akarnak épiteni, összeszedtem a sarok pontokat, felmerült problémákat.

Desc: alkalmazás, ami leszedi a #gbtv taggel ellátott tweeteket, kiszűrni a szavazatokat @goldenblog Közönségszavazás #gbtv @elsonev @masodiknev @harmadiknev, kiértékelni a szavazatot, első helyre irt nick 3 pont, második helyre irt nick 2 pont, harmadik helyre irt nick 1 pont. Feltétel volt még, hogy csak az első szavazat számít, a szavazó első tweetjének dátuma július elseje előtti legyen.

Cél: lehetőseget biztosítani arra, hogy versenyzők egyenlő feltételek mellett tudjanak mozgosítani a szavazat állásának ismeretében.

Környezet: php, postgres, twitter api, wordpress (csak megjelenítés).

A Project:  A nagybetűs project három modulból állt,

  1. twitter api műveletek,
  2. szavazat érvényesítés és számolás,
  3. megjelenítés

Twitter api modul: Két dologra kellett használnom a twitter apit:

  1. search (#gbtv),
  2. user adatok lekérése

Szerencsére a twitter api egyszerű mint egy bot, csak arra kell figyelni, hogy az api rate limiteket betartsuk.

twitter api search: Nagyon fontos észben tartani, hogy a twitter search pár napra visszamenőleg   keres. Ha ennél nagyobb időintervallumot akarsz használni mentened kell a találati listát. Szintén fontos, hogy a userek törölhetik a tweetjeiket (status update), nagyon könnyen előfordulhat, hogy hip-hop, eltűnik egy tweet. Kihívás lehet még, hogy a search oldalakra bontja a találati listát és egy találati oldalra maximum 100 találatot rak ki. A találati lista lapozható a page paraméterrel. Első adat építésnél érdemes végiglapozni a találati listát, hogy ne hagyjunk le egyetlen fontos tweetet se (api rate limit!). Az induló adatbázis után már használd since_id: paramétert. Ebből következik, hogy a keresést mindig egy sql queryvel kezdtem, ami megmondta, mi az utolsó lementett tweet id.

twitter api user: Nem egy rakétatudomány, de fontos észben tartani, hogy twitter alapvetően a screen namere épit sok mindent, de ezt a user megváltoztathatja, tárold a user ID-it is minden esetben és lehetőség szerint ehhez az adathoz köss minden egyéb adatot, funkciót.

És persze a user törölheti is magát, ami okozhat pár kellemes percet, ha épp "hétfőd" van.

A név változtatás elméletileg csalásra is adhat lehetőséget, de nem találkoztam ilyennel vagy nem bukott le az illető.

(Ha most arra gondolsz, hogy minden twitter api művelet eredményét tárold le lokálisan, akkor ugyanarra gondolsz, amire én jutottam a project alatt. Egy baromi nagy adatbázis, ami limitált ideig létezik. Akár fejlesztői rémálomnak is beillene, ha nem tudnánk azt, hogy figyelni kell az adatok elvesztésére.)

A twitter api 150 user adat lekérést engedélyez egy óra alatt, ezért különösen fontos, hogy ne hibázd el a lekéréseket, különben várhatod a következő óra fordulót (én úgy vettem észre, hogy ez az óraforduló xx:04 perc körül van). Az első tweet dátumának lekérésre nagyon költség igényes, legalábbis nem találtam egyszerűbb modszert, mint a user updatejeinek végiglapozását és az utolsó tweet kikeresése. Figyelembe véve, hogy pl. @hh is szavazni fog (10k+ update), itt is megmaradt a kézi vizsgálat, annyival megkönnyítve a dolgot, hogy a user regisztráció idejét figyeltem, és ha július 1 előtti volt, akkor automatikusan érvénytelenként tároltam le a szavazatot. Szintén segítségképpen megjelenítésre került az updatek száma, illetve az egy updatetel rendelkező userek szavazatai is érvénytelenek lettek automatice.

A project legnagyobb kihívása a userek által termelt typok, jófejségekből beírt adatrongálások kivédése volt. Ezekre feleslegesnek tartottam bármilyen ellenőrzést is írni, egyszeűbb volt átnézni a bejövő adatokat és kézzel korrigálni.

A szavazat számolás egy egyszerű string->array formázást követő pozíció keresés volt. Az alkalmazott adatbázis struktúrára még nem táláltak ki megfelelő jelzőt, gyors volt, de nem a legszebb, maradjunk ennyiben.

A megjelenítésnél fontos volt, hogy WordPressben szeretném megjeleniteni az adatokat. A wordpressbe integrálni meglepően könnyű volt, ezért probléma mentes volt.

Röviden tömören twitter api rocks.

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.