Skip to content

Instantly share code, notes, and snippets.

@EricMarques
Created October 21, 2018 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EricMarques/5bcaa21fa307411638bb60b651be32f2 to your computer and use it in GitHub Desktop.
Save EricMarques/5bcaa21fa307411638bb60b651be32f2 to your computer and use it in GitHub Desktop.
Streaming Twitter
# Instala o pacote tweepy
#!pip install tweepy
# Importando os módulos Tweepy, Datetime e Json
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
from datetime import datetime
import json
# Consumer Key
consumer_key = "consumer_key"
# AConsumer Secret
consumer_secret = "consumer_secret"
# Access Token
access_token = "access_token"
# Access Token Secret
access_token_secret = "access_token_secret"
# Criar as chaves de autenticação
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
# Classe para capturar os stream de dados do Twitter e armazenar no MongoDB(Banco de Dados)
class MyListener(StreamListener):
def on_data(self, dados):
tweet = json.loads(dados)
created_at = tweet["created_at"]
id_str = tweet["id_str"]
in_reply_to_screen_name = tweet["in_reply_to_screen_name"]
text = tweet["text"]
obj = {"created_at":created_at,"id_str":id_str, "in_reply_to_screen_name": in_reply_to_screen_name, "text":text, } #"name" : ["user"]["name"], "screen_name" : ["user"]["screen_name"],
tweetind = col.insert_one(obj)#.inserted_id
print (obj)
return True
# Criando o objeto mylistener
mylistener = MyListener()
# Criando o objeto mystream
mystream = Stream(auth, listener = mylistener)
# Importando do PyMongo o módulo MongoClient
from pymongo import MongoClient
# Conexão ao MongoDB
client = MongoClient('localhost', 27017)
# Criando o banco de dados twitterdb
db = client.twitterdb
# Criando a collection "col"
col = db.tweets
# Lista de palavras chave para buscar nos Tweets - Agências Espaciais
keywords = ['@NASA', '@SANSA7', '@AFSpace', '@CNSA_en', '@esa', '@isa', '@ILSpaceAgency', '@ASI_spazio', '@isro', '@JAXA_en', '@CNES', '@roscosmos',]
# Iniciando o filtro e gravando os tweets no MongoDB
mystream.filter(track=keywords)
#Fechando conexão com mystream
mystream.disconnect()
@EricMarques
Copy link
Author

Streaming

@fabiomathu
Copy link

muito legal Eric, mas como faria para pegar os extended tweets? por que nesse modo, os tweets aparecem truncados em 140 carcteres, o que modificar?

@EricMarques
Copy link
Author

Opa... blz @fabiomathu... olha só... quando fiz esta sugestão de código, utilizei o limite "antigo" doas caracteres do Tweets, ou seja, antes de Novembro de 2017 o máximo de caracteres dos Tweets eram o total de 140, atualmente esta quantidade foi "dobrada", ou seja, os tweets possuem até 280 caracteres.
Para que seja possível você coletar esta informação, você deve alterar o atributo "text" para "full_text".

Recomendo você dar uma olhada na documentação da biblioteca Tweepy.
http://docs.tweepy.org/en/latest/extended_tweets.html?highlight=character#introduction

@fabiomathu
Copy link

fabiomathu commented Jul 16, 2020 via email

@EricMarques
Copy link
Author

Boa tarde Fabio!
Podemos sim, só marcar dia e horário que vejo se consigo entrar em conferência com você.

@fabiomathu
Copy link

fabiomathu commented Jul 16, 2020 via email

@EricMarques
Copy link
Author

Veja se consegue me encontrar no skype pelo meu e-mail...
erc_m@hotmail.com

@fabiomathu
Copy link

fabiomathu commented Jul 17, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment