[skeb] add 'search' extractor (#2945)
This commit is contained in:
@@ -736,7 +736,7 @@ Consider all sites to be NSFW unless otherwise known.
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Skeb</td>
|
<td>Skeb</td>
|
||||||
<td>https://skeb.jp/</td>
|
<td>https://skeb.jp/</td>
|
||||||
<td>Posts, User Profiles</td>
|
<td>Posts, Search Results, User Profiles</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -223,6 +223,55 @@ class SkebUserExtractor(SkebExtractor):
|
|||||||
return posts
|
return posts
|
||||||
|
|
||||||
|
|
||||||
|
class SkebSearchExtractor(SkebExtractor):
|
||||||
|
"""Extractor for skeb search results"""
|
||||||
|
subcategory = "search"
|
||||||
|
pattern = r"(?:https?://)?skeb\.jp/search\?q=([^&#]+)"
|
||||||
|
test = ("https://skeb.jp/search?q=bunny%20tree&t=works", {
|
||||||
|
"count": ">= 18",
|
||||||
|
})
|
||||||
|
|
||||||
|
def posts(self):
|
||||||
|
url = "https://hb1jt3kre9-2.algolianet.com/1/indexes/*/queries"
|
||||||
|
params = {
|
||||||
|
"x-algolia-agent": "Algolia for JavaScript (4.13.1); Browser",
|
||||||
|
}
|
||||||
|
headers = {
|
||||||
|
"Origin": self.root,
|
||||||
|
"Referer": self.root + "/",
|
||||||
|
"x-algolia-api-key": "9a4ce7d609e71bf29e977925e4c6740c",
|
||||||
|
"x-algolia-application-id": "HB1JT3KRE9",
|
||||||
|
}
|
||||||
|
|
||||||
|
pams = ("hitsPerPage=40&filters=genre%3Aart%20OR%20genre%3Avoice%20OR"
|
||||||
|
"%20genre%3Anovel%20OR%20genre%3Avideo%20OR%20genre%3Amusic%2"
|
||||||
|
"0OR%20genre%3Acorrection&page=")
|
||||||
|
page = 0
|
||||||
|
|
||||||
|
request = {
|
||||||
|
"indexName": "Request",
|
||||||
|
"query": text.unquote(self.user_name),
|
||||||
|
"params": pams + str(page),
|
||||||
|
}
|
||||||
|
data = {"requests": (request,)}
|
||||||
|
|
||||||
|
while True:
|
||||||
|
result = self.request(
|
||||||
|
url, method="POST", params=params, headers=headers, json=data,
|
||||||
|
).json()["results"][0]
|
||||||
|
|
||||||
|
for post in result["hits"]:
|
||||||
|
parts = post["path"].split("/")
|
||||||
|
user_name = parts[1][1:]
|
||||||
|
post_num = parts[3]
|
||||||
|
yield user_name, post_num
|
||||||
|
|
||||||
|
if page >= result["nbPages"]:
|
||||||
|
return
|
||||||
|
page += 1
|
||||||
|
request["params"] = pams + str(page)
|
||||||
|
|
||||||
|
|
||||||
class SkebFollowingExtractor(SkebExtractor):
|
class SkebFollowingExtractor(SkebExtractor):
|
||||||
"""Extractor for all creators followed by a skeb user"""
|
"""Extractor for all creators followed by a skeb user"""
|
||||||
subcategory = "following"
|
subcategory = "following"
|
||||||
|
|||||||
Reference in New Issue
Block a user