2009/01/29

Iwiw képek rss-ben

Figyelem! kocka-bejegyzés következik!!! :)

Egyik nap egy iwiwes galéria nézegetése közben teljesen véletlenül észrevettem, hogy a firefox címsorában ott figyel az rss-ikon.  Rákattintottam és láss csodát: az adott galéria tartalmát kaptam vissza rss-ben.  Gyorsan be is akartam rakni a google readerbe, ám szembekerültem azzal a problémával, hogy ugye az iwiw csak regisztrációval és jelszóval elérhető, így akárki, még a google reader sem láthatja illetéktelenül a galéria rss-ét.

Rövid keresgélés után, mivel nem találtam megoldást, gyorsan összeütöttem egy php-s megoldást, mely a php-be épített curl modult használja.  A körítést nem írom le, a lényeg a dologban az, hogy a curl modul csinál egy bejelentkezést az iwiw rendszerébe, a szükséges sütiket (cookies) eltárolja ugyanúgy, mint egy böngésző, majd ezek után kéri le a képek rss listáját.

Következzék a kódrészlet:

<?php
//...
// "böngésző" inicializálás
$ch = curl_init();

// böngésző beállításai. a legfontosabb a sütiket tároló fájl, ezt tudnia kell létrehoznia a php-nek.  ezenkívül azt hazudjuk az iwiw-nek, hogy egy firefox böngésző vagyunk... :)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/path/to/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/path/to/cookies.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5');

// bejelentkezés az iwiw-be.  itt a lényeg a POST változók tartalma! (az emailcímnél a @ encode-olva van: %40)
curl_setopt($ch, CURLOPT_URL, 'http://iwiw.hu/pages/user/login.jsp?method=Login');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'email=email%40cim.hu&password=JELSZO&httpslogin=false&loginradio=1');
curl_exec($ch);

// ha megvolt a bejelentkezés, le lehet kérni a kép listát. a $userid változó a felhasználó IWIW ID-je, akire kíváncsiak vagyunk
curl_setopt($ch, CURLOPT_URL, 'http://iwiw.hu/pages/image/albumgallery.jsp?userID=' . $userid . '&albumID=');
curl_setopt($ch, CURLOPT_POST, FALSE);

$html = curl_exec($ch);

// böngésző bezárás
curl_close($ch);

// egyszerűen kiírjuk a kimenetre, megfelelő headerrel
header("Content-Type: application/rss+xml; charset=utf-8");
echo $html;

?>

Így már bármilyen rss olvasónak átadhatjuk, persze figyelve arra, hogy illetéktelen kezekbe azért ne kerüljön, mert mégiscsak a saját felhasználónevünkkel lépeget be a curl modul.  Sajnos azt vettem észre, hogy a google reader-nek nem tetszenek az iwiw-feed által visszaadott <media:thumbnail url="..." /> és <media:content url="..." /> tagek, ezeket nem jeleníti meg, így haladó(bb) felhasználók megpróbálkozhatnak php-ben mondjuk xmlreader-rel valami más formátumot csiholni a letöltött feed-ből, vagy további fejlesztési lehetőség (én megcsináltam ezt is), hogy csak egyszer jelentkezünk be, majd a sütikből a legközelebbi alkalommal már észreveszi a rendszer, hogy jártunk ott és automatikusan beenged.  itt arra kell figyelni, hogy azért nem árt leellenőrizni, hogy időközben valamiért nem dobott-e ki az iwiw (ez előfordul néha), és ha igen, újból jelentkezzen be a php.

jó iwiwezést! :)

1 megjegyzés:

borsos írta...

le a kalappal, muxik az iwiw kod! Koszi!