[twitter] fix crash when using 'expand' and 'syndication'

caused by KeyError: 'conversation_id_str'
pull/3472/head
ClosedPort22 2 years ago
parent 2d7d80d302
commit ce8dbb1ccc
No known key found for this signature in database

@ -2635,6 +2635,8 @@ Description
for each Tweet in said timeline.
Note: This requires at least 1 additional API call per initial Tweet.
Age-restricted Tweets cannot be expanded when using the
`syndication <extractor.twitter.syndication_>`__ API.
extractor.twitter.size

@ -361,18 +361,22 @@ class TwitterExtractor(Extractor):
def _expand_tweets(self, tweets):
seen = set()
for tweet in tweets:
if "legacy" in tweet:
cid = tweet["legacy"]["conversation_id_str"]
else:
cid = tweet["conversation_id_str"]
if cid not in seen:
seen.add(cid)
try:
yield from self.api.tweet_detail(cid)
except Exception:
yield tweet
obj = tweet["legacy"] if "legacy" in tweet else tweet
cid = obj.get("conversation_id_str")
if not cid:
tid = obj["id_str"]
self.log.warning(
"Unable to expand %s (no 'conversation_id')", tid)
continue
if cid in seen:
self.log.debug(
"Skipping expansion of %s (previously seen)", cid)
continue
seen.add(cid)
try:
yield from self.api.tweet_detail(cid)
except Exception:
yield tweet
def _make_tweet(self, user, id_str, url, timestamp):
return {

Loading…
Cancel
Save