Created
March 6, 2018 03:56
-
-
Save felipekoblinger/0faeced67bf59f699e48cfca5bec92df to your computer and use it in GitHub Desktop.
Saving tweets into MongoDB using Tweepy and PyMongo - TBI004 - FATEC SJC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Saving tweets into MongoDB using Tweepy and PyMongo | |
# Author: Felipe Koblinger | |
import tweepy | |
from pymongo import MongoClient | |
from datetime import datetime | |
# Application Settings | |
consumer_key = "replace with your consumer key" | |
consumer_secret = "replace with your consumer secret" | |
# Your Access Token | |
access_token = "replace with your access token" | |
access_token_secret = "replace with your access token secret" | |
# API from OAuth | |
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) | |
auth.set_access_token(access_token, access_token_secret) | |
api = tweepy.API(auth) | |
class StreamListener(tweepy.StreamListener): | |
def on_status(self, status): | |
connection = MongoClient("mongodb://localhost") | |
database = connection.tweets | |
retweet = status._json.get("retweeted_status") | |
# If is a Retweet or a commom tweet | |
if retweet: | |
if retweet.get('full_text'): | |
tweet_type = 'retweet_extended' | |
tweet_text = retweet.get('full_text') | |
else: | |
tweet_type = 'retweet' | |
tweet_text = retweet.get('text') | |
else: | |
extended_tweet = status._json.get('extended_tweet') | |
if extended_tweet and 'full_text' in extended_tweet: | |
tweet_type = 'tweet_extended' | |
tweet_text = status.extended_tweet['full_text'] | |
else: | |
tweet_type = 'tweet' | |
tweet_text = status.text | |
tweet = { "_id": status.id_str, | |
"tweet_@": status.user.screen_name, | |
"tweet_type": tweet_type, | |
"tweet_text": tweet_text, | |
"tweet_created_at": status.created_at, | |
"created_at": datetime.utcnow() } | |
database.ruby.insert(tweet) | |
# Stream | |
stream = tweepy.Stream(auth = api.auth, | |
listener=StreamListener(), tweet_mode='extended') | |
stream.filter(track=['ruby']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment