From d77078d853bd241121d9bc6c18835af11f5f35e1 Mon Sep 17 00:00:00 2001 From: wise-immersion Date: Mon, 9 Feb 2026 17:54:33 +0000 Subject: [PATCH] [fikfap] support main page post URLs (#9026) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update fikfap.py to allow for extracting a single post from the main page Current post extractor only works on links to posts on user pages but not on direct links to posts * include 'singlepost' logic into existing 'post' extractor --------- Co-authored-by: Mike Fährmann --- gallery_dl/extractor/fikfap.py | 15 ++++++--------- test/results/fikfap.py | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/gallery_dl/extractor/fikfap.py b/gallery_dl/extractor/fikfap.py index 6ab7e52a..2673a133 100644 --- a/gallery_dl/extractor/fikfap.py +++ b/gallery_dl/extractor/fikfap.py @@ -67,20 +67,17 @@ class FikfapExtractor(Extractor): class FikfapPostExtractor(FikfapExtractor): subcategory = "post" - pattern = BASE_PATTERN + r"/user/(\w+)/post/(\d+)" + pattern = BASE_PATTERN + r"/(?:user/\w+/)?post/(\d+)" example = "https://fikfap.com/user/USER/post/12345" def posts(self): - user, pid = self.groups + pid = self.groups[0] - url = f"{self.root_api}/profile/username/{user}/posts" - params = {"amount" : "1", "startId": pid} - posts = self.request_api(url, params) + url = f"{self.root_api}/posts/{pid}" + post = self.request_api(url, None) - pid = int(pid) - for post in posts: - if post["postId"] == pid: - return (post,) + if post["postId"] == int(pid): + return (post,) raise exception.NotFoundError("post") diff --git a/test/results/fikfap.py b/test/results/fikfap.py index 4e82c015..58043f45 100644 --- a/test/results/fikfap.py +++ b/test/results/fikfap.py @@ -13,12 +13,12 @@ __tests__ = ( "#class" : fikfap.FikfapPostExtractor, "#pattern" : r"ytdl:https://vz-\w+-178\.b-cdn\.net/bcdn_token=.+/playlist\.m3u8", - "algorithm" : "user-posts", + "algorithm" : "single-post", "bunnyVideoId" : "89218ae2-d79a-49a0-abcd-590fd70c9800", "commentsCount" : int, "createdAt" : "2025-10-21T00:49:00.306Z", "date" : "dt:2025-10-21 00:49:00", - "date_updated" : "dt:2026-02-07 01:07:45", + "date_updated" : "type:datetime", "deletedAt" : None, "duration" : None, "explicitnessRating": None, @@ -99,6 +99,20 @@ __tests__ = ( }, }, +{ + "#url" : "https://fikfap.com/post/1429486", + "#class" : fikfap.FikfapPostExtractor, + "#pattern" : r"ytdl:https://vz-\w+-178\.b-cdn\.net/bcdn_token=.+/playlist\.m3u8", + + "bunnyVideoId": "89218ae2-d79a-49a0-abcd-590fd70c9800", + "date" : "dt:2025-10-21 00:49:00", + "extension" : "mp4", + "filename" : "⬇️check my FREE VIP OF ⬇️", + "mediaId" : "b821619e-96a1-49a3-a3f8-a8a3e8432a51", + "postId" : 1429486, + "userId" : "32f4c8d6-2409-4db8-9e66-d3b5ff0c1a98", +}, + { "#url" : "https://fikfap.com/user/alinevs", "#class" : fikfap.FikfapUserExtractor,