<?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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KodeGeek &#187; globovision</title>
	<atom:link href="http://kodegeek.com/blog/tag/globovision/feed/" rel="self" type="application/rss+xml" />
	<link>http://kodegeek.com/blog</link>
	<description>Programación, fitness, interés geek</description>
	<lastBuildDate>Sun, 05 Feb 2012 19:12:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Globovision al fin se decidió a poner RSS!</title>
		<link>http://kodegeek.com/blog/2008/11/23/globovision-al-fin-se-decidio-a-poner-rss/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=globovision-al-fin-se-decidio-a-poner-rss</link>
		<comments>http://kodegeek.com/blog/2008/11/23/globovision-al-fin-se-decidio-a-poner-rss/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 16:11:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1295</guid>
		<description><![CDATA[Si, después de tanto tiempo Globovisión se decidió hacerle un cariñito a su website poniendole RSS; No todo es perfecto, por ejemplo el enlace de los Blogs muestra el siguiente error: Notice: Uninitialized string offset: 0 in /web_app/www/globo_core2/blogs.inc.php on line 20 Pero bueno, al menos ya no toca escribir nuestros propios parsers para bajar las [...]]]></description>
			<content:encoded><![CDATA[<p>Si, después de<a href="http://kodegeek.com/2008/06/cerrando-el-rss-de-globovision-no-vale.shtml"><span style="font-style: italic;"> tanto tiempo</span></a> Globovisión se decidió hacerle un cariñito a su website <a href="http://globovision.com/rss.gv.php">poniendole RSS</a>; No todo es perfecto, por ejemplo el enlace de los Blogs muestra el siguiente error:</p>
<p><b>Notice</b>:  Uninitialized string offset:  0 in <b>/web_app/www/globo_core2/blogs.inc.php</b> on line <b>20</b></p>
<p>Pero bueno, al menos ya no toca escribir<a href="http://kodegeek.com/2009/03/rss-de-globovision-est-roto-ii-java-al.shtml"> nuestros propios parsers</a> para bajar las noticias. Supongo que en algún momento corregiran los errores en su sitio web <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.blogalaxia.com/tags/globovision" rel="tag">globovision</a>, <a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a><br />Technorati:<a href="http://technorati.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://technorati.com/tag/globovision" rel="tag">globovision</a>, <a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.to2blogs.com/tag/globovision" rel="tag">globovision</a>, <a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a><br />Del.icio.us:<a href="http://del.icio.us/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://del.icio.us/tag/globovision" rel="tag">globovision</a>, <a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/11/23/globovision-al-fin-se-decidio-a-poner-rss/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cerrando el RSS de Globovision, no vale la pena contentar a sus usuarios</title>
		<link>http://kodegeek.com/blog/2008/06/03/cerrando-el-rss-de-globovision-no-vale-la-pena-contentar-a-sus-usuarios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cerrando-el-rss-de-globovision-no-vale-la-pena-contentar-a-sus-usuarios</link>
		<comments>http://kodegeek.com/blog/2008/06/03/cerrando-el-rss-de-globovision-no-vale-la-pena-contentar-a-sus-usuarios/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 03:10:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[kodegeek]]></category>
		<category><![CDATA[censura]]></category>
		<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>
		<category><![CDATA[noticias]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1262</guid>
		<description><![CDATA[Bueno, Así que después de tener errores una y otra vez y de comprobar que mi aplicación aún funcionaba desde otros servidores, y que mi proveedor de hospedaje no me estaba bloqueando (después de lidiar con ellos durante 3 días ya que se me ocurrió la brillante idea de hospedar el blog con una cuenta [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno,</p>
<p>Así que <a href="http://kodegeek.com/2008/05/problemas-con-el-rss-de-globovision.shtml">después de tener errores una y otra vez</a> y de comprobar que mi aplicación aún funcionaba desde otros servidores, y que <a href="https://support.lunarpages.com/tickets/view/817791">mi proveedor de hospedaje no me estaba bloqueando</a> (<span style="font-style: italic;">después de lidiar con ellos durante 3 días ya que se me ocurrió la brillante idea de hospedar el blog con una cuenta sin acceso directo al shell</span>) me decidí a contactarlos directamente y preguntar que pasaba:</p>
<blockquote><p>Saludos cordiales,</p>
<p>Desde hace tiempo que disfruto de su sitio web y sus noticias, sin embargo noté que su sitio web no ofrece el formato RSS (el cual permite suscripción a sus titulares cada vez que hay actualización) y por ello escribí un programa el cual muestra el contenido del mismo en ese formato:</p>
<p><a href="http://kodegeek.com/2009/03/rss-de-globovision-est-roto-ii-java-al.shtml">http://kodegeek.com/2009/03/rss-de-globovision-est-roto-ii-java-al.shtml</a></p>
<p>Sin embargo desde el día de ayer dicho programa está siendo bloqueado en su sitio web y me pregunto si es posible que el acceso a la página pueda ser re-establecido o si alguien puede trabajar conmigo para verificar que es lo que está mal.</p>
<p>Muchas gracias de antemano.<br />
<blockquote></blockquote>
<p>José Vicente Núñez Zuleta, Kodegeek.com</p></blockquote>
<p>Desgraciadamente <span style="font-style: italic; font-weight: bold;">nunca</span> obtuve respuesta. Así, ¿que puede hacerse en estos casos?</p>
<p>La solución técnica es fácil saltarse este tipo de restricciones (usando &#8216;<a href="http://tools.rosinstrument.com/proxy/">proxies</a>&#8216; <a href="http://www.javaworld.com/javaworld/javatips/jw-javatip42.html">con http</a> y <a href="http://blogs.msdn.com/ie/archive/2008/02/21/the-internet-explorer-8-user-agent-string.aspx">re-escribiendo el &#8216;user agent&#8217;</a> del código cada vez que me conecto), así que ni corto ni perezoso le agregué esa funcionalidad a mi programa:</p>
<blockquote><p>/usr/java/jdk1.5.0_01/bin/java <span style="color: rgb(255, 0, 0);">-DproxySet=true -DproxyHost=XXX.ZZZ.YYY -DproxyPort=8080</span> -DUser-Agent &#8220;Kodegeek1.0/Es Hora de que escriban un RSS&#8221; -classpath /home/kodeg2/jars/RSS-1.0.jar:/home/kodeg2/jars/jdom.jar:/home/kodeg2/jars/rome-0.9.jar:. com.kodegeek.blog.rss.GlobovisionHtml2Rss /home/kodeg2/public_html/rss/globovision.rss</p></blockquote>
<p>Además de ponerle <a href="http://elangelnegro.cvs.sourceforge.net/elangelnegro/src/java/main/com/kodegeek/blog/rss/GlobovisionHtml2Rss.java?revision=1.8&amp;view=markup">esta nueva línea de código</a>:<br />
<blockquote></blockquote>
<blockquote><p>            URLConnection connection = globovisionURL.openConnection();<br /><span style="color: rgb(255, 0, 0);">            connection.setRequestProperty</span>(&#8220;User-Agent&#8221;, System.getProperty(&#8220;User-Agent&#8221;, USER_AGENT));<br />        reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));</p></blockquote>
<p>Probé todo esto <span style="font-style: italic;">en 10 minutos</span>. Básicamente ahora me conecto desde diferentes direcciones IP simulando diferentes navegadores. No es perfecto y aún puede ser bloqueado, sin embargo estos cambios van a requerir que ellos hagan más cambios, lo cual me lleva al siguiente punto:</p>
<p><span style="font-weight: bold; font-style: italic;">¿No es más fácil programar un RSS en Globovisión para luego dárselo a sus usuarios que bloquear mi programa (a estas alturas sólo puedo asumir eso)?</span></p>
<p>Sin embargo no vale la pena el esfuerzo, al menos de mi parte. Es decir, si en vez de mejorar el producto lo que quieren hacer es alienar a sus usuarios entonces simplemente se leen las noticias en otro sitio y listo, sin más complicaciones (el Universal.com <a href="http://www.eluniversal.com/rss/avances.xml">ofrece noticias de Venezuela con RSS</a> desde hace años. Bueno, ellos fueron los pioneros en Venezuela así que no soprende mucho).</p>
<p>Así que a mis queridos lectores por ahora no pienso seguir ofreciendo el RSS de Globovision. Si piensan que mi programa es <a href="http://www.globovision.com/plantilla.est.php?eid=14">útil entonces envienles un correo electronico</a>, pidiéndoles <span style="font-weight: bold;">que desbloqueen a KodeGeek o mejor aún que implementen un RSS</span> (¿habrán escuchado de web 2.0?)</p>
<p>En fin, los dejo con algunas memorias las cuales me recordaron lo  <a href="http://kodegeek.com/labels/globovision.shtml">divertido que fué trabajar en esto</a>. Yo por ahora tengo otras ideas las cuales les quiero mostrar en el blog, ninguna de ellas asociadas a los riesgos de web scrapping <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/globovision" rel="tag">globovision</a>, <a href="http://www.blogalaxia.com/tags/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.blogalaxia.com/tags/censura" rel="tag">censura</a>, <a href="http://www.blogalaxia.com/tags/noticias" rel="tag">noticias</a>, <a href="http://www.blogalaxia.com/tags/kodegeek" rel="tag">kodegeek</a><br />Technorati:<a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/globovision" rel="tag">globovision</a>, <a href="http://technorati.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://technorati.com/tag/censura" rel="tag">censura</a>, <a href="http://technorati.com/tag/noticias" rel="tag">noticias</a>, <a href="http://technorati.com/tag/kodegeek" rel="tag">kodegeek</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/globovision" rel="tag">globovision</a>, <a href="http://www.to2blogs.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.to2blogs.com/tag/censura" rel="tag">censura</a>, <a href="http://www.to2blogs.com/tag/noticias" rel="tag">noticias</a>, <a href="http://www.to2blogs.com/tag/kodegeek" rel="tag">kodegeek</a><br />Del.icio.us:<a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/globovision" rel="tag">globovision</a>, <a href="http://del.icio.us/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://del.icio.us/tag/censura" rel="tag">censura</a>, <a href="http://del.icio.us/tag/noticias" rel="tag">noticias</a>, <a href="http://del.icio.us/tag/kodegeek" rel="tag">kodegeek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/06/03/cerrando-el-rss-de-globovision-no-vale-la-pena-contentar-a-sus-usuarios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problemas con el RSS de Globovision</title>
		<link>http://kodegeek.com/blog/2008/05/30/problemas-con-el-rss-de-globovision/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problemas-con-el-rss-de-globovision</link>
		<comments>http://kodegeek.com/blog/2008/05/30/problemas-con-el-rss-de-globovision/#comments</comments>
		<pubDate>Fri, 30 May 2008 12:10:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1261</guid>
		<description><![CDATA[No estoy seguro porqué pero no tengo tiempo hoy para acomodarlo: May 30, 2008 3:10:03 AM com.kodegeek.blog.rss.GlobovisionHtml2Rss mainSEVERE: Cannot recover from this exceptionjava.lang.Exception: Unexpected problem at com.kodegeek.blog.rss.GlobovisionHtml2Rss.fetch(GlobovisionHtml2Rss.java:98) at com.kodegeek.blog.rss.GlobovisionHtml2Rss.main(GlobovisionHtml2Rss.java:62)Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.Socket.connect(Socket.java:507) at java.net.Socket.connect(Socket.java:457) at sun.net.NetworkClient.doConnect(NetworkClient.java:157) at sun.net.www.http.HttpClient.openServer(HttpClient.java:365) at sun.net.www.http.HttpClient.openServer(HttpClient.java:477) at sun.net.www.http.HttpClient.(HttpClient.java:214) at [...]]]></description>
			<content:encoded><![CDATA[<p>No estoy seguro porqué pero no tengo tiempo hoy para acomodarlo:
<pre>May 30, 2008 3:10:03 AM com.kodegeek.blog.rss.GlobovisionHtml2Rss mainSEVERE: Cannot recover from this exceptionjava.lang.Exception: Unexpected problem  at com.kodegeek.blog.rss.GlobovisionHtml2Rss.fetch(GlobovisionHtml2Rss.java:98)  at com.kodegeek.blog.rss.GlobovisionHtml2Rss.main(GlobovisionHtml2Rss.java:62)Caused by: java.net.ConnectException: <span style="color: rgb(255, 0, 0);">Connection refused</span>  at java.net.PlainSocketImpl.socketConnect(Native Method)  at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)  at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)  at java.net.Socket.connect(Socket.java:507)  at java.net.Socket.connect(Socket.java:457)  at sun.net.NetworkClient.doConnect(NetworkClient.java:157)  at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)  at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)  at sun.net.www.http.HttpClient.<init>(HttpClient.java:214)  at sun.net.www.http.HttpClient.New(HttpClient.java:287)  at sun.net.www.http.HttpClient.New(HttpClient.java:299)  at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:784)  at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:736)  at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:661)  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:905)  at java.net.URL.openStream(URL.java:1007)  at com.kodegeek.blog.rss.GlobovisionHtml2Rss.fetch(GlobovisionHtml2Rss.java:88)</init></pre>
<p>Asi que a quienes están suscritos el servicio, paciencia, ya veré porqué no está feliz <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.blogalaxia.com/tags/globovision+" rel="tag">globovision </a><br />Technorati:<a href="http://technorati.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://technorati.com/tag/globovision+" rel="tag">globovision </a><br />To2blogs:<a href="http://www.to2blogs.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.to2blogs.com/tag/globovision+" rel="tag">globovision </a><br />Del.icio.us:<a href="http://del.icio.us/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://del.icio.us/tag/globovision+" rel="tag">globovision </a></p>
<p>Buscar en otros sitios:</p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/05/30/problemas-con-el-rss-de-globovision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mejoras al RSS de Globovision</title>
		<link>http://kodegeek.com/blog/2008/03/29/mejoras-al-rss-de-globovision/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mejoras-al-rss-de-globovision</link>
		<comments>http://kodegeek.com/blog/2008/03/29/mejoras-al-rss-de-globovision/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 02:43:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>
		<category><![CDATA[rome]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1238</guid>
		<description><![CDATA[Bueno, he estado MUY ocupado debido a lo movido que ha estado el mercado de opciones estas últimas 3 semanas (incluyendo la caida estrepitosa de Bearn Sterns). Sin embargo hoy corregí un par de errores en el archivo de Ant y al fin monté la primera versión en Java del convertido de HTML a RSS [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, he estado MUY ocupado debido a lo movido que ha estado el mercado de opciones estas últimas 3 semanas (incluyendo la caida estrepitosa de Bearn Sterns). Sin embargo hoy corregí un par de errores en el archivo de Ant y al fin monté la primera versión en Java del convertido de HTML a RSS de Globovisión (en un <a href="http://kodegeek.com/2009/03/rss-de-globovision-est-roto-ii-java-al.shtml">articulo anterior</a> les mostraba el código y porqué me decidí a escribirlo).</p>
<p>La versión de Perl quedará en la historia <img src='http://kodegeek.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Buscar en otros sitios:</p>
<p>Blogalaxia:<a href="http://www.blogalaxia.com/tags/globovision" rel="tag">globovision</a>, <a href="http://www.blogalaxia.com/tags/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.blogalaxia.com/tags/java" rel="tag">java</a>, <a href="http://www.blogalaxia.com/tags/rome" rel="tag">rome</a><br />Technorati:<a href="http://technorati.com/tag/globovision" rel="tag">globovision</a>, <a href="http://technorati.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://technorati.com/tag/java" rel="tag">java</a>, <a href="http://technorati.com/tag/rome" rel="tag">rome</a><br />To2blogs:<a href="http://www.to2blogs.com/tag/globovision" rel="tag">globovision</a>, <a href="http://www.to2blogs.com/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://www.to2blogs.com/tag/java" rel="tag">java</a>, <a href="http://www.to2blogs.com/tag/rome" rel="tag">rome</a><br />Del.icio.us:<a href="http://del.icio.us/tag/globovision" rel="tag">globovision</a>, <a href="http://del.icio.us/tag/html+to+rss" rel="tag">html to rss</a>, <a href="http://del.icio.us/tag/java" rel="tag">java</a>, <a href="http://del.icio.us/tag/rome" rel="tag">rome</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2008/03/29/mejoras-al-rss-de-globovision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertidor de HTML a RSS para las noticias de Globovisión.</title>
		<link>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=convertidor-de-html-a-rss-para-las-noticias-de-globovision</link>
		<comments>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 02:55:00 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
				<category><![CDATA[globovision]]></category>
		<category><![CDATA[html to rss]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://kodegeek.com/blog/?p=1190</guid>
		<description><![CDATA[Siguiendo con la fiebre de los Mashups hechos con Yahoo Pipes, llegué al punto en que decidí escribir un convertidor de HTML a RSS para Globovision. Como recordaran, Globovision no ofrece un feed RSS de sus noticias nacionales, lo cual es una verdadera lastima. Asi que con un poco de imaginación decidí escribir este programa [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con la fiebre de los<a href="http://kodegeek.com/labels/google%20reader.shtml"> Mashups hechos con Yahoo Pipes</a>, llegué al punto en que decidí escribir un convertidor de HTML a RSS para <a href="http://www.globovision.com/index.php">Globovision</a>. Como recordaran, <a href="http://www.globovision.com/index.php">Globovision</a> no ofrece un feed RSS de sus noticias nacionales, lo cual es una verdadera lastima.</p>
<p>Asi que con un poco de imaginación decidí escribir este programa en Perl:</p>
<pre><a name="line1"> 1</a> <span style="color: rgb(68, 68, 68);">#!/usr/bin/perl<a name="line2"> 2</a><a name="line3"> 3</a> </span><strong>use</strong> strict;<a name="line4"> 4</a> <strong>use</strong> LWP::UserAgent;<a name="line5"> 5</a> <strong>use</strong> HTML::Parser;<a name="line6"> 6</a> <strong>use</strong> XML::RSS;<a name="line7"> 7</a><a name="line8"> 8</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$rss</span> = XML::RSS-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span> version => <span style="color: rgb(0, 128, 0);">'0.9'</span> <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line9"> 9</a><a name="line10">10</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$rssFile</span> = <span style="color: rgb(0, 128, 0);">"<span style="color: rgb(32, 64, 160);">$ENV</span>{HOME}/globovision.rss"</span>;<a name="line11">11</a><a name="line12">12</a> <span style="color: rgb(32, 64, 160);">$rss</span>->channel<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line13">13</a>  title        => <span style="color: rgb(0, 128, 0);">"Globovision.com Venezuelan News"</span>,<a name="line14">14</a>  <span style="color: rgb(165, 42, 42);"><strong>link</strong></span>         => <span style="color: rgb(0, 128, 0);">"http://globovision.com/"</span>,<a name="line15">15</a>  description  => <span style="color: rgb(0, 128, 0);">"Globovision.com news -Brough to you by http://KodeGeek.com"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line16">16</a><a name="line17">17</a> <span style="color: rgb(68, 68, 68);"># Be carefull with this one as nested elements can be ignored and<a name="line18">18</a> # HTML normally is not well formed!<a name="line19">19</a> </span><strong>my</strong> <span style="color: rgb(32, 64, 160);">@ignore_tags</span> = <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line20">20</a>  <span style="color: rgb(0, 128, 0);">"head"</span>,<a name="line21">21</a>  <span style="color: rgb(0, 128, 0);">"h1"</span>,<a name="line22">22</a>  <span style="color: rgb(0, 128, 0);">"strong"</span>,<a name="line23">23</a>  <span style="color: rgb(0, 128, 0);">"form"</span><a name="line24">24</a>    <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line25">25</a><a name="line26">26</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$baseUrl</span> = <span style="color: rgb(0, 128, 0);">"http://globovision.com/"</span>;<a name="line27">27</a><a name="line28">28</a> <span style="color: rgb(68, 68, 68);"># We are only interested on the news from the first page,as more news come up it will push older news<a name="line29">29</a> </span><strong>my</strong> <span style="color: rgb(32, 64, 160);">$newsUrl</span> = <span style="color: rgb(0, 128, 0);">"<span style="color: rgb(32, 64, 160);">$baseUrl</span>"</span> . <span style="color: rgb(0, 128, 0);">"history.php?cha=1&amp;pag=1"</span>;<a name="line30">30</a><a name="line31">31</a> <strong>use</strong> constant DEFAULT_TIMEOUT<a name="line32">32</a>  => 180;<a name="line33">33</a><a name="line34">34</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$agent</span> = LWP::UserAgent-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line35">35</a>   agent => <span style="color: rgb(0, 128, 0);">'GlobovisionHtml2Rss.pl/kodegeek 0.1'</span>,<a name="line36">36</a>   timeout => DEFAULT_TIMEOUT<a name="line37">37</a>      <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line38">38</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$response</span> = <span style="color: rgb(32, 64, 160);">$agent</span>->get<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$newsUrl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line39">39</a> <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span>! <span style="color: rgb(32, 64, 160);">$response</span>->is_success<span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line40">40</a>  <strong>die</strong>  <span style="color: rgb(165, 42, 42);"><strong>sprintf</strong></span> <span style="color: rgb(0, 128, 0);">"[ERROR]: Unable to retrieve the HTMLfrom '<span style="color: rgb(32, 64, 160);">%s</span>', Status: '<span style="color: rgb(32, 64, 160);">%s</span>'"</span>, <span style="color: rgb(32, 64, 160);">$newsUrl</span>, <span style="color: rgb(32, 64, 160);">$response</span>->status_line;<a name="line41">41</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line42">42</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$parser</span> = HTML::Parser-><strong>new</strong><span style="color: rgb(68, 68, 255);"><strong>(</strong></span><a name="line43">43</a>                         api_version => 3,<a name="line44">44</a>    start_h => <span style="color: rgb(68, 68, 255);"><strong>[</strong></span> \&amp;start_a, <span style="color: rgb(0, 128, 0);">"tagname, attr"</span> <span style="color: rgb(68, 68, 255);"><strong>]</strong></span>,<a name="line45">45</a>    text_h => <span style="color: rgb(68, 68, 255);"><strong>[</strong></span> \&amp;get_headline, <span style="color: rgb(0, 128, 0);">"dtext"</span> <span style="color: rgb(68, 68, 255);"><strong>]</strong></span><a name="line46">46</a>    <span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line47">47</a> <span style="color: rgb(32, 64, 160);">$parser</span>->ignore_tags<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">@ignore_tags</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line48">48</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$headlineFlag</span>=0;<a name="line49">49</a> <strong>my</strong> <span style="color: rgb(32, 64, 160);">$currUrl</span>=<span style="color: rgb(165, 42, 42);"><strong>undef</strong></span>;<a name="line50">50</a> <span style="color: rgb(32, 64, 160);">$parser</span>->parse<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$response</span>->decoded_content<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line51">51</a><a name="line52">52</a> <span style="color: rgb(32, 64, 160);">$rss</span>->save<span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$rssFile</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line53">53</a><a name="line54">54</a> <span style="color: rgb(68, 68, 68);"># ****** Functions used on the script *******<a name="line55">55</a><a name="line56">56</a> # Get the headline<a name="line57">57</a> </span><strong>sub<span style="color: rgb(255, 0, 0);"> get_headline</span> {</strong><a name="line58">58</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">$headline</span> = <span style="color: rgb(32, 64, 160);">$_</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span>0<span style="color: rgb(68, 68, 255);"><strong>]</strong></span>;<a name="line59">59</a>  <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$headlineFlag</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line60">60</a>   <span style="color: rgb(32, 64, 160);">$rss</span>->add_item<span style="color: rgb(68, 68, 255);"><strong>(</strong></span> title => <span style="color: rgb(32, 64, 160);">$headline</span>, <span style="color: rgb(165, 42, 42);"><strong>link</strong></span> => <span style="color: rgb(32, 64, 160);">$currUrl</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span>;<a name="line61">61</a>   <span style="color: rgb(32, 64, 160);">$headlineFlag</span> = 0;<a name="line62">62</a>   <span style="color: rgb(32, 64, 160);">$currUrl</span>=<span style="color: rgb(165, 42, 42);"><strong>undef</strong></span>;<a name="line63">63</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line64">64</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line65">65</a><a name="line66">66</a> <span style="color: rgb(68, 68, 68);"># Identify news items<a name="line67">67</a> </span><strong>sub<span style="color: rgb(255, 0, 0);"> start_a</span> {</strong><a name="line68">68</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">$tagname</span> = <span style="color: rgb(32, 64, 160);">$_</span><span style="color: rgb(68, 68, 255);"><strong>[</strong></span>0<span style="color: rgb(68, 68, 255);"><strong>]</strong></span>;<a name="line69">69</a>  <strong>my</strong> <span style="color: rgb(32, 64, 160);">%attr</span> = <span style="color: rgb(32, 64, 160);">%{$_[1]}</span>;<a name="line70">70</a>  <strong>if</strong> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span> <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$tagname</span> <strong>eq</strong> <span style="color: rgb(0, 128, 0);">"a"</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> &amp;&amp; <span style="color: rgb(68, 68, 255);"><strong>(</strong></span><span style="color: rgb(32, 64, 160);">$attr</span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span>href<span style="color: rgb(68, 68, 255);"><strong>}</strong></span> =~<span style="color: rgb(176, 0, 208);"> /^news.php?.nid=\d+/</span><span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>)</strong></span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><a name="line71">71</a>   <strong>my</strong> <span style="color: rgb(32, 64, 160);">$url</span> = <span style="color: rgb(32, 64, 160);">$baseUrl</span> . <span style="color: rgb(0, 128, 0);">"/"</span> . <span style="color: rgb(32, 64, 160);">$attr</span><span style="color: rgb(68, 68, 255);"><strong>{</strong></span>href<span style="color: rgb(68, 68, 255);"><strong>}</strong></span>;<a name="line72">72</a>   <span style="color: rgb(32, 64, 160);">$url</span> =~<span style="color: rgb(176, 0, 208);"> s/&amp;/&amp;/g</span>;<a name="line73">73</a>   <span style="color: rgb(32, 64, 160);">$currUrl</span> = <span style="color: rgb(32, 64, 160);">$url</span>;<a name="line74">74</a>   <span style="color: rgb(32, 64, 160);">$headlineFlag</span>=1;<a name="line75">75</a>  <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line76">76</a> <span style="color: rgb(68, 68, 255);"><strong>}</strong></span><a name="line77">77</a> __END__<a name="line78">78</a> =head1 NAME<a name="line79">79</a><a name="line80">80</a> GlobovisionHtml2Rs<span style="color: rgb(176, 0, 208);">s.pl - Script to convert Globovision.com Venezuelalocal news from HTML to RSS.</span><a name="line81">81</a><a name="line82">82</a> =head1 DESCRIPTION<a name="line83">83</a><a name="line84">84</a> I <strong>use</strong> a combination of Yahoo Pipes <strong>and</strong> Google Reader to keep meupdated about news of any kind. However, some websites like<a name="line85">85</a> Globovision.com still don't have a proper RSS feed, so one dayI decided to create <strong>my</strong> own mashup :<span style="color: rgb(68, 68, 255);"><strong>)</strong></span>.<a name="line86">86</a><a name="line87">87</a> =head1 AUTHOR<a name="line88">88</a><a name="line89">89</a> Jose Vicente Nunez Zuleta <span style="color: rgb(68, 68, 255);"><strong>(</strong></span>josevnz<span style="color: rgb(32, 64, 160);">@kodegeek</span>.com<span style="color: rgb(68, 68, 255);"><strong>)</strong></span><a name="line90">90</a><a name="line91">91</a> =head1 BLOG<a name="line92">92</a><a name="line93">93</a> KodeGeek - http:<span style="color: rgb(176, 0, 208);">//</span>kodegeek.com<a name="line94">94</a><a name="line95">95</a> =head1 LICENSE<a name="line96">96</a><a name="line97">97</a> GPL<a name="line98">98</a><a name="line99">99</a> cut
</pre>
<p>Lo más fastidioso de este ejercicio fué instalar <a href="http://sourceforge.net/projects/expat">EXPAT</a> (para el procesamiento del XML del feed RSS) y el módulo parta crear el archivo RSS (me da un fastidio enorme aprender como es el formato resultante).</p>
<p>Mi proveedor de hosting gustosamente instaló el módulo <a href="http://perl-rss.sourceforge.net/">XML::RSS</a>. Después de probarlo un poco aquí les dejo las noticias de <a href="http://www.kodegeek.com/rss/globovision.rss">Globovisión para que la disfruten</a> (planeo actualizar el lector de noticias cada 10 minutos para no matar a mi servidor).</p>
<p>Blogalaxia.com:<a href="http://www.blogalaxia.com/tags/globovision">globovision</a>, <a href="http://www.blogalaxia.com/tags/rss">rss</a>, <a href="http://www.blogalaxia.com/tags/html+to+rss">html to rss</a>, <a href="http://www.blogalaxia.com/tags/perl">perl</a>, <a href="http://www.blogalaxia.com/tags/open+source">open source</a><br />Technorati.com:<a href="http://technorati.com/tag/globovision">globovision</a>, <a href="http://technorati.com/tag/rss">rss</a>, <a href="http://technorati.com/tag/html+to+rss">html to rss</a>, <a href="http://technorati.com/tag/perl">perl</a>, <a href="http://technorati.com/tag/open+source">open source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kodegeek.com/blog/2007/10/14/convertidor-de-html-a-rss-para-las-noticias-de-globovision/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

