diff --git a/gallery_dl/extractor/paheal.py b/gallery_dl/extractor/paheal.py index 5245f314..490243af 100644 --- a/gallery_dl/extractor/paheal.py +++ b/gallery_dl/extractor/paheal.py @@ -9,7 +9,7 @@ """Extractors for https://rule34.paheal.net/""" from .common import Extractor, Message -from .. import text +from .. import text, exception class PahealExtractor(Extractor): @@ -97,7 +97,12 @@ class PahealTagExtractor(PahealExtractor): base = f"{self.root}/post/list/{self.groups[0]}/" while True: - page = self.request(base + str(pnum)).text + try: + page = self.request(f"{base}{pnum}").text + except exception.HttpError as exc: + if exc.status == 404: + return + raise pos = page.find("id='image-list'") for post in text.extract_iter( @@ -146,4 +151,9 @@ class PahealPostExtractor(PahealExtractor): example = "https://rule34.paheal.net/post/view/12345" def get_posts(self): - return (self._extract_post(self.groups[0]),) + try: + return (self._extract_post(self.groups[0]),) + except exception.HttpError as exc: + if exc.status == 404: + return () + raise diff --git a/test/results/paheal.py b/test/results/paheal.py index 8d5f37e2..eca6f53a 100644 --- a/test/results/paheal.py +++ b/test/results/paheal.py @@ -60,6 +60,13 @@ __tests__ = ( "#count" : 200, }, +{ + "#url" : "https://rule34.paheal.net/post/list/non_existant_tag/1", + "#category": ("shimmie2", "paheal", "tag"), + "#class" : paheal.PahealTagExtractor, + "#count" : 0, +}, + { "#url" : "https://rule34.paheal.net/post/view/481609", "#category": ("shimmie2", "paheal", "post"), @@ -116,4 +123,11 @@ __tests__ = ( "width" : 1768, }, +{ + "#url" : "https://rule34.paheal.net/post/view/7", + "#category": ("shimmie2", "paheal", "post"), + "#class" : paheal.PahealPostExtractor, + "#count" : 0, +}, + )