diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 42e4ffa1..d2bda7b2 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -280,7 +280,7 @@ Consider all listed sites to potentially be NSFW.
| Eka's Portal |
https://aryion.com/ |
- Favorites, Galleries, Posts, Tag Searches |
+ Favorites, Galleries, Posts, Search Results, Tag Searches |
Supported |
diff --git a/gallery_dl/extractor/aryion.py b/gallery_dl/extractor/aryion.py
index 99a527b1..21a2590a 100644
--- a/gallery_dl/extractor/aryion.py
+++ b/gallery_dl/extractor/aryion.py
@@ -234,6 +234,31 @@ class AryionTagExtractor(AryionExtractor):
return self._pagination_params(url, self.params)
+class AryionSearchExtractor(AryionExtractor):
+ """Extractor for searches on eka's portal"""
+ subcategory = "search"
+ directory_fmt = ("{category}", "searches", "{search[prefix]:?/_/}"
+ "{search[q]|search[tags]|search[user]}")
+ archive_fmt = ("s_{search[prefix]:?/_/}"
+ "{search[q]|search[tags]|search[user]}_{id}")
+ pattern = rf"{BASE_PATTERN}/search\.php\?([^#]+)"
+ example = "https://aryion.com/g4/search.php?q=TEXT&tags=TAGS&user=USER"
+
+ def metadata(self):
+ self.params = params = text.parse_query(self.user)
+
+ return {"search": {
+ **params,
+ "prefix": ("" if params.get("q") else
+ "t" if params.get("tags") else
+ "u" if params.get("user") else ""),
+ }}
+
+ def posts(self):
+ url = f"{self.root}/g4/search.php?{text.build_query(self.params)}"
+ return self._pagination_next(url)
+
+
class AryionPostExtractor(AryionExtractor):
"""Extractor for individual posts on eka's portal"""
subcategory = "post"
diff --git a/test/results/aryion.py b/test/results/aryion.py
index 1af48c5f..51778723 100644
--- a/test/results/aryion.py
+++ b/test/results/aryion.py
@@ -94,4 +94,44 @@ __tests__ = (
"#count" : 2,
},
+{
+ "#url" : "https://aryion.com/g4/search.php?q=forest1",
+ "#class" : aryion.AryionSearchExtractor,
+ "#results" : (
+ "https://aryion.com/g4/data.php?id=165068",
+ "https://aryion.com/g4/data.php?id=165069",
+ "https://aryion.com/g4/data.php?id=165070",
+ "https://aryion.com/g4/data.php?id=165071",
+ "https://aryion.com/g4/data.php?id=165064",
+ ),
+
+ "search" : {
+ "prefix": "",
+ "q" : "forest1",
+ },
+},
+
+{
+ "#url" : "https://aryion.com/g4/search.php?q=&tags=water%2C+&type_search=&user=&from_date=04%2F01%2F2025&to_date=07%2F01%2F2025&sort=view_count&p=2",
+ "#class" : aryion.AryionSearchExtractor,
+ "#range" : "1-3",
+ "#results" : (
+ "https://aryion.com/g4/data.php?id=1134439",
+ "https://aryion.com/g4/data.php?id=1124899",
+ "https://aryion.com/g4/data.php?id=1133691",
+ ),
+
+ "search" : {
+ "from_date" : "04/01/2025",
+ "p" : "2",
+ "prefix" : "t",
+ "q" : "",
+ "sort" : "view_count",
+ "tags" : "water, ",
+ "to_date" : "07/01/2025",
+ "type_search": "",
+ "user" : "",
+ },
+},
+
)