Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tweepy get tweets between two dates

Tags:

python

tweepy

I have the following code in Python:

import tweepy

consumer_key = "..."
consumer_secret = "..."

access_token = "..."
access_token_secret = "..."

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

start_date = datetime.datetime(2018, 1, 19, 12, 00, 00)
end_date = datetime.datetime(2018, 1, 19, 13, 00, 00)

api = tweepy.API(auth)

for tweet in tweepy.Cursor(api.user_timeline, screen_name="@IBM", since=start_date, until=end_date).items():
    print("ID TWEET: " + str(tweet.id))

Is there a way to get tweets between start_date and end_date, by modifying the cursor with tweepy?

I have already tried to use the since= and until= parameters, but they have not worked.

Thank you in advance.

like image 829
Alessandro Russo Avatar asked Apr 09 '18 10:04

Alessandro Russo


People also ask

How do I get my tweets from Tweepy?

Steps to obtain keys: – For access token, click ” Create my access token”. The page will refresh and generate access token. Tweepy is one of the library that should be installed using pip. Now in order to authorize our app to access Twitter on our behalf, we need to use the OAuth Interface.

How do I find tweets from a specific date in python?

You can only download tweets from a given hashtag through search something like this: twapi.search(q=query, count=100, since_id=since_id, max_id=str(last_id - 1), tweet_mode='extended') for the past 10 days.

Is Tweepy deprecated?

Deprecated since version 4.9: The Twitter API v1. 1 endpoint this method uses is now deprecated and will be retired on October 29, 2022.

What does Tweepy return?

Returns full Tweet objects for up to 100 Tweets per request, specified by the id parameter.


2 Answers

First of all the Twitter API does not allow to search by time. Trivially, what you can do is fetching tweets and looking at their timestamps afterwards in Python, but that is highly inefficient.

You can do that by the following code snippet.

consumerKey = "CONSUMER_KEY"
consumerSecret = "CONSUMER_SECRET"
accessToken = "ACCESS_TOKEN"
accessTokenSecret = "ACCESS_TOKEN_SECRET"

auth = tweepy.OAuthHandler(consumerKey, consumerSecret)
auth.set_access_token(accessToken, accessTokenSecret)

api = tweepy.API(auth)

username = sys.argv[1]
startDate = datetime.datetime(2011, 6, 1, 0, 0, 0)
endDate =   datetime.datetime(2012, 1, 1, 0, 0, 0)

tweets = []
tmpTweets = api.user_timeline(username)
for tweet in tmpTweets:
    if tweet.created_at < endDate and tweet.created_at > startDate:
        tweets.append(tweet)

while (tmpTweets[-1].created_at > startDate):
    tmpTweets = api.user_timeline(username, max_id = tmpTweets[-1].id)
    for tweet in tmpTweets:
        if tweet.created_at < endDate and tweet.created_at > startDate:
            tweets.append(tweet)

Although highly inefficient. It works, can helped me in creating my own bot.

like image 108
papaya Avatar answered Sep 20 '22 08:09

papaya


I've just used until (optional operator) and it seems to work pretty well. I used it like this:

tweets = tw.Cursor(api.search,
                   q=search_words,
                   lang="en",
                   since=date_since,
                   until=date_until,
                   result_type="recent"
                   ).items(2)
like image 32
gallardo_diego Avatar answered Sep 17 '22 08:09

gallardo_diego