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",
},
{