diff options
Diffstat (limited to 'gallery_dl/extractor/reddit.py')
| -rw-r--r-- | gallery_dl/extractor/reddit.py | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/gallery_dl/extractor/reddit.py b/gallery_dl/extractor/reddit.py index cb70fe5..9c6892a 100644 --- a/gallery_dl/extractor/reddit.py +++ b/gallery_dl/extractor/reddit.py @@ -57,12 +57,8 @@ class RedditExtractor(Extractor): yield Message.Url, url, submission elif "gallery_data" in submission: - meta = submission["media_metadata"] - items = submission["gallery_data"]["items"] - for submission["num"], item in enumerate(items, 1): - url = meta[item["media_id"]]["s"]["u"] - url = url.partition("?")[0] - url = url.replace("/preview.", "/i.", 1) + for submission["num"], url in enumerate( + self._extract_gallery(submission), 1): text.nameext_from_url(url, submission) yield Message.Url, url, submission @@ -118,6 +114,22 @@ class RedditExtractor(Extractor): def submissions(self): """Return an iterable containing all (submission, comments) tuples""" + def _extract_gallery(self, submission): + if submission["gallery_data"] is None: + self.log.warning("gallery '%s' was deleted", submission["id"]) + return + + meta = submission["media_metadata"] + for item in submission["gallery_data"]["items"]: + src = meta[item["media_id"]]["s"] + url = src.get("u") or src.get("gif") or src.get("mp4") + if url: + yield url.partition("?")[0].replace("/preview.", "/i.", 1) + else: + self.log.error("Unable to get download URL for item '%s'", + item["media_id"]) + self.log.debug(src) + class RedditSubredditExtractor(RedditExtractor): """Extractor for URLs from subreddits on reddit.com""" @@ -188,6 +200,15 @@ class RedditSubmissionExtractor(RedditExtractor): "content": "1e7dde4ee7d5f4c4b45749abfd15b2dbfa27df3f", "count": 3, }), + # deleted gallery (#953) + ("https://www.reddit.com/gallery/icfgzv", { + "count": 0, + }), + # animated gallery items (#955) + ("https://www.reddit.com/r/araragi/comments/ib32hm", { + "pattern": r"https://i\.redd\.it/\w+\.gif", + "count": 2, + }), ("https://old.reddit.com/r/lavaporn/comments/2a00np/"), ("https://np.reddit.com/r/lavaporn/comments/2a00np/"), ("https://m.reddit.com/r/lavaporn/comments/2a00np/"), |
