{"id":91,"date":"2013-12-27T18:10:00","date_gmt":"2013-12-27T18:10:00","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2013\/12\/27\/rss2twitter-disenando-la-configuracion\/"},"modified":"2013-12-27T18:10:00","modified_gmt":"2013-12-27T18:10:00","slug":"rss2twitter-disenando-la-configuracion","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2013\/12\/27\/rss2twitter-disenando-la-configuracion\/","title":{"rendered":"rss2twitter: dise\u00f1ando la configuraci\u00f3n &#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; y dando los primeros pasos.<\/p>\n<p><!--more--><\/p>\n<p>Antes de nada un peque\u00f1o esquema de los que me gusta tener siempre a mano. Me es muy \u00fatil para centrarme cuando desarrollo porque tengo tendencia a dejarme llevar por otras posibilidades y termino creando monstruos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"esquema-general.png\" src=\"https:\/\/esferas.org\/mt\/msqlu\/2013\/12\/27\/esquema-general.png\" class=\"mt-image-center\" style=\"text-align: left; display: block; margin: 0 auto 20px;\" height=\"392\" width=\"350\" \/><\/p>\n<p>Y ahora contin\u00fao echando un vistazo a los m\u00f3dulos b\u00e1sicos que voy a emplear y anotando aquello que va a ser necesario incluir en la configuraci\u00f3n del programa. El formato elegido va a ser el t\u00edpico archivo <em>.ini<\/em> porque estoy\u00a0 muy acostumbrado a \u00e9l y Perl se lo merienda sin problemas. Me permite tener los datos en secciones y es m\u00e1s sencillo as\u00ed disponer de una configuraci\u00f3n global y una particular para cada canal <em>rss-twitter<\/em>.<\/p>\n<p>Como par\u00e1metros globales voy a necesitar:<\/p>\n<ul>\n<li>Env\u00edo de notificaciones por correo:\n<ul>\n<li>Servidor SMTP.<\/li>\n<li>Credenciales para el servidor si las precisa.<\/li>\n<li>Direcci\u00f3n de remite.<\/li>\n<li>Asunto y cuerpo del mensaje (quiz\u00e1s como plantilla en siguientes versiones).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Como definici\u00f3n de canal (me gusta el t\u00e9rmino) me har\u00e1 falta:<\/p>\n<ul>\n<li>Para la lectura de <em>feeds<\/em>:\n<ul>\n<li>URL de origen<\/li>\n<li>Formato del feed que puede ser opcional.<\/li>\n<\/ul>\n<\/li>\n<li>Para el acceso a Twitter deber\u00eda ser suficiente con las dos cosas, una vez que se configure el acceso v\u00eda <em>oauth:<\/em>\n<ul>\n<li>consumer_key<\/li>\n<li>consumer_secret<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Ejemplo<\/h3>\n<p>Suponiendo que toda la configuraci\u00f3n estuviese en un \u00fanico archivo quedar\u00eda m\u00e1s o menos as\u00ed:<\/p>\n<pre><span style=\"color: #808030;\">[<\/span>email<span style=\"color: #808030;\">]<\/span>\n   smtp<span style=\"color: #808030;\">_<\/span>server   <span style=\"color: #808030;\">=<\/span> localhost \n   smtp<span style=\"color: #808030;\">_<\/span>user     <span style=\"color: #808030;\">=<\/span> yo\n   smtp<span style=\"color: #808030;\">_<\/span>password <span style=\"color: #808030;\">=<\/span> xxxx\n   from          <span style=\"color: #808030;\">=<\/span> <span style=\"color: #7144c4;\">rss2twiter@example.com<\/span>\n   subject       <span style=\"color: #808030;\">=<\/span> <span style=\"color: #800000;\">\"<\/span><span style=\"color: #0000e6;\">[Rss2Twitter] Nuevo tweet<\/span><span style=\"color: #800000;\">\"<\/span>\n   body          <span style=\"color: #808030;\">=<\/span> <span style=\"color: #808030;\">&lt;<\/span><span style=\"color: #808030;\">&lt;<\/span>EOF\n   He enviado un nuevo tweet <span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span><span style=\"color: #808030;\">.<\/span>\nEOF\n\n<span style=\"color: #808030;\">[<\/span>mas<span style=\"color: #808030;\">_<\/span>solo<span style=\"color: #808030;\">_<\/span>que<span style=\"color: #808030;\">_<\/span>la<span style=\"color: #808030;\">_<\/span>una<span style=\"color: #808030;\">]<\/span>\n   feed <span style=\"color: #808030;\">=<\/span> <span style=\"color: #800000;\">\"<\/span><span style=\"color: #0000e6;\">https:\/\/esferas.org\/mt\/msqlu\/feed.xml<\/span><span style=\"color: #800000;\">\"<\/span>\n   twitter<span style=\"color: #808030;\">_<\/span>consumer<span style=\"color: #808030;\">_<\/span>key <span style=\"color: #808030;\">=<\/span> <span style=\"color: #800000;\">\"<\/span><span style=\"color: #0000e6;\">XXXXXX<\/span><span style=\"color: #800000;\">\"<\/span>\n   twitter<span style=\"color: #808030;\">_<\/span>consumer<span style=\"color: #808030;\">_<\/span>secret <span style=\"color: #808030;\">=<\/span> <span style=\"color: #800000;\">\"<\/span><span style=\"color: #0000e6;\">XXXXX<\/span><span style=\"color: #800000;\">\"<\/span>\n   to <span style=\"color: #808030;\">=<\/span> <span style=\"color: #7144c4;\">victor@taquiones.net<\/span>\n<\/pre>\n<p>De tal manera que exiten secciones reservadas (como <em>email<\/em>) y otras de libre denominaci\u00f3n que ser\u00e1n las que definan los canales.<\/p>\n<h3>Primeros pasos<\/h3>\n<p>Una de las primeras cosas que hago cuando emprendo un proyecto nuevo, tras inicializar el repositorio a mi gusto, es crear un directorio especial para probar c\u00f3digo. Lo llamo <em>snippets<\/em> y lo empleo para realizar pruebas y experimentos de las herramientas que voy a utilizar.<\/p>\n<p>Tambi\u00e9n me sirve para descartar planteamientos err\u00f3neos, esos que surgen de creerse a pies juntillas la documentaci\u00f3n de otros. No siempre es a mala leche pero hay ocasiones en que un m\u00f3dulo en concreto dej\u00f3 de funcionar mucho tiempo atr\u00e1s y el autor lo manten\u00eda congelado y no se percat\u00f3 de ello. El caso es que un directorio as\u00ed es vital para empezar a construir algo s\u00f3lido.<\/p>\n<p>En mi caso voy a verificar tanto la carga y an\u00e1lisis de feeds como del acceso a Twitter empleando la segunda cuenta &#8230;<\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; y dando los primeros pasos.<\/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":[22,154],"class_list":["post-91","post","type-post","status-publish","format-standard","hentry","category-perl","tag-configuracion","tag-rss2twitter"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/91","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=91"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/91\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=91"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=91"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}