From f8b037ed40806fb16225727c6a4e25fabf1c6331 Mon Sep 17 00:00:00 2001 From: termvacycurtocs <161976827+termvacycurtocs@users.noreply.github.com> Date: Sat, 2 Mar 2024 22:15:45 +0100 Subject: [PATCH 1/2] [Imagefap] Add folder metadata [Imagefap] Add "folder" metadata when downloading a folder or user profile. No additional request is made to the server. Use for example with the following configuration : "parent-metadata": true "directory":["{category}", "{uploader}", "{folder}", "{gallery_id} {title}"] --- gallery_dl/extractor/imagefap.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gallery_dl/extractor/imagefap.py b/gallery_dl/extractor/imagefap.py index 3bdcfdfd..e1be8c9d 100644 --- a/gallery_dl/extractor/imagefap.py +++ b/gallery_dl/extractor/imagefap.py @@ -161,17 +161,19 @@ class ImagefapFolderExtractor(ImagefapExtractor): self.user = user or profile def items(self): - for gallery_id, name in self.galleries(self.folder_id): + for gallery_id, name, folder in self.galleries(self.folder_id): url = "{}/gallery/{}".format(self.root, gallery_id) data = { "gallery_id": gallery_id, "title" : text.unescape(name), + "folder" : text.unescape(folder), "_extractor": ImagefapGalleryExtractor, } yield Message.Queue, url, data def galleries(self, folder_id): """Yield gallery IDs and titles of a folder""" + folder="Uncategorized" if folder_id == "-1": if self._id: url = "{}/usergallery.php?userid={}&folderid=-1".format( @@ -187,11 +189,14 @@ class ImagefapFolderExtractor(ImagefapExtractor): extr = text.extract_from(self.request(url, params=params).text) cnt = 0 + if folder_id != -1 and params["page"] == 0: + folder = extr('class\'blk_galleries\'>','') + while True: gid = extr('", "<") + yield gid, extr("", "<"), folder cnt += 1 if cnt < 20: From 05331f9cf1c0090cfdd025f803ab44b477884882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 7 Mar 2024 01:29:19 +0100 Subject: [PATCH 2/2] [imagefap] flake8, cleanup, tests --- gallery_dl/extractor/imagefap.py | 14 ++++++++------ test/results/imagefap.py | 8 +++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gallery_dl/extractor/imagefap.py b/gallery_dl/extractor/imagefap.py index e1be8c9d..32fe3715 100644 --- a/gallery_dl/extractor/imagefap.py +++ b/gallery_dl/extractor/imagefap.py @@ -173,8 +173,8 @@ class ImagefapFolderExtractor(ImagefapExtractor): def galleries(self, folder_id): """Yield gallery IDs and titles of a folder""" - folder="Uncategorized" if folder_id == "-1": + folder_name = "Uncategorized" if self._id: url = "{}/usergallery.php?userid={}&folderid=-1".format( self.root, self.user) @@ -182,26 +182,28 @@ class ImagefapFolderExtractor(ImagefapExtractor): url = "{}/profile/{}/galleries?folderid=-1".format( self.root, self.user) else: + folder_name = None url = "{}/organizer/{}/".format(self.root, folder_id) params = {"page": 0} + extr = text.extract_from(self.request(url, params=params).text) + if not folder_name: + folder_name = extr("class'blk_galleries'>", "") + while True: - extr = text.extract_from(self.request(url, params=params).text) cnt = 0 - if folder_id != -1 and params["page"] == 0: - folder = extr('class\'blk_galleries\'>','') - while True: gid = extr('", "<"), folder + yield gid, extr("", "<"), folder_name cnt += 1 if cnt < 20: break params["page"] += 1 + extr = text.extract_from(self.request(url, params=params).text) class ImagefapUserExtractor(ImagefapExtractor): diff --git a/test/results/imagefap.py b/test/results/imagefap.py index bec94011..7ac1631f 100644 --- a/test/results/imagefap.py +++ b/test/results/imagefap.py @@ -124,7 +124,11 @@ __tests__ = ( "#url" : "https://www.imagefap.com/usergallery.php?userid=1981976&folderid=409758", "#category": ("", "imagefap", "folder"), "#class" : imagefap.ImagefapFolderExtractor, - "#sha1_url": "37822523e6e4a56feb9dea35653760c86b44ff89", + "#urls" : "https://www.imagefap.com/gallery/7876223", + + "folder" : "Softcore", + "gallery_id": "7876223", + "title" : "Kelsi Monroe in lingerie", }, { @@ -140,6 +144,8 @@ __tests__ = ( "#class" : imagefap.ImagefapFolderExtractor, "#pattern" : imagefap.ImagefapGalleryExtractor.pattern, "#range" : "1-40", + + "folder": "Uncategorized", }, {