[+] Combine tweets for sample
This commit is contained in:
@@ -5,6 +5,7 @@ import random
|
|||||||
from typing import NamedTuple
|
from typing import NamedTuple
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
import dateutil.parser
|
||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from py7zr import SevenZipFile
|
from py7zr import SevenZipFile
|
||||||
@@ -206,8 +207,8 @@ class Posting(NamedTuple):
|
|||||||
popularity: int
|
popularity: int
|
||||||
# Is it a repost
|
# Is it a repost
|
||||||
repost: bool
|
repost: bool
|
||||||
# Date
|
# Date in ISO format
|
||||||
date: datetime
|
date: str
|
||||||
|
|
||||||
|
|
||||||
def process_tweets() -> None:
|
def process_tweets() -> None:
|
||||||
@@ -235,7 +236,8 @@ def process_tweets() -> None:
|
|||||||
p = [Posting(is_covid_related(t['full_text']),
|
p = [Posting(is_covid_related(t['full_text']),
|
||||||
t['favorite_count'] + t['retweet_count'],
|
t['favorite_count'] + t['retweet_count'],
|
||||||
'retweeted_status' in t,
|
'retweeted_status' in t,
|
||||||
datetime.strptime(t['created_at'], '%a %b %d %H:%M:%S +0000 %Y'))
|
datetime.strptime(t['created_at'], '%a %b %d %H:%M:%S +0000 %Y')
|
||||||
|
.isoformat())
|
||||||
for t in tweets]
|
for t in tweets]
|
||||||
|
|
||||||
# Save data
|
# Save data
|
||||||
@@ -280,6 +282,31 @@ def is_covid_related(text: str) -> bool:
|
|||||||
return any(k in text.lower() for k in keywords)
|
return any(k in text.lower() for k in keywords)
|
||||||
|
|
||||||
|
|
||||||
|
def combine_tweets_for_sample(sample: list[str], name: str) -> None:
|
||||||
|
"""
|
||||||
|
Combine tweets data for every user in a sample
|
||||||
|
|
||||||
|
Preconditions:
|
||||||
|
- name is a valid file name for your OS.
|
||||||
|
|
||||||
|
:param sample: Sample is a list of users' screen names
|
||||||
|
:param name: The name of the sample
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
tweets: list[Posting] = []
|
||||||
|
for u in sample:
|
||||||
|
tweets += load_tweets(u)
|
||||||
|
|
||||||
|
# Sort by date, latest first
|
||||||
|
tweets.sort(key=lambda x: x.date, reverse=True)
|
||||||
|
|
||||||
|
# Ignore tweets that are earlier than the start of COVID
|
||||||
|
tweets = [t for t in tweets if t.date > '2020-01-01T01:01:01']
|
||||||
|
|
||||||
|
# Save
|
||||||
|
write(f'{TWEETS_DIR}/sample-combined/{name.replace(" ", "-")}.json', json_stringify(tweets))
|
||||||
|
|
||||||
|
|
||||||
def pack_data() -> None:
|
def pack_data() -> None:
|
||||||
"""
|
"""
|
||||||
This function packs processed data and raw data separately.
|
This function packs processed data and raw data separately.
|
||||||
|
|||||||
Reference in New Issue
Block a user