Underc0de

Programación Scripting => Python => Mensaje iniciado por: Sajuuk en Mayo 31, 2015, 04:12:08 PM

Título: Un bot que publica por nosotros en Twitter
Publicado por: Sajuuk en Mayo 31, 2015, 04:12:08 PM
Muy buenas a todos!
Estuve leyendo un tutorial sobre cómo nosotros podemos publicar en Twitter desde Python, usando una librería, y un archivo de texto con lo que el programa publicará.

Pero antes, necesitamos crear una app en Twitter, ya que esta app nos permitirá tener las claves necesarias para poder autentificarnos en Twitter "legalmente", y poder usar su API para poder publicar algo.

Así que primero la crearemos:



Ingresamos a la página de desarrollo de apps en Twitter, y presionamos el boton para crear una nueva app:
https://apps.twitter.com/ (https://apps.twitter.com/)
(http://i57.tinypic.com/2nquvpu.png)




Enseguida nos encontraremos con unos campos que serán necesarios para el nombre, detalles y otras cosas de la nueva app.
Los que están en asteriscos rojos son obligatorios
(http://i58.tinypic.com/14xvk0.png)

Aceptamos los términos de abajo, y damos clic en Crear aplicación
(http://i58.tinypic.com/e8rbeh.png)




Listo, hemos creado nuestra "app".
(http://i62.tinypic.com/2duj8zm.png)

Ahora, necesitamos unas claves, que nos permitirán autentificarnos con nuestra app. Sin ellas, es como querer abrir una casa sin tener una llave.... algo así. (?
Y también, tengan cuidado con esas claves, ya que un usuario puede crear otra aplicación, usar tus claves, y publicar desde tu cuenta (o manipularla, en el peor de los casos)

¿Ven la parte de arriba, "Keys and Access Tokens"?
Entramos ahi, y nos encontraremos con algunas cosillas:
(http://i59.tinypic.com/33moc8z.png)

A nosotros nos interesan estas 2 cosas: Consumer Key (API Key), y Consumer Secret (API Secret).
Cada app tiene la suya.

Ahora, necesitamos otras 2 cosillas: Los tokens, que también nos servirán para los permisos de escritura y demás en nuestra cuenta.
Aún no se han generado, pero para esto, presionamos el botón "Create my access token", que se localiza abajo de lo que está en la imagen de arriba.
(http://i61.tinypic.com/j6s6m9.png)



Listo, ya tenemos nuestas keys y tokens que el programa usará para autentificarse en Twitter y poder usar la API.
Ahora, necesitamos una librería de python que se encargará de ello: Tweepy.
Si no la tienes, solo tienes que descargarla.
Para esto, podemos usar pip. Así que abrimos la consola, y escribimos lo siguiente:
Citarpip install tweepy
Ahora podemos usar la librería!



La importamos, y además, importamos otras 2 librerías:
Citarimport tweepy, time, sys

Importamos time para poder permitir esperar un tiempo entre cada publicación (Y no estar publicando como locos, sino esperando unos momentos...)
Y usamos la librería sys para poder importar el archivo de texto que contendrá los tweets.

Ahora, en una variable guardamos el nombre del archivo pasado como argumento en la consola:
Código (python) [Seleccionar]
argfile = str(sys.argv[1])

Ahora, necesitamos guardar en unas variables las claves y los tokens que usaremos.
Nos regresamos a la página, y copiamos la Consumer Key,  Consumer Secret, Access Token, y la Access Token Secret.
Código (python) [Seleccionar]

CONSUMER_KEY = 'jajajajxDSoyUnaClaveGGG'
CONSUMER_SECRET = 'djnadoamcaeocmoaincoadoajodjaoe666'
ACCESS_KEY = 'Underc0deEsMiCasa-CasiCasiPeroNoPorquexD'
ACCESS_SECRET = 'SaludosALaMuerteBlancaxDZoyJenial'


Ahora, necesitamos crear un enlace a Twitter para poder autentificarnos:
Código (python) [Seleccionar]
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

Después, le enviamos a Twitter los tokens de nuestra App, permitiendonos entrar:
Código (python) [Seleccionar]
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

Y ahora, podemos usar la API de Twitter, para poder publicar tweets:
Código (python) [Seleccionar]
api = tweepy.API(auth)



Muy bien, ahora, leeremos el archivo que contiene nuestros tweets a publicar:
Código (python) [Seleccionar]

filename = open(argfile,'r')
f = filename.readlines()
filename.close()


Ahora, 1 tweet es una linea completa que se localice en nuestro archivo. Si aun no lo has creado, hazlo:
Código (text) [Seleccionar]

Hi! Im a robot crafted in Python
#Underc0de is ma' house!
Beep boop buuup


Como podemos ver, "Hi! Im a robot..." es nuestra primera linea, entonces, este será el primer tweet.

Ahora, por cada linea que se encuentre en el archivo de texto, "tweetearemos":
Código (python) [Seleccionar]
for line in f:
    print("[+] Tweeting something...")
    api.update_status(status = line)
    print("[+] Tweet: ", line)
    time.sleep(200)


La función update_status nos permitirá publicar nuestro tweet.
Al final, el programa espera un tiempo antes de publicar la siguiente linea.



Y como podemos ver...
(http://i59.tinypic.com/2w4h6o5.png)



Código completo del programa:
Código (python) [Seleccionar]

# -*- coding: utf-8 -*-

import tweepy, time, sys

argfile = str(sys.argv[1])

CONSUMER_KEY = 'jajajajxDSoyUnaClaveGGG'
CONSUMER_SECRET = 'djnadoamcaeocmoaincoadoajodjaoe666'
ACCESS_KEY = 'Underc0deEsMiCasa-CasiCasiPeroNoPorquexD'
ACCESS_SECRET = 'SaludosALaMuerteBlancaxDZoyJenial'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

filename = open(argfile,'r')
f = filename.readlines()
filename.close()

for line in f:
    print("[+] Tweeting something...")
    api.update_status(status = line)
    print("[+] Tweet: ", line)
    time.sleep(20)




El programa no captura ningún error, así que si tienen errores, pueden googlearlos ustedes mismos.
Los más comunes son que por ejemplo, se equivoquen al copiar las keys o tokens, o también, que tweeteen algo retweeteado / posteado ya (Repetido, pues)
Te ha hablado Barlan y te deseo... buenas noches.
Título: Re:Un bot que publica por nosotros en Twitter
Publicado por: [L]ord [R]NA en Junio 02, 2015, 08:06:23 PM
Tengo uno, pero bajo NodeJS... tengo que ponerle la mano para que sea mas intuitivo, pero literalmente es igual.