[aryion] add 'search' extractor (#8567)

* [aryion] Implement search extractor.
* [aryion] Update capabilities.
* [aryion] Adjust example.
* fix flake8 errors

* update & simplify
    - use existing '_pagination_next()'
    - remove '_pagination_search()'
    - update 'search[…]' metadata
* add tests

---------

Co-authored-by: Mike Fährmann <mike_faehrmann@web.de>
This commit is contained in:
vorsatile
2025-11-19 06:57:08 +11:00
committed by GitHub
parent e60007add6
commit 991fe0f2a7
3 changed files with 66 additions and 1 deletions

View File

@@ -280,7 +280,7 @@ Consider all listed sites to potentially be NSFW.
<tr id="aryion" title="aryion">
<td>Eka's Portal</td>
<td>https://aryion.com/</td>
<td>Favorites, Galleries, Posts, Tag Searches</td>
<td>Favorites, Galleries, Posts, Search Results, Tag Searches</td>
<td>Supported</td>
</tr>
<tr id="erome" title="erome">

View File

@@ -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"

View File

@@ -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" : "",
},
},
)