Esse é o primeiro artigo de uma série que pretendo postar aqui no blog. Nessa "série" Dicas web2py serão postados artigos simples e rápidos para ajudarem desenvolvedores que utilizam o web2py como framework para desenvolvimento Web. Em um futuro não muito distante também estarão aqui pequenos tutoriais para quem ainda está iniciando. :-)
Se você usa o framework para desenvolvimento Web web2py, com pouquíssimas linhas você consegue enviar e receber tweets de maneira bem fácil. Resolvi postar essa dica aqui depois de corrigir alguns bugs no código que foi publicado no AlterEgo (um local onde armazenamos receitas de bolo para o web2py).
Seguindo a dica no AlterEgo dá pra ver que utilizando o simplejson fica fácil! Como o web2py web2py já possui o simplejson por padrão então não precisamos de mais nada!
Segue o código:
#Enviando tweets def post_tweet(username, password, message): from urllib import urlencode from base64 import b64encode from urllib2 import Request, urlopen import gluon.contrib.simplejson as sj args= urlencode([('status', message)]) headers = {} headers['Authorization'] = 'Basic ' + b64encode(username + ':' + password) request = Request('http://twitter.com/statuses/update.json', args, headers) return sj.loads(urlopen(request).read()) #Lendo tweets def get_tweets(user): from gluon.tools import fetch import gluon.contrib.simplejson as sj page = fetch('http://twitter.com/%s?format=json' % user) return sj.loads(page)['#timeline']
Para usar:
#Enviando um tweet: post_tweet('meu_usuario', 'minha_senha', 'Olá, Twitter! Estou no @web2py...') #Recebendo tweets do usuário 'web2py': meus_tweets = get_tweets('web2py')
Depois disso é só retornar meus_tweets na função de seu controller e utilizar na view como quiser. Bem simples, né? O código acessa a API do Twitter através da urllib2 e usa o simplejson para transformar uma string JSON em um dicionário Python.
No caso da função post_tweet temos um dicionário como retorno, que possui dados sobre o tweet enviado (id, data/hora, usuário etc.), já a função get_tweets retorna uma string com os tweets já em HTML.
O código acima já é utilizado no web2py: a interface administrativa (aplicação admin) mostra os últimos tweets do @web2py (procure pela função twitter no controller default.py).
--
Álvaro Justen
Peta5 - Telecomunicações e Software Livre