{"id":90,"date":"2013-12-27T14:24:42","date_gmt":"2013-12-27T14:24:42","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2013\/12\/27\/rss2twitter-un-pequeno-proyecto\/"},"modified":"2013-12-27T14:24:42","modified_gmt":"2013-12-27T14:24:42","slug":"rss2twitter-un-pequeno-proyecto","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2013\/12\/27\/rss2twitter-un-pequeno-proyecto\/","title":{"rendered":"rss2twitter: un peque\u00f1o proyecto &#8230;"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"perl\" src=\"https:\/\/esferas.org\/mt\/msqlu\/logos\/perl-logo.png\" class=\"mt-image-left\" style=\"float: left; margin: 0 20px 20px 0;\" height=\"75\" width=\"145\" \/>&#8230;. para mi consumo personal.<\/p>\n<\/p>\n<p><!--more--><\/p>\n<p>Y es que resulta que he visto en <a href=\"http:\/\/metacpan.org\">MetaCPAN<\/a> un buen n\u00famero de m\u00f3dulos Perl listos para emplearse en tareas reales relacionados con el tema: crear <em>tweets<\/em> cada vez que alguien publica algo nuevo v\u00eda un <em>feed<\/em> RSS (o Atom).<\/p>\n<p>Tengo curiosidad por ver si, partiendo de los paquetes Debian correspondientes -sin instalaciones extra\u00f1as-, consigo crear algo simple que funcione sin m\u00e1s problemas que los de acceso a las cuentas. Estar\u00eda bien que, para variar, las cosas fuesen lo bastante estables como para centrarnos en el problema y no en las herramientas.<\/p>\n<h3>Objetivos<\/h3>\n<p>El programa (un script m\u00e1s bien) debe ser capaz de:<\/p>\n<ol>\n<li>Leer un feed regularmente y extraer las nuevas publicaciones.<\/li>\n<li>Conectar con una cuenta Twitter con las credenciales adecuadas y por cada nuevo contenido hallado:\n<ol>\n<li>Crear un URL corto para el contenido.<\/li>\n<li>Crear un tweet dentro de los l\u00edmites<\/li>\n<li>Publicar el tweet<\/li>\n<\/ol>\n<\/li>\n<li>Informar v\u00eda correo electr\u00f3nico de la actividad realizada.<\/li>\n<\/ol>\n<h3>Herramientas<\/h3>\n<ul>\n<li>Los siguientes m\u00f3dulos Perl ya empaquetados en Debian Wheezy:\n<ul>\n<li><a href=\"https:\/\/metacpan.org\/release\/Net-Twitter\">Net::Twitter<\/a> para conectar con Twitter.<\/li>\n<li><a href=\"https:\/\/metacpan.org\/pod\/XML::Feed\">XML::Feed<\/a> para descargar y analizar <em>feeds<\/em>.<\/li>\n<li><a href=\"https:\/\/metacpan.org\/pod\/Email::Sender\">Email::Sender<\/a> para enviar mensajes de correo.<\/li>\n<li><a href=\"https:\/\/metacpan.org\/pod\/WWW::Shorten\">WWW::Shorten<\/a> para construir URL abreviados.<\/li>\n<li><a href=\"https:\/\/metacpan.org\/pod\/Config::Auto\">Config::Auto<\/a> para manejar archivos de configuraci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n<li>M\u00f3dulos Perl no empaquetados para Debian Wheezy pero f\u00e1ciles de construir como paquetes:\n<ul>\n<li><a href=\"https:\/\/metacpan.org\/release\/MooseX-App\">MooseX::App<\/a> para construir el armaz\u00f3n del programa. Algo lento pero f\u00e1cil de mantener.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Con respecto a los m\u00f3dulos no empaquetados tengo que reconocer dos cosas: la primera es que incluir <em>MooseX::App<\/em> es por puro capricho, me gusta mucho su enfoque, y la segunda es que es bastante f\u00e1cil construirlos empleando la herramienta <em>dh-make-perl<\/em> junto con <em>apt-file<\/em> para encontrar las dependencias.<\/p>\n<p>En el caso de <em>MooseX::App<\/em> s\u00f3lo me he encontrado con lo siguiente:<\/p>\n<ul>\n<li>Requiere la versi\u00f3n 6.59 de <em>ExtUtils::Makemaker<\/em> mientras que en <em>Wheezy<\/em> existe la 6.5705. Los test pasan correctamente as\u00ed que, salvo error de concepci\u00f3n del autor, se pueden dar por v\u00e1lidos.<\/li>\n<li>Las dependencias creadas autom\u00e1ticamente (junto con el archivo de copyright) son err\u00f3neas, pero es muy sencillo de arreglar.<\/li>\n<\/ul>\n<h3>Recursos y disposiciones<\/h3>\n<p>Muy simple: para empezar el desarrollo voy a necesitar de un repositorio Git en el que alojar el software. Afortunadamente tengo f\u00e1cil acceso a uno: <a href=\"https:\/\/astillas.net\/gitweb?p=rss2twitter.git\">https:\/\/astillas.net\/gitweb?p=rss2twitter.git.<\/a><\/p>\n<p>Y ahora comencemos &#8230;<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230;. para mi consumo personal.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"1","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[7],"tags":[41,153,154,137],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-perl","tag-debian","tag-rss","tag-rss2twitter","tag-twitter"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}