71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
import os
|
|
import csv
|
|
import tweepy
|
|
import datetime
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
consumer_key = os.getenv('APIKEY', '0')
|
|
consumer_secret = os.getenv('APISECRET', '0')
|
|
access_token = os.getenv('ATOKEN', '0')
|
|
access_token_secret = os.getenv('ASECRET', '0')
|
|
|
|
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
|
|
auth.set_access_token(access_token, access_token_secret)
|
|
api = tweepy.API(auth, wait_on_rate_limit=True)
|
|
|
|
|
|
def save_hashtag_to_csv(hashtag, days, file):
|
|
csvFile = open(file, 'w', newline='', encoding='utf8')
|
|
csvWriter = csv.writer(csvFile)
|
|
print(os.path.getsize(file))
|
|
if os.path.getsize(file) ==0:
|
|
csvWriter.writerow(
|
|
[
|
|
"tweet.id",
|
|
"tweet.created_at",
|
|
"tweet.text",
|
|
"tweet.user.name",
|
|
"tweet.user.screen_name",
|
|
"tweet.user.location",
|
|
"tweet.user.id",
|
|
"tweet.user.followers_count",
|
|
"tweet.user.friends_count",
|
|
"tweet.user.favourites_count",
|
|
"tweet.user.description"
|
|
]
|
|
)
|
|
csvFile.flush()
|
|
base = datetime.date.today()+ datetime.timedelta(days=1)
|
|
for day in [base - datetime.timedelta(days=x) for x in range(days)]:
|
|
print(str(day), str(day - datetime.timedelta(days=1)))
|
|
for tweet in tweepy.Cursor(
|
|
api.search,
|
|
q=hashtag,
|
|
lang="en",
|
|
until=str(day),
|
|
since=str(day- datetime.timedelta(days=1)),
|
|
result_type= "mixed").items(250):
|
|
print(tweet.created_at, tweet.text)
|
|
csvWriter.writerow(
|
|
[
|
|
tweet.id,
|
|
tweet.created_at,
|
|
tweet.text.replace('\n', ' ').replace('\r', ''),
|
|
tweet.user.name,
|
|
tweet.user.screen_name,
|
|
tweet.user.location,
|
|
tweet.user.id,
|
|
tweet.user.followers_count,
|
|
tweet.user.friends_count,
|
|
tweet.user.favourites_count,
|
|
tweet.user.description.replace('\n', ' ').replace('\r', '')
|
|
]
|
|
)
|
|
|
|
# save_hashtag_to_csv("#covid", 7, "data/covid.csv")
|
|
# save_hashtag_to_csv("#quarantine", 7, "data/quarantine.csv")
|
|
|