[twitter] fix crash when using 'expand' and 'syndication'
caused by KeyError: 'conversation_id_str'
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user