From 2cd801232b2691e22230017dd42ed86e39257708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 21 Sep 2023 23:14:08 +0200 Subject: [PATCH] fix --range causing crashes (#4557) regression caused by a383eca7 --- gallery_dl/extractor/deviantart.py | 4 +++- gallery_dl/extractor/furaffinity.py | 4 +++- gallery_dl/job.py | 14 ++++++++++---- test/results/deviantart.py | 13 ++++++++++++- test/test_results.py | 1 + 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index 94c7f005..bd55f975 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -39,6 +39,7 @@ class DeviantartExtractor(Extractor): def __init__(self, match): Extractor.__init__(self, match) self.user = match.group(1) or match.group(2) + self.offset = 0 def _init(self): self.flat = self.config("flat", True) @@ -48,7 +49,6 @@ class DeviantartExtractor(Extractor): self.api = DeviantartOAuthAPI(self) self.group = False - self.offset = 0 self._premium_cache = {} unwatch = self.config("auto-unwatch") @@ -445,6 +445,8 @@ class DeviantartUserExtractor(DeviantartExtractor): def initialize(self): pass + skip = Extractor.skip + def items(self): base = "{}/{}/".format(self.root, self.user) return self._dispatch_extractors(( diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index 7dc64193..56721d0f 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -28,9 +28,9 @@ class FuraffinityExtractor(Extractor): def __init__(self, match): Extractor.__init__(self, match) self.user = match.group(1) + self.offset = 0 def _init(self): - self.offset = 0 self.external = self.config("external", False) if self.config("descriptions") == "html": @@ -295,6 +295,8 @@ class FuraffinityUserExtractor(FuraffinityExtractor): def initialize(self): pass + skip = Extractor.skip + def items(self): base = "{}/{{}}/{}/".format(self.root, self.user) return self._dispatch_extractors(( diff --git a/gallery_dl/job.py b/gallery_dl/job.py index e651d975..1e80cbf3 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -106,16 +106,15 @@ class Job(): "current_git_head": util.git_head() } - # predicates - self.pred_url = self._prepare_predicates("image", True) - self.pred_queue = self._prepare_predicates("chapter", False) - def run(self): """Execute or run the job""" extractor = self.extractor log = extractor.log msg = None + self._init() + + # sleep before extractor start sleep = util.build_duration_func( extractor.config("sleep-extractor")) if sleep: @@ -201,6 +200,11 @@ class Job(): if self.kwdict: kwdict.update(self.kwdict) + def _init(self): + self.extractor.initialize() + self.pred_url = self._prepare_predicates("image", True) + self.pred_queue = self._prepare_predicates("chapter", False) + def _prepare_predicates(self, target, skip=True): predicates = [] @@ -810,6 +814,8 @@ class DataJob(Job): self.filter = dict.copy if private else util.filter_dict def run(self): + self._init() + extractor = self.extractor sleep = util.build_duration_func( extractor.config("sleep-extractor")) diff --git a/test/results/deviantart.py b/test/results/deviantart.py index 87473bb8..876ccfeb 100644 --- a/test/results/deviantart.py +++ b/test/results/deviantart.py @@ -37,7 +37,7 @@ __tests__ = ( "#category": ("", "deviantart", "gallery"), "#class" : deviantart.DeviantartGalleryExtractor, "#pattern" : r"https://(images-)?wixmp-[^.]+\.wixmp\.com/f/.+/.+\.(jpg|png)\?token=.+", - "#count" : ">= 30", + "#count" : ">= 38", "allows_comments" : bool, "author" : { @@ -82,6 +82,17 @@ __tests__ = ( "username" : "shimoda7", }, +{ + "#url" : "https://www.deviantart.com/shimoda7/gallery/", + "#comment" : "range/skip (#4557)", + "#category": ("", "deviantart", "gallery"), + "#class" : deviantart.DeviantartGalleryExtractor, + "#options" : {"original": False}, + "#pattern" : r"https://images-wixmp-[0-9a-f]+\.wixmp\.com/f/0e474835-ec35-4937-b647-b6830ed58bd1/d2idul-6158ded2-37ac-413d-802e-0689f0f020ad\.jpg\?token=[\w.]+", + "#range" : "38-", + "#count" : 1, +}, + { "#url" : "https://www.deviantart.com/yakuzafc/gallery", "#comment" : "group", diff --git a/test/test_results.py b/test/test_results.py index 8644f275..512ca219 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -206,6 +206,7 @@ class ResultJob(job.DownloadJob): self.extractor.filename_fmt).format_map def run(self): + self._init() for msg in self.extractor: self.dispatch(msg)