[twitter] implement 'syndication=extended'

to be able to fetch extended user metadata
This commit is contained in:
ClosedPort22
2022-12-30 20:39:36 +08:00
parent 2d7d80d302
commit 7c8eab8d52
2 changed files with 14 additions and 4 deletions

View File

@@ -39,6 +39,7 @@ class TwitterExtractor(Extractor):
self.videos = self.config("videos", True)
self.cards = self.config("cards", False)
self.cards_blacklist = self.config("cards-blacklist")
self.syndication = self.config("syndication")
self._user = self._user_obj = None
self._user_cache = {}
self._init_sizes()
@@ -297,8 +298,11 @@ class TwitterExtractor(Extractor):
except KeyError:
pass
# try to fetch extended user data
if "legacy" in user:
user = user["legacy"]
elif "statuses_count" not in user and self.syndication == "extended":
user = self.api.user_by_screen_name(user["screen_name"])["legacy"]
uget = user.get
entities = user["entities"]
@@ -991,7 +995,6 @@ class TwitterAPI():
}
self._nsfw_warning = True
self._syndication = extractor.config("syndication")
self._json_dumps = json.JSONEncoder(separators=(",", ":")).encode
cookies = extractor.session.cookies
@@ -1494,7 +1497,7 @@ class TwitterAPI():
tweet_id = entry["entryId"].rpartition("-")[2]
if text.startswith("Age-restricted"):
if self._syndication:
if self.extractor.syndication:
return self._syndication_tweet(tweet_id)
elif self._nsfw_warning:
self._nsfw_warning = False