[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:
@@ -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">
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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" : "",
|
||||
},
|
||||
},
|
||||
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user