mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
c909da9b08
* pre-commit: Upgrade psf/black for stable style 2023 Updating https://github.com/psf/black ... updating 22.12.0 -> 23.1.0 for their `2023 stable style`. * https://github.com/psf/black/blob/main/CHANGES.md#2310 > This is the first [psf/black] release of 2023, and following our stability policy, it comes with a number of improvements to our stable style… Also, add https://github.com/tox-dev/pyproject-fmt and https://github.com/abravalheri/validate-pyproject to pre-commit. I only modified `.pre-commit-config.yaml` and all other files were modified by pre-commit.ci and psf/black. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
import csv
|
|
|
|
import tweepy
|
|
|
|
# Twitter API credentials
|
|
consumer_key = ""
|
|
consumer_secret = ""
|
|
access_key = ""
|
|
access_secret = ""
|
|
|
|
|
|
def get_all_tweets(screen_name: str) -> None:
|
|
# authorize twitter, initialize tweepy
|
|
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
|
|
auth.set_access_token(access_key, access_secret)
|
|
api = tweepy.API(auth)
|
|
|
|
# initialize a list to hold all the tweepy Tweets
|
|
alltweets = []
|
|
|
|
# make initial request for most recent tweets (200 is the maximum allowed count)
|
|
new_tweets = api.user_timeline(screen_name=screen_name, count=200)
|
|
|
|
# save most recent tweets
|
|
alltweets.extend(new_tweets)
|
|
|
|
# save the id of the oldest tweet less one
|
|
oldest = alltweets[-1].id - 1
|
|
|
|
# keep grabbing tweets until there are no tweets left to grab
|
|
while len(new_tweets) > 0:
|
|
print(f"getting tweets before {oldest}")
|
|
|
|
# all subsequent requests use the max_id param to prevent duplicates
|
|
new_tweets = api.user_timeline(
|
|
screen_name=screen_name, count=200, max_id=oldest
|
|
)
|
|
|
|
# save most recent tweets
|
|
alltweets.extend(new_tweets)
|
|
|
|
# update the id of the oldest tweet less one
|
|
oldest = alltweets[-1].id - 1
|
|
|
|
print(f"...{len(alltweets)} tweets downloaded so far")
|
|
|
|
# transform the tweepy tweets into a 2D array that will populate the csv
|
|
outtweets = [[tweet.id_str, tweet.created_at, tweet.text] for tweet in alltweets]
|
|
|
|
# write the csv
|
|
with open(f"new_{screen_name}_tweets.csv", "w") as f:
|
|
writer = csv.writer(f)
|
|
writer.writerow(["id", "created_at", "text"])
|
|
writer.writerows(outtweets)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# pass in the username of the account you want to download
|
|
get_all_tweets("FirePing32")
|