From fdfcaa00b96227d2f1b2e586673070118ee33ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 8 Sep 2025 15:46:21 +0200 Subject: [PATCH] [tungsten:user] support filtering results by tag (#8061) forward query parameters https://github.com/mikf/gallery-dl/issues/8061#issuecomment-3266326296 --- gallery_dl/extractor/tungsten.py | 11 +++++---- test/results/tungsten.py | 39 +++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/gallery_dl/extractor/tungsten.py b/gallery_dl/extractor/tungsten.py index 20d5a595..45836a95 100644 --- a/gallery_dl/extractor/tungsten.py +++ b/gallery_dl/extractor/tungsten.py @@ -87,14 +87,17 @@ class TungstenModelExtractor(TungstenExtractor): class TungstenUserExtractor(TungstenExtractor): subcategory = "user" - pattern = rf"{BASE_PATTERN}/user/([^/?#]+)" - example = "https://tungsten.run/user/USER/posts" + pattern = rf"{BASE_PATTERN}/user/([^/?#]+)(?:/posts)?/?(?:\?([^#]+))?" + example = "https://tungsten.run/user/USER" def posts(self): - url = f"{self.root}/user/{self.groups[0]}" + user, qs = self.groups + url = f"{self.root}/user/{user}" page = self.request(url).text uuid_user = text.extr(page, '"user":{"uuid":"', '"') url = f"https://api.tungsten.run/v1/users/{uuid_user}/posts" - params = {"sort": "top_all_time"} + params = text.parse_query(qs) + params.setdefault("sort", "top_all_time") + self.kwdict["search_tags"] = params.get("tag", "") return self._pagination(url, params) diff --git a/test/results/tungsten.py b/test/results/tungsten.py index b523698d..416d9477 100644 --- a/test/results/tungsten.py +++ b/test/results/tungsten.py @@ -85,7 +85,7 @@ __tests__ = ( "#url" : "https://tungsten.run/model/9vHB2hNUdg/chroma", "#class" : tungsten.TungstenModelExtractor, "#pattern" : r"https://api\.tungsten\.run/v1/upload/\w+", - "#count" : 17, + "#count" : 22, "comment_count" : int, "created_at" : "iso:8601", @@ -144,4 +144,41 @@ __tests__ = ( }, }, +{ + "#url" : "https://tungsten.run/user/RD.Tungsten?tag=thanks&sort=top_month", + "#comment" : "query parameters", + "#class" : tungsten.TungstenUserExtractor, + "#results" : "https://api.tungsten.run/v1/upload/TYLShY6EDVyiV8ye", + + "comment_count" : int, + "created_at" : "2025-08-10T11:13:55Z", + "date" : "dt:2025-08-10 11:13:55", + "extension" : "webp", + "filename" : "TYLShY6EDVyiV8ye", + "like_count" : range(15, 50), + "nsfw" : False, + "original_height": 1216, + "original_url" : "https://api.tungsten.run/v1/upload/TYLShY6EDVyiV8ye", + "original_width" : 832, + "rating" : None, + "resized_height" : 936, + "resized_url" : "https://api.tungsten.run/v1/upload/bMfhipdctg79TqCo", + "resized_width" : 640, + "search_tags" : "thanks", + "title" : "Thank you !!", + "uuid" : "FcRnVM6btz7vbM9Z", + "view_count" : int, + "user" : { + "avatar_url" : "https://api.tungsten.run/v1/avatar/512x512/dTqnGJmASg9WSjfL/1746094098", + "badges" : [], + "bio" : None, + "created_at" : "2025-04-27T14:48:27Z", + "display_name" : "RD.Tungsten", + "sm_avatar_url": "https://api.tungsten.run/v1/avatar/64x64/dTqnGJmASg9WSjfL/1746094098", + "type" : "regular", + "username" : "RD.Tungsten", + "uuid" : "dTqnGJmASg9WSjfL", + }, +}, + )