[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:
@@ -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"""
|
||||||
|
|||||||
Reference in New Issue
Block a user