[twitter] fix using user IDs for suspended accounts

This commit is contained in:
Mike Fährmann
2022-11-26 12:02:05 +01:00
parent c25905641e
commit 0e75358af8

View File

@@ -417,7 +417,11 @@ class TwitterTimelineExtractor(TwitterExtractor):
"url": "c570ac1aae38ed1463be726cc46f31cac3d82a40", "url": "c570ac1aae38ed1463be726cc46f31cac3d82a40",
}), }),
# suspended account (#2216) # suspended account (#2216)
("https://twitter.com/realDonaldTrump", { ("https://twitter.com/OptionalTypo", {
"exception": exception.NotFoundError,
}),
# suspended account user ID
("https://twitter.com/id:772949683521978368", {
"exception": exception.NotFoundError, "exception": exception.NotFoundError,
}), }),
("https://mobile.twitter.com/supernaturepics?p=i"), ("https://mobile.twitter.com/supernaturepics?p=i"),
@@ -1149,15 +1153,14 @@ class TwitterAPI():
return self._call(endpoint, params)["data"]["user"]["result"] return self._call(endpoint, params)["data"]["user"]["result"]
def _user_id_by_screen_name(self, screen_name): def _user_id_by_screen_name(self, screen_name):
if screen_name.startswith("id:"):
user_id = screen_name[3:]
user = self.user_by_rest_id(user_id)
else:
user = () user = ()
try: try:
if screen_name.startswith("id:"):
user = self.user_by_rest_id(screen_name[3:])
else:
user = self.user_by_screen_name(screen_name) user = self.user_by_screen_name(screen_name)
user_id = user["rest_id"] self.extractor._assign_user(user)
return user["rest_id"]
except KeyError: except KeyError:
if "unavailable_message" in user: if "unavailable_message" in user:
raise exception.NotFoundError("{} ({})".format( raise exception.NotFoundError("{} ({})".format(
@@ -1166,9 +1169,6 @@ class TwitterAPI():
else: else:
raise exception.NotFoundError("user") raise exception.NotFoundError("user")
self.extractor._assign_user(user)
return user_id
@cache(maxage=3600) @cache(maxage=3600)
def _guest_token(self): def _guest_token(self):
root = "https://api.twitter.com" root = "https://api.twitter.com"