Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

Importar tweets al blog

Estos días, en mis ratos libres, además de leer The Martian, estoy haciendo algunas aportes a Nikola.

Algo a lo que le vengo dando vueltas es a la idea de importar tweets a este blog.

Hubo una época (o mejor dicho "hay", porque aún no termina) en la que Twitter mató a muchos blogs: más fácil, más rápido, más corto. Fast food para la era de la información.

Tengo la teoría, y de esto no estoy seguro, de que puedo rescatar mucha historia personal de tweets que escribí y ya olvidé.

Con la página de Twitter podés ir para atrás en tu historia pero, superado cierto límite de tweets ya no podés llegar al principio. Desde hace poco, Twitter te permite bajarse un archivo con todos tus tweets (incluso está acompañado por una aplicación web local con la cual es fácil navegarlos).

Bueno, quiero tomar ese archivo, seleccionar los tweetsccon algún valor e importarlos como posts (tal vez agregados por día? por tema?) en este blog.

Abrí un Issue para esto:

Issue #107

I'm planning to implement import_tweets. Version V0.1 will:

  • read from Twitter provided json files for a user
  • present each tweet asking the user if adding it or not
  • have a non-interactive parameter
  • have a parameter to filter replies
  • generate rst posts, one per day with tweets
  • (probably) download images and include them in the posts
  • Ideas or suggestions?

Reactivé el bot @jjsaer

Saer en Twitter

Desde hace algunos años mantengo un bot en Twitter que cita a Juan José Saer.

Hace algunas semanas, cuando la notebook que servía de servidor para esta aplicación se rompió, Saer dejó de twittear.

Hoy aproveché el día para acomodar un poco su código fuente y moverlo a un servidor de verdad.

La lista completa de las citas que va posteando está en saertweets.txt. ¡Se aceptan nuevas citas para agregar! Incluso, cualquiera puede usar este pequeño programa para crear un bot de cualquier escritor o de cualquier cosa. Si no son programadores y necesitan ayuda para hacerlo funcionar, me avisan.


Twitter: Dejar de seguir a los que no me siguen

Para cierta cuenta de Twitter que administro, necesitaba dejar de seguir a todos los usuarios que no me seguían.

Busqué si había alguna web que diera el servicio y las que encontré (NotFollow y JustUnfollow) solo se limitaban a listar a quienes no te seguían y permitirte ir eliminándolos de a uno. Un chiste. (JustUnfollow te deja eliminar solo 50 usuarios por día si no te pasás a la cuenta premium, paga, o twitteas haciéndoles propaganda).

Tenía que eliminar a casi 2000 usuarios y no tenía ganas de que me diera tendinitis en el dedo índice derecho de tanto hacer click.

Como siempre, dada la herramienta correcta, un trabajo a primera vista tedioso o complicado puede resultar extremadamente fácil. Utilizando la librería Python Twitter Tools hice este script que, luego de la danza de OAuth para autenticarse en Twitter, consta de 7 líneas. Tomen community managers, se los regalo:

following = twitter.friends.ids()

followingIds = following['ids']

followers = twitter.followers.ids()

followersIds = followers['ids']

for id in followingIds:

if id not in followersIds:

    twitter.friendships.destroy(user_id=id)</pre>

PS: para los amantes del code golfing, ahí va la versión en una línea:

[twitter.friendships.destroy(user_id=id) for id in twitter.friends.ids()['ids'] if id not in twitter.followers.ids()['ids']]

Nota: para dejar de seguir unos 1900 usuarios tardo una media hora en mi notebook.

Tarea para el lector: escribir un script para seguir a todos los seguidores que no estamos siguiendo.


Cambiar foto de perfil en Twitter, cuando la cambio en Facebook

Ifttt, If this then that, es un sitio web que permite utilizar está clásica sentencia de control de programación en la web.

Uno tiene a su disposición una serie de canales. Estos disparan eventos y realizan acciones.  La combinación de un evento y una acción es una tarea. Y cuando uno publica una tarea, se la llama receta. Existe un repositorio de recetas publicadas por los usuarios en donde se pueden encontrar algunas muy útiles. La mejor que estoy usando es:

Otras recetas que estoy usando son:

  • Cuando posteo en el blog, comunicarlo en Facebook.
  • xkcd comic emailed to me whenever it updates
  • Tweet if I upload a video to youtube.


La Sole Pastorutti twittea sobre Kiko Opertti

Hoy leyendo el Twitter de @sole_pastorutti me encontré que recordaba a uno s los grandes personajes de mi pueblo, Carlos Pellegrini. Kiko Opertti: profesor de matemática, economista, inventor, político y mucho más.

Esto decía hace un par de horas La Sole, 140 caracteres a la vez:

  • Estamos viajando a Mendoza, hace mucho calor y no hay aire que alcance! Anoche cantamos con la humedad de Santa Fe!
  • Piamonte volvió a recibirme! Que bueno que parte de mi banda loca estuvo ahí! Paramos en los pagos del gran Kiko Operti!
  • Les cuento: Kiko era un hombre mayor muy fana mio! Tanto que tenia como proyecto ponerle mi nombre a una calle de su pueblo!
  • Un tipo muy inteligente que todo el tiempo me regalaba cosas: desde mermeladas caseras, choclos, bagna cauda, ollas hasta gallinas, ovejas y
  • ...gallinas y un burro! Pensaba hacer un recital en la luna y como anécdota una vez en Villa Maria, en conferencia de prensa, se metió entre
  • ...Entre el periodismo y le dijo a mi representante que no podía ir a ese show lunático porque estaba gordito. Cuando menos lo imaginaba...
  • Aparecía Kiko! En Arequito, en la casa de mis abuelos, en las conferencias, en todos lados! Hay como lo extraño!Un tipo especial, querible!
  • Bueno, me pareció lindo contarles esto! Ahora voy a tratar de dormir otro poco!Besos


Twitter updates desde Twisted

Este artículo es una re-edición del publicado el 24/08/2010 ya que cuando lo publiqué, Twitter estaba terminando su proceso apagar el sistema de autenticación básica para pasar al más complejo sistema de la danza oAuth; lo cual convirtió al artículo en inservible. El artículo anterior no está más disponible. Gracias a Pupeno por revisar esta versión.

¿Tenés un servidor escrito en Twisted? ¿Tenés eventos críticos o importantes que mandás por mail o a celulares? ¿Qué tal publicarlos en Twitter?

La versión original de este artículo utilizaba la biblioteca Twitty Twister, la única pensada para usar Twitter desde Twisted. Lamentablemente no funciona bien con el nuevo sistema de autenticación de Twitter por lo que voy a usar Tweepy, una librería con la cual hacer la danza de oAuth es muy sencillo.

1) Registrar un usuario dónde publicar las notificaciones.

2) Con ese usuario, registrar una aplicación. Es muy importante usar el mismo usuario para ahorrarnos algunos pasos en la danza oAuth.

3) De la página de la aplicación creada, tomar la siguiente información: consumer key, consumer secret (desde la home de la aplicación), access token y access token secret (de la página My Access Token).

4) Código:

Con los datos del punto 3, creamos el módulo twitterupdates.py:

import tweepy



TWITTER_KEY = 'xxxxxxxxxxxxxxxx'

TWITTER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

MY_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'

MY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'



auth = tweepy.OAuthHandler(TWITTER_KEY, TWITTER_SECRET)

auth.set_access_token(MY_KEY, MY_SECRET)

twitter = tweepy.API(auth)

y desde nuestra aplicación Twisted lo importamos:

from twitterupdates import twitter

Postear una actualización en Twitter o cualquier otra petición a un servidor externo tiene una naturaleza bloqueante y en un framework de concurrencia colaborativa, como es Twisted, no podemos darnos ese lujo. Para solucionar esto, utilizamos deferToThread:

deferToThread(twitter.update_status, "Mensaje a postear en Twitter")

Esta llamada retorna un objeto Deferred al cual se le pueden añadir callbacks o errbacks. La llamada bloqueante es corrida en un hilo aparte.

Enjoy!


Reflotando MyTwitGroup

MyTwitGroup o www.mytwitgroup.com es un servicio que implementamos con dos compañeras hace unos 6 meses. Uno de los objetivos del proyecto era ver como funcionábamos como equipo, si podíamos construir y entregar software en tiempo y forma. Nos fue bastante bien.

El servicio

La idea del servicio surgió de una necesidad real. En la cátedra de Comunicaciones somo 4 personas que usamos Twitter y queríamos usar esa herramienta para comunicarnos con los alumnos, pero no queríamos obligarlos a que nos sigan a cada uno.

MyTwitGroup revisa periódicamente el timeline de cada uno de los miembros y si encuentra un tweet con el hashtag #com lo publica utilizando la cuenta de la cátedra.

El servicio lo pueden usar desde empresas hasta bandas de rock. Yo creo que es útil, pero para entenderlo realmente tenés que usarlo. Si tenés una "cuenta grupal" probalo, no te cuesta nada.

Fallas

Cuando implementamos la primera versión del sistema, utilizamos la forma básica de autenticación de Twitter: era fácil de implementar y funcionaba. Tenía un problema, el grupo que creaba una cuenta en el sitio debía dejar la contraseña de la cuenta del grupo para que luego se puedan hacer las publicaciones automáticas. Tuvimos resistencia de usuarios por esto. Intentamos solucionarlo obteniendo un certificado que podamos usar para enviar la información por HTTPS. Los certificados son caros. Usamos uno gratuito unos meses, pero luego caducó. Esta fue la falla 1.

Falla 2. Hace menos de un mes Twitter decidió apagar su sistema de autenticación básico y nuestro servicio dejó de andar. Algo corto de tiempo por otros proyectos y obligaciones, con la ayuda de fisa migramos a la nueva forma de autenticación: OAuth.

OAuth en Twitter está mal implementado e hizo renegar a muchas personas; por semanas, populares clientes no funcionaron y a los paranoicos de la seguridad no les termina de cerrar la implementación OAuth de Twitter. Pero a nosotros nos vino bien! Usando OAuth dejamos de pedirle la password al usuario y muchos que no hubiesen probado el servicio, tal vez lo hagan. También dejamos de necesitar un costoso certificado.

Bugs fixing

Cambiamos de hosting y salió a la cancha, pero con algunos temitas que fui corrigiendo on demand. Cambié la BD de SQLite a PostgreSQL. Cambié el máximo tamaño para el hashtag de 10 a 20 (gracias walteralini por probarlo). No funcionaba la página "contact us" por que arrastré la configuración del viejo hosting.

Tengo que arreglar algunas cosas de usabildad todavía, el workflow logearse/editar puede ser engorroso, pero ya son detalles sutiles.

El sitio queda on line y ya tenemos algunos felices usuarios de esta nueva era. ¿Ideas o sugerencias? Dejalas en los comentarios!


Fotografiando desde el camino (segunda edición)

Hace 2 años había empezado a publicar fotos instantáneas en mi blog. Las sacaba con el celular (un Nokia 6131) y en segundos estaban on line mostrando la última en la sidebar. En ese entonces no tenía el celular que tengo ahora, y tuve que arreglarmelas con tremento hack para lograr la funcionalidad que buscaba.

Hoy con un Motorolla Milestone que tiene más capacidad de procesamiento que las computadoras que llevaron al hombre a la luna y más conectividad que muchos países, el tema es más sencillo.

Publico fotos através de Twitpic con mi cliente de Twitter Seesmic y las muestro usando el plugín My Pictures Widget para Wordpress. Nice.


me on twitter

twitter es un servicio gratuito de micro blogging que permite a sus usuarios enviar pequeñas porciones de texto (también denominadas "tweets"), con una longitud máxima de 140 caracteres, donde se responde a la pregunta ¿Qué estás haciendo?. El envío de estos mensajes se puede realizar tanto a través de su sitio web, como vía SMS, desde programas de mensajería instantánea, o incluso desde cualquier aplicación de terceros.

Estas actualizaciones se muestran en la página de perfil del usuario, y son también enviadas de forma inmediata a otros usuarios que han elegido la opción de recibirlas. A estos usuarios se les denomina seguidores (followers).

Después de tener mi cuenta inactiva por más de un año, con este tweet la vuelvo a utilizar:

Mi idea es postear micro entradas sobre temas técnicos; detalles, problemas, soluciones o ideas en tiempo real. Voy a estar usando el inglés como idioma en las mismas.

Seguime!