Php + Taringa Api = Rss


Todo esto surgio cuando me di cuenta que queria un RSS de Taringa, pero solo de la categoria de GNU/Linux. Busque en taringa y solo encontre el rss de todo, pero por categoria nada. Busque en google y seguia en nada. Solo encontre ciertos mensajes que pedian que se agregue la funcion pero nada en concreto.
Al rato vi que taringa, ya hace un tiempo atras, habia implementado una api. Y que esta se podia usar muy facilmente con PHP. Entonces 1 + 1 = 2, ehm digo, Php + Taringa api = Rss por categorias!.
El resto fue solo un poco de prueba y error, y dio como resultado el siguiente codigo:
<?php
$apikey = "********"; #Api key de taringa
$link = 'http://' . $_SERVER['SERVER_NAME'] . '/' . basename(dirname(__FILE__)) ;
$cat = $_GET['cat'];
$opts = array(
'http'=> array(
'method' => "GET",
'user_agent' => $_SERVER['HTTP_USER_AGENT']
)
);
$opts = stream_context_create($opts);
function infopost($id) {
global $opts;
$urlcat = "http://www.taringa.net/api/" . $apikey . "/json/Posts-GetCategories";
$contentscat = file_get_contents($urlcat, false, $opts);
$rsscat = json_decode($contentscat);
}
if ($_GET['tipo'] == 'rss'|| isset($cat) ) {
print("<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<channel>
");
$urlcat = "http://www.taringa.net/api/" . $apikey . "/json/Posts-GetCategories";
$contentscat = file_get_contents($urlcat, false, $opts);
$rsscat = json_decode($contentscat);
$catcat = "cat-" . $_GET['cat'];
$nombrecat = $rsscat->$catcat->name ;
print("<title>Taringa.net - Últimos posts en " . $nombrecat . "</title>
<description>Últimos posts de Taringa.net</description>
<image><title>Taringa.net</title><link>http://www.taringa.net/</link><url>http://i.t.net.ar/images/logo-rss.gif</url></image>
<generator>" . $link . "</generator>
<language>es</language>
<link>http://www.taringa.net/</link>
");
$url = "http://www.taringa.net/api/" . $apikey . "/json/Posts-GetPostList/" . $cat . "/0";
$contents = file_get_contents($url, false, $opts);
$rss = json_decode($contents);
foreach ($rss as $post) {
$postt = $post->title;
$postl = $post->url ;
print("<item>
<title>" . $postt . "</title>
<link>" . $postl . "</link>
<description><a href="". $postl . "">Post" . "</a> <a href="" . $postl . "#comentarios">Comentarios</a></description>
</item>
");
}
print("</channel>
</rss>");
}
elseif ($_GET['tipo'] == 'cat') {
$url = "http://www.taringa.net/api/" . $apikey . "/json/Posts-GetCategories";
$contents = file_get_contents($url, false, $opts);
$cats = json_decode($contents);
print("<html><body>");
foreach ($cats as $cat) {
$catn = $cat->name;
$catid = $cat->id;
print("<p>Categoria:" . $catn . " ID:" . $catid . "</p>");
}
print("</body></html>");
}
?>
Por las dudas, subi el codigo a este link:
Ahora bueno, como se usa?. Simplemente linkeas a http://tuserver.com/rsscat.php?tipo=rss&cat=
Donde
es la id de categoria. Ustedes se preguntaran, ¿de donde obtengo la id?. Bueno, el mismo script php te da una lista con todas las categorias y sus respectivas ids. Simplemente tenes que entrar a:
http://tuserver.com/rsscat.php?tipo=cat
Yo subi una prueba de esto a: http://ligapes2009.site90.com/rss/rsscat.php Usenlo para probar, no hagan Hotlink!
El post esta sacado de la entrada de mi blog, fue un copypaste....