From 105f3c9666ee8992e41b659d8c3bf321f310d2b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 2 Apr 2021 02:45:23 +0200 Subject: [PATCH] [twitter] add extractor for direct image links (closes #1417) --- docs/supportedsites.md | 2 +- gallery_dl/extractor/twitter.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/supportedsites.md b/docs/supportedsites.md index d9f3c372..a6ddb0e1 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -676,7 +676,7 @@ Consider all sites to be NSFW unless otherwise known. Twitter https://twitter.com/ - Bookmarks, Likes, Lists, List Members, Media Timelines, Search Results, Timelines, Tweets + Bookmarks, individual Images, Likes, Lists, List Members, Media Timelines, Search Results, Timelines, Tweets Supported diff --git a/gallery_dl/extractor/twitter.py b/gallery_dl/extractor/twitter.py index 291c1893..792f1612 100644 --- a/gallery_dl/extractor/twitter.py +++ b/gallery_dl/extractor/twitter.py @@ -499,6 +499,34 @@ class TwitterTweetExtractor(TwitterExtractor): return TwitterAPI(self).tweet(self.tweet_id) +class TwitterImageExtractor(Extractor): + category = "twitter" + subcategory = "image" + pattern = r"https?://pbs\.twimg\.com/media/([\w-]+)(?:\?format=|\.)(\w+)" + test = ( + ("https://pbs.twimg.com/media/EqcpviCVoAAG-QG?format=jpg%name=orig"), + ("https://pbs.twimg.com/media/EqcpviCVoAAG-QG.jpg:orig"), + ) + + def __init__(self, match): + Extractor.__init__(self, match) + self.id, self.fmt = match.groups() + + def items(self): + base = "https://pbs.twimg.com/media/" + self.id + url = base + "." + self.fmt + base += "?format=" + self.fmt + "&name=" + + data = { + "filename": self.id, + "extension": self.fmt, + "_fallback": TwitterExtractor._image_fallback(base, url), + } + + yield Message.Directory, data + yield Message.Url, base + "orig", data + + class TwitterAPI(): def __init__(self, extractor):