Posted by & filed under Uncategorized.

Hace un par de semanas, una amiga me pidió que haga like en una página de facebook y siga en twitter a una determinada cuenta; se trataba de una página y una cuenta que representaban un negocio ficticio, parte de un trabajo práctico para la facultad. Obviamente accedí y en ese momento se me ocurrió si le interesaba automatizar la cuenta de twitter, me pareció interesante implementar que la cuenta twittee automáticamente, responda con un saludo un nuevo follower, etc; así que me puse a buscar de que manera implementar la automatización.

Primero recurrí a servicios online como botize o twitterfeed que si bien son servicios fáciles de usar, son algo límitados; además perdemos todo el entretenimiento en implementar nuestro propio bot, no?

Entonces me topé con la librería de Python (raro yo con este lenguaje, no?) llamada twython de Ryan McGrath. Antes de ponernos a utilizar la librería es necesario aclarar que necesitamos crear una aplicación en el sitio de desarrolladores de twitter, a lo que es mi entendimiento en un pasado era posible iniciar una sesión simplemente mediante un usuario y contraseña; pero ahora es necesario hacerlo mediante una app.

No voy a detallar la creación de la app dado que considero que no representa un desafío a los efectos que haremos acá, pero si un par de aclaraciones:

  1. Ajustar el Access Level acorde a lo que queramos hacer.
  2. Consumer key/secret son las credenciales de la aplicación, las utilizaremos.
  3. Access token/secret son nuestras credenciales de acceso a la aplicación, también utilizaremos estas.

Existe una manera medianamente sencilla de darle acceso a un tercero pero en el contexto de este artículo no será detallado.

Manos a la obra

Ahora a divertirnos, a tirar código! Primero lo primero, importar las librerías necesarias y crear una instancia de nuestro “login”, mediante el cuál haremos todo.

#Importamos los elmentos a utilizar
from twython import Twython, TwythonError, TwythonRateLimitError

#Instanciamos pasando como parametro las credenciales obtenidas
t = Twython(app_key='',
    app_secret='',
    oauth_token='',
    oauth_token_secret='')

Ahora por ejemplo, twittiemos el típico “hola mundo”

t.updateStatus(status='hello world')

Supongamos ahora que queremos responder a un tweet, teniendo el id entonces:

t.updateStatus(status = 'respuesta', in_reply_to_status_id = 'id')

Ahora supongamos que somos gente muy cariñosa y deseamos mandarles un saludo de buenas noches a todos nuestros followers

#Obtenemos nuestros followers, nos devolvera un diccionario
followers = t.getFollowersIDs()
#Obtenemos los ids de nuestros followers
followers_ids = followers["ids"]
for follower in followers_ids :
    #Obtenemos el nombre de usuario
    username = t.lookupUser(user_id=follower_id)[0]["screen_name"]
    t.updateStatus(status='@'+username+' buenas noches mi querido follower')

Existe una manera más eficiente en el cuál no hace falta hacer otra búsqueda para obtener el nombre del usuario, pero no está implementada el la librería (pareciera).

Ahora por ejemplo realizemos una búsqueda de todos aquellos tweets que contengan aleperno y respondamosles, para ellos nos vamos a valer con la función de búsqueda

search = t.search(q="aleperno",count="5")
tweets = search["statuses"]
for tweet in tweets:
    tweet_id = str(tweet["id"])
    user_name = tweet["user"]["screen_name"]
    t.updateStatus(status='@'+user_name+' Me llamaban?',in_reply_to_status_id=tweet_id)

Hay que tener en cuenta que twitter controla las búsquedas y las interacciones para detectar conductas abusivas, por lo que hay que tener cuidado de que es lo que hacemos; es recomendable referirse a la página de desarrolladores en la cuál está detallada una lista de prácticas a evitar.

Debido a la poca interacción que tuve con esta librería (el script que hice lo hice en 2 días y no toqué mucho más) quizá esta entrada carezca de profundidad, pero al menos creo que sirve para tener una idea de que la interfaz de la librería es bastante amigable y no nos debería costar demasiado hacer algo interesante.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *