Add ability to query extended tweet

pull/4/head
Max Treskin 2021-02-04 01:20:57 +03:00
rodzic 7da314aa05
commit f22aa20d29
1 zmienionych plików z 10 dodań i 7 usunięć

Wyświetl plik

@ -55,11 +55,11 @@ class Downloader:
raise RuntimeError("Bearer TokenNot Fetched") raise RuntimeError("Bearer TokenNot Fetched")
def download_media_of_tweet(self, tid, save_dest, size="large", include_video=False, def download_media_of_tweet(self, tid, save_dest, size="large", include_video=False,
include_photo=True): include_photo=True, is_extended=False):
''' ''' ''' '''
save_dest = ensure_dir(save_dest) save_dest = ensure_dir(save_dest)
tweet = self.get_tweet(tid) tweet = self.get_tweet(tid, is_extended)
self.process_tweet(tweet, save_dest, size, include_video, include_photo) self.process_tweet(tweet, save_dest, size, include_video, include_photo)
def download_media_of_user(self, user, save_dest, size="large", limit=3200, rts=False, def download_media_of_user(self, user, save_dest, size="large", limit=3200, rts=False,
@ -165,25 +165,28 @@ class Downloader:
return self.api_fetch_tweets(apiurl, payload, start, count, rts, since_id) return self.api_fetch_tweets(apiurl, payload, start, count, rts, since_id)
def get_tweet(self, id): def get_tweet(self, tid, is_extended=False):
"""Download single tweet """Download single tweet
Args: Args:
id: Tweet ID. tid: Tweet ID.
is_extended: extended tweet mode
""" """
bearer_token = self.bearer_token bearer_token = self.bearer_token
url = "https://api.twitter.com/1.1/statuses/show.json" url = "https://api.twitter.com/1.1/statuses/show.json"
headers = {"Authorization": f"Bearer {bearer_token}"} headers = {"Authorization": f"Bearer {bearer_token}"}
payload = {"id": id, "include_entities": "true"} payload = {"id": tid, "include_entities": "true"}
if is_extended:
self.log.info("Extended mode")
payload["tweet_mode"] = "extended"
# get the request # get the request
r = requests.get(url, headers=headers, params=payload) r = requests.get(url, headers=headers, params=payload)
# check the response # check the response
if r.status_code == 200: if r.status_code == 200:
tweet = r.json() tweet = r.json()
self.log.info(f"Got tweet with id {id} of user @{tweet['user']['name']}") self.log.info(f"Got tweet with id {tid} of user @{tweet['user']['name']}")
return tweet return tweet
else: else:
self.log.error(f"{url} error, code was {r.status_code}") self.log.error(f"{url} error, code was {r.status_code}")