[twitter] implement 'strategy' option (#2712)

to be able to better control what Tweets get used an returned
for twitter.com/USER URLs.
This commit is contained in:
Mike Fährmann
2022-07-03 14:29:15 +02:00
parent 5806a1851e
commit 4b2a0a0eda
3 changed files with 31 additions and 4 deletions

View File

@@ -440,12 +440,9 @@ class TwitterTimelineExtractor(TwitterExtractor):
self.user = "id:" + user_id
def tweets(self):
tweets = (self.api.user_tweets if self.retweets else
self.api.user_media)
# yield initial batch of (media) tweets
tweet = None
for tweet in tweets(self.user):
for tweet in self._select_tweet_source()(self.user):
yield tweet
if tweet is None:
@@ -476,6 +473,19 @@ class TwitterTimelineExtractor(TwitterExtractor):
# yield search results starting from last tweet id
yield from self.api.search_adaptive(query)
def _select_tweet_source(self):
strategy = self.config("strategy")
if strategy is None or strategy == "auto":
if self.retweets or self.textonly:
return self.api.user_tweets
else:
return self.api.user_media
if strategy == "tweets":
return self.api.user_tweets
if strategy == "with_replies":
return self.api.user_tweets_and_replies
return self.api.user_media
class TwitterTweetsExtractor(TwitterExtractor):
"""Extractor for Tweets from a user's Tweets timeline"""