[twitter] use twMediaDownloader strategy for user URLs

- use media timeline + search for default user URLs like
  https://twitter.com/SCREEN_NAME
- fetches all/most media for the type of twitter URL that most users
  use with gallery-dl
- can be disabled by setting 'strategy' to any truthy value,
  like "timeline"
This commit is contained in:
Mike Fährmann
2022-05-02 08:50:04 +02:00
parent 84756982e9
commit 3346f58a2a

View File

@@ -409,8 +409,35 @@ class TwitterTimelineExtractor(TwitterExtractor):
self.user = "id:" + user_id self.user = "id:" + user_id
def tweets(self): def tweets(self):
if not self.config("strategy"):
return self._tweets_twMediaDownloader()
return self.api.user_tweets(self.user) return self.api.user_tweets(self.user)
def _tweets_twMediaDownloader(self):
tweet = None
for tweet in self.api.user_media(self.user):
yield tweet
if tweet is None:
return
if not self.user.startswith("id:"):
username = self.user
elif "core" in tweet:
username = (tweet["core"]["user_results"]["result"]
["legacy"]["screen_name"])
else:
username = tweet["user"]["screen_name"]
if "legacy" in tweet:
tweet = tweet["legacy"]
yield from self.api.search_adaptive(
"from:{} include:retweets include:nativeretweets max_id:{} "
"filter:images OR card_name:animated_gif OR filter:native_video"
.format(username, tweet["id_str"])
)
class TwitterRepliesExtractor(TwitterExtractor): class TwitterRepliesExtractor(TwitterExtractor):
"""Extractor for Tweets from a user's timeline including replies""" """Extractor for Tweets from a user's timeline including replies"""