terça-feira, 30 de setembro de 2014

Tweets em um arquivo CSV

Após ter sucesso na postagem e leitura dos tweets em tempo real, precisamos de algo mais útil para seguir o projeto, pois não basta só exibir tais tweets, temos que armazená-los para jogar em um banco de dados e no futuro analisarmos. Assim, a minha idéia foi um arquivo, pois seria fácil extrair depois em qualquer linguagem que eu desejar usar.

Pesquisando sobre códigos, achei um código bem sucinto e interessante que transformava os tweets em um arquivo CSV. Bom, mas o que é um arquivo CSV?

Arquivo CSV (Comma-separeted values) possui uma primeira linha como um cabeçalho que define os campos do objeto em questão e em seguido as instâncias do objeto, com os valores campos separados por vírgula

ex: 
User, data e hora, texto do tweet
Lobatadas,2014-09-30 21:53:10,"Preso há apenas 10 meses, Delúbio já vai cumprir pena em casa.
Fosse um cidadão comum, seria assim também? #mensalão #eleicoes2014"

Colocando em prática o código abaixo, infelizmente o programa não funcionava. Estava usando a última versão d tweepy disponivel na conta do GitHub. O erro que estava ocorrendo tinha poucas referências na internet e nenhuma com solução. Concluí que vinha de alguma classe dentro do código do tweepy. Assim, entrei no github e mandei email para alguns dos colaboradores do código (open source) e obtive uma resposta logo em seguida. 

" The latest Tweepy code from the git repostiroy has some bugs. I'd recommend using version 2.3.0 for now.

Good luck with your project! "


Tinha testado algumas outras versões mas que continuavam com um mesmo erro ou algum erro diferente.
Então, baixei a versão 2.3 e o código começou a funcionar, gerando alguns conflitos.
por exemplo: quando o tweet tem uma geolocalização, não é possivel capturá-lo e está dando um erro de "rate limit exceed" que precisa ser consertado.


Código usado como exemplo:
#!/usr/bin/python
import tweepy
import csv #Import csv
auth = tweepy.auth.OAuthHandler('XXXXXX', 'XXXXXXX')
auth.set_access_token('XXX-XXX', 'XXX')

api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('result.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search, 
                    q="google", 
                    since="2014-02-14", 
                    until="2014-02-15", 
                    lang="en").items():
    #Write a row to the csv file/ I use encode utf-8
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
    print tweet.created_at, tweet.text
csvFile.close()

quinta-feira, 25 de setembro de 2014

TWEEPY

Um jeito fácil de usar biblioteca python para acessar twitter API.

Documentação:
https://media.readthedocs.org/pdf/tweepy/latest/tweepy.pdf

Código para escrever no meu twitter via tweepy:

import tweepy

# == OAuth Authentication ==
#
# This mode of authentication is the new preferred way
# of authenticating with Twitter.

# The consumer keys can be found on your application's Details
# page located at https://dev.twitter.com/apps (under "OAuth settings")
consumer_key="ITAeiVaqrS21zmYTmmHXaQ3h1"
consumer_secret="Hay3hh3uCOcJ1nk96zPKffgwIMZnHRE18afdlzUzCklH5arXNa"

# The access tokens can be found on your applications's Details
# page located at https://dev.twitter.com/apps (located 
# under "Your access token")
access_token="136375442-t59V1rbJz3hUK1t7hjJqmSYMexWh1PoiCf9dpS7b"
access_token_secret="1rVRTEhyrMnz33qhFWwVzRhzYklSLL8WB2yT1KbWgz1Ai"

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.secure = True
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

# If the authentication was successful, you should
# see the name of the account print out
print api.me().name

# If the application settings are set for "Read and Write" then
# this line should tweet out the message to your account's 
# timeline. The "Read and Write" setting is on https://dev.twitter.com/apps
api.update_status('Updating using OAuth authentication via Tweepy!')







Código para buscar tweets com 'eleicoes2014' e exibir no cmd:

import tweepy
import json

# Authentication details. To  obtain these visit dev.twitter.com
consumer_key = 'ITAeiVaqrS21zmYTmmHXaQ3h1'
consumer_secret = 'Hay3hh3uCOcJ1nk96zPKffgwIMZnHRE18afdlzUzCklH5arXNa'
access_token = '136375442-t59V1rbJz3hUK1t7hjJqmSYMexWh1PoiCf9dpS7b'
access_token_secret = '1rVRTEhyrMnz33qhFWwVzRhzYklSLL8WB2yT1KbWgz1Ai'

# This is the listener, resposible for receiving data
class StdOutListener(tweepy.StreamListener):
    def on_data(self, data):
        # Twitter returns data in JSON format - we need to decode it first
        decoded = json.loads(data)

        # Also, we convert UTF-8 to ASCII ignoring all bad characters sent by users
        print '@%s: %s' % (decoded['user']['screen_name'], decoded['text'].encode('ascii', 'ignore'))
        print ''
        return True

    def on_error(self, status):
        print status

if __name__ == '__main__':
    l = StdOutListener()
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    print "Showing all new tweets for #eleicoes2014:"

    # There are different kinds of streams: public stream, user stream, multi-user streams
    # In this example follow #programming tag
    # For more details refer to https://dev.twitter.com/docs/streaming-apis
    stream = tweepy.Stream(auth, l)
    stream.filter(track=['eleicoes2014'])



segunda-feira, 22 de setembro de 2014

código python

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener

ckey = 'HPZLP2PF7ktZpIBkQHCR4Bn1B'
csecret = 'KTVKfGsLqTWKSjZEkUbGOuOW0kuRi1dgKCtYSHcyJMxMuF8sgG'
atoken = '136375442-7RolevcTndEUHsinbOBWpI8bBOyzqqOmRaWDJLCi'
asecret = 'yd1biftCLMkaet9stnZDCK8kwzwlGZyYFzrF3eYeczHNN'

class listener(StreamListener):

def on_data(self, data):
print data
return True

def on_error(self, status):
print status

auth = OAuthHandler (ckey, csecret)
auth.set_access_token (atoken, asecret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track = ["eleicoes2014"])


 Conseguiu ter acesso aos dados mas deu um erro no final, como se fosse um loop infinito.

domingo, 21 de setembro de 2014

OAuth Core 1.0

The OAuth protocol enables websites or applications (Consumers) to access Protected Resources from a web service (Service Provider) via an API, without requiring Users to disclose their Service Provider credentials to the Consumers. More generally, OAuth creates a freely-implementable and generic methodology for API authentication.

Esse tipo de segurança é usada na API do twitter, e para conseguir pegar as informações da API é necessária uma autenticação pelo OAuth.

Como conseguir?
OAuth authentication is the process in which Users grant access to their Protected Resources without sharing their credentials with the Consumer. OAuth uses Tokens generated by the Service Provider instead of the User’s credentials in Protected Resources requests. The process uses two Token types:
Request Token:
Used by the Consumer to ask the User to authorize access to the Protected Resources. The User-authorized Request Token is exchanged for an Access Token, MUST only be used once, and MUST NOT be used for any other purpose. It is RECOMMENDED that Request Tokens have a limited lifetime.
Access Token:
Used by the Consumer to access the Protected Resources on behalf of the User. Access Tokens MAY limit access to certain Protected Resources, and MAY have a limited lifetime. Service Providers SHOULD allow Users to revoke Access Tokens. Only the Access Token SHALL be used to access the Protect Resources.
OAuth Authentication is done in three steps:
  1. The Consumer obtains an unauthorized Request Token.
  2. The User authorizes the Request Token.
  3. The Consumer exchanges the Request Token for an Access Token.


sábado, 20 de setembro de 2014

Semana 14/09/2014 - 20/09/2014


Durante os dias da semana estava um pouco enrolada com provas e não me programei bem, trabalhando pouco no assunto, deixando para recompensar no final de semana. 
Já consegui o token para o acesso da API, agora é preciso começar a programar. Porém, a maneira mais fácil de trabalhar com essa API, pelo que pude pesquisar, é usando a linguagem Python, a qual nunca tive acesso antes. 
Então, no momento, estou instalando as ferramentas necessárias para poder começar a estudar um pouco sobre essa linguagem.
Vi que existem bastantes tutoriais de como trabalhar com a API, então acho que já vai ser uma ajuda por não dominar a linguagem usada.
Algumas fontes diziam que é possível trabalhar com outras linguagem de programação, mas seria então necessário um conhecimento muito mais aprofundado da API. No caso, a princípio, estou optando trabalhar com python.

sites pesquisados:

vídeos com tutoriais

sites do twitter para desenvolvedores, para futuras consultas:

1) exemplos de request e result

2) como fazer queries

3)Streaming API

"Before getting involved, it’s important to know that the Search API is focused on relevance and not completeness. This means that some Tweets and users may be missing from search results. If you want to match for completeness you should consider using a Streaming API instead."


terça-feira, 16 de setembro de 2014

Semana 06/09/2014 - 13/09/2014

Olá Sérgio,

Essa semana pesquisei as possíveis ferramentas que poderia usar para extrair as informações do Twitter de acordo com uma hashtag.

A melhor encontrada foi a API disponibilizada pelo próprio Twitter, a Twitter Search API, que nos possibilita fazer consultadas sobre usuários, hastags e dia/horário. Além disso, pelo que vi, também pode nos dar informações sobre retweets ( quando um usuário "reposta" o tweet de outro usuário), informação que o professor Arthur pelo visto não tem mas  que pode acrescentar alguns dados importantes para a sua pesquisa. Essa API retorna a query em um formato JSON, dei uma estudada no assunto pois nunca tinha visto antes. 

Porém, para usar a API é necessária uma autenticação. Estou, portanto, procurando como faço para ter acesso a essa ferramenta, como se obtêm a certificação.  Após obter acesso, será mais fácil começar a desenvolver o trabalho.

Maria Beatriz

Reunião com professor Arthur Ituassu

Reunião dia 04/09/2014

O professor Arthur Ituassu faz um trabalho na área de Internet e Democracia com base no twitter, por ser uma ferramente pública, onde tira os dados relacionados a uma hashtag desejada, por exemplo, #eleicoes2014, e gera pds para poder analisar os dados e gerar suas conclusões. Seu foco é trabalhar com debates públicos em torno de hashtags, fazendo análises e diferenciações sobre mídias verticais e horizontais após o fim das eleições.

Como dito anteriormente, o trabalho é feito todo "na mão", e nosso objetivo seria então pode pegar esses dados automaticamente e jogar em um banco de dados. Foi mencionado a ferramente Twitter Search API para ajudar nesse processo.

Foi discutido também análise de sentimentos para poder classificar os tweets e separar em grupos como , por exemplo, a favor ou contra certo candidato político. Porém diferenciar os usuários em mídia, cidadão ou organização política, como é um desejo do professor, seria praticamente impossível através de alguma ferramenta.

Então começarei as pesquisas sobre como recolher o grande volume de dados gerados pelo twitter e armazenar em algum banco de dados. A principio ignoraremos as imagens, focaremos só nos textos dos tweets e links.

Maria Beatriz