lunes, 7 de julio de 2014

#IBEX35.- Experiment Alpha With #Tweepy, #Python and #GoogleFinance

Como habréis podido ver en Twitter y si no os lo explico ahora, hoy iba a mirar un poco [mi cliente de Twitter] del que os hable hace ya unos días. Pero, ya que fui capaz de [obtener valores a través de Google Finance y Python], me ha hecho gracia montarme un programa que hiciera un tweet por cada valor del IBEX 35 y lo repitiera cada n segundos. Si, podría haber hecho que cuando me detectara un cambio lo anunciara, pero no hubiera sido tan divertido como hacer enfadar a Twitter xD. 


Buscando la lista del Ibex35 por que de memoria no me las se aún y con un poco de ayuda de while y las listas he podido hacer un prototipo que me devolviera por la pantalla los valores como podéis ver. Por lo que solo he tenido que fusionar los dos scripts y hacerme otra cuenta para los Key de acceso y tokens (como es un script para una cuenta concreta el uso de mis tokens es necesario para no comerme la autentificación a través de pin) por lo que ha nacido el siguiente código.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib, re, os, time
import tweepy


def valoracion(busquedaGoogle):
url =  "http://www.google.com/finance?&q="
busqueda = urllib.urlopen(url+busquedaGoogle).read()
datos = re.search('id="ref_(.*?)">(.*?)<',busqueda)
if datos: 
t = time.localtime()
tiempo =[t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour, t.tm_min,t.tm_sec]
t1= busquedaGoogle +" --> "+ datos.group(2)+" <-- "+ str(tiempo)
tweet(t1)

else: 
out = "No he podido encontrar nada con " + busquedaGoogle
tweet(out)
def tweet(contenido):

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

if __name__ == "__main__":
Lista35= ["BME:ABG.P","BME:ABE","BME:ANA","BME:ACS","BME:AMS","AMS:MT","BME:POP","BME:SAB","BME:BKIA","BME:BKT","BME:BBVA","BME:BME","BME:CABK","BME:DIA","BME:ENG","BME:FCC","BME:FER","BME:GAM","BME:GAS","BME:GRF","BME:IAG","BME:IBE","BME:ITX","BME:IDR","BME:JAZ","BME:MAP","BME:TL5","BME:OHL","BME:REE","BME:REP","BME:SCYR","BME:SAN","BME:TRE","BME:TEF","BME:VIS"]

while True:
for item in Lista35:
valoracion(item)

Y la siguiente cuenta de Twitter: 

La cual ha sido pillada por exceso de tweets:


La verdad es que me ha encantado ponerme manos en la masa con esto y no me arrepiento de que hayan suspendido la cuenta. Ahora toca pensar como poder hacer esto de una manera menos agresiva. Por cierto, os dejo la foto del error que te salta cuando excedes el limite de tweets.


Sed Buenos ;)

1 comentario:

  1. Para evitar todo ello estimado Albertito podias meterte en un do while o hacer algo de tiempo cada 15 segunos o 30 segunos lanzar xDDD algo de esto me hablo RizelTane, que se necesita de un timepo para continuar porque no le preguntes a ella y te dira ;).

    Regards,
    Snifer

    ResponderEliminar