From f43bccb5beb7387b388cfa651987cac54da99b23 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Thu, 4 Jul 2024 15:41:14 -0400 Subject: [PATCH 1/3] [furaffinity] Add 'thumbnail' (#1284) and 'folders' properties Retrieve 'thumbnail' and 'folders' properties for each post. 'thumbnail' (#1284): - Preview image used for search results, writing posts, music, etc. - Filename format: @600-.jpg 'Folders' (related to #1817): - A list of all gallery folders containing this post - Folder name format: [ - ] - Only works on new layout; old layout does not show folders, so list will be empty A test is included for each property. --- gallery_dl/extractor/furaffinity.py | 8 ++++++ test/results/furaffinity.py | 44 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index 6040187e..c956a830 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -113,6 +113,9 @@ class FuraffinityExtractor(Extractor): data["gender"] = rh(extr('>Gender', '')) data["width"] = pi(extr("", "x")) data["height"] = pi(extr("", "p")) + data["folders"] = [rh(folder) for folder in extr( + '

Listed in Folders

', + '').split('') if rh(folder) != ''] else: # old site layout data["title"] = text.unescape(extr("

", "

")) @@ -132,11 +135,16 @@ class FuraffinityExtractor(Extractor): data["_description"] = extr( '', ' ') + data["folders"] = [] # folders not present in old layout data["artist_url"] = data["artist"].replace("_", "").lower() data["user"] = self.user or data["artist_url"] data["date"] = text.parse_timestamp(data["filename"].partition(".")[0]) data["description"] = self._process_description(data["_description"]) + data["thumbnail"] = ( + 'https://t.furaffinity.net/' + + str(data['id']) + '@600-' + + data['url'].split('/')[-2].split('.')[0] + '.jpg') return data diff --git a/test/results/furaffinity.py b/test/results/furaffinity.py index fffaec56..92ce239c 100644 --- a/test/results/furaffinity.py +++ b/test/results/furaffinity.py @@ -115,6 +115,50 @@ __tests__ = ( "width" : 1280, }, +{ + "#url" : "https://www.furaffinity.net/view/22964019/", + "#comment" : "get thumbnails for posts (#1284)", + "#category": ("", "furaffinity", "post"), + "#class" : furaffinity.FuraffinityPostExtractor, + + "artist" : "Dwale", + "artist_url" : "dwale", + "date" : "dt:2017-03-21 14:21:29", + "fa_category" : "Poetry", + "filename" : "1490106089.dwale_poem_for_children", + "folders" : [], + "height" : 50, + "id" : 22964019, + "rating" : "General", + "title" : "Poem for Children Wishing to Summon Evil Spirits", + "thumbnail" : "https://t.furaffinity.net/22964019@600-1490106089.jpg", + "width" : 50, +}, + +{ + "#url" : "https://www.furaffinity.net/view/34260156/", + "#comment" : "list gallery folders for image", + "#category": ("", "furaffinity", "post"), + "#class" : furaffinity.FuraffinityPostExtractor, + + "artist" : "dbd", + "artist_url" : "dbd", + "date" : "dt:2019-12-17 22:52:01", + "fa_category" : "All", + "filename" : "1576623121.dbd_patreoncustom-wdg13-web", + "folders" : ["By Year - 2019", + "Custom Character Folder - All Custom Characters", + "Custom Character Folder - Other Ungulates", + "Custom Character Folder - Female", + "Custom Character Folder - Patreon Supported Custom Characters"], + "height" : 900, + "id" : 34260156, + "rating" : "General", + "title" : "Patreon Custom Deer", + "thumbnail" : "https://t.furaffinity.net/34260156@600-1576623121.jpg", + "width" : 488, +}, + { "#url" : "https://furaffinity.net/view/21835115/", "#category": ("", "furaffinity", "post"), From 4f3be2f571973b860d7475245cb0c4d27202b645 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Thu, 4 Jul 2024 16:50:49 -0400 Subject: [PATCH 2/3] Remove leftover split() statement Forgot to remove this from a previous implementation attempt --- gallery_dl/extractor/furaffinity.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index c956a830..683db0bc 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -144,7 +144,7 @@ class FuraffinityExtractor(Extractor): data["thumbnail"] = ( 'https://t.furaffinity.net/' + str(data['id']) + '@600-' + - data['url'].split('/')[-2].split('.')[0] + '.jpg') + data['url'].split('/')[-2] + '.jpg') return data From 9a8ec95398258f41fce9a323425fe6e594720ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 18 Jul 2024 01:39:58 +0200 Subject: [PATCH 3/3] [furaffinity] improve --- gallery_dl/extractor/furaffinity.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index 683db0bc..f48a9844 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -113,9 +113,12 @@ class FuraffinityExtractor(Extractor): data["gender"] = rh(extr('>Gender', '')) data["width"] = pi(extr("", "x")) data["height"] = pi(extr("", "p")) - data["folders"] = [rh(folder) for folder in extr( - '

Listed in Folders

', - '').split('') if rh(folder) != ''] + data["folders"] = folders = [] + for folder in extr( + "

Listed in Folders

", "").split(""): + folder = rh(folder) + if folder: + folders.append(folder) else: # old site layout data["title"] = text.unescape(extr("

", "

")) @@ -135,16 +138,14 @@ class FuraffinityExtractor(Extractor): data["_description"] = extr( '', ' ') - data["folders"] = [] # folders not present in old layout + data["folders"] = () # folders not present in old layout data["artist_url"] = data["artist"].replace("_", "").lower() data["user"] = self.user or data["artist_url"] data["date"] = text.parse_timestamp(data["filename"].partition(".")[0]) data["description"] = self._process_description(data["_description"]) - data["thumbnail"] = ( - 'https://t.furaffinity.net/' + - str(data['id']) + '@600-' + - data['url'].split('/')[-2] + '.jpg') + data["thumbnail"] = "https://t.furaffinity.net/{}@600-{}.jpg".format( + post_id, path.rsplit("/", 2)[1]) return data