[inkbunny] provide additional metadata (#3274)

- 'pool_id' for pools
- 'favs_user_id' for favorites
- 'search[...]' for searches
pull/3307/head
Mike Fährmann 2 years ago
parent 42481aed59
commit 1392b44bfe
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -30,10 +30,12 @@ class InkbunnyExtractor(Extractor):
def items(self):
self.api.authenticate()
metadata = self.metadata()
to_bool = ("deleted", "favorite", "friends_only", "guest_block",
"hidden", "public", "scraps")
for post in self.posts():
post.update(metadata)
post["date"] = text.parse_datetime(
post["create_datetime"] + "00", "%Y-%m-%d %H:%M:%S.%f%z")
post["tags"] = [kw["keyword_name"] for kw in post["keywords"]]
@ -60,6 +62,12 @@ class InkbunnyExtractor(Extractor):
url += "?sid=" + self.api.session_id
yield Message.Url, url, post
def posts(self):
return ()
def metadata(self):
return ()
class InkbunnyUserExtractor(InkbunnyExtractor):
"""Extractor for inkbunny user profiles"""
@ -144,6 +152,7 @@ class InkbunnyPoolExtractor(InkbunnyExtractor):
test = (
("https://inkbunny.net/poolview_process.php?pool_id=28985", {
"count": 9,
"keyword": {"pool_id": "28985"},
}),
("https://inkbunny.net/submissionsviewall.php?rid=ffffffffff"
"&mode=pool&pool_id=28985&page=1&orderby=pool_order&random=no"),
@ -160,6 +169,9 @@ class InkbunnyPoolExtractor(InkbunnyExtractor):
self.pool_id = params.get("pool_id")
self.orderby = params.get("orderby", "pool_order")
def metadata(self):
return {"pool_id": self.pool_id}
def posts(self):
params = {
"pool_id": self.pool_id,
@ -179,6 +191,7 @@ class InkbunnyFavoriteExtractor(InkbunnyExtractor):
"pattern": r"https://[\w.]+\.metapix\.net/files/full"
r"/\d+/\d+_\w+_.+",
"range": "20-50",
"keyword": {"favs_user_id": "20969"},
}),
("https://inkbunny.net/submissionsviewall.php?rid=ffffffffff"
"&mode=userfavs&random=no&orderby=fav_datetime&page=1&user_id=20969"),
@ -195,6 +208,9 @@ class InkbunnyFavoriteExtractor(InkbunnyExtractor):
self.user_id = params.get("user_id")
self.orderby = params.get("orderby", "fav_datetime")
def metadata(self):
return {"favs_user_id": self.user_id}
def posts(self):
params = {
"favs_user_id": self.user_id,
@ -216,14 +232,30 @@ class InkbunnySearchExtractor(InkbunnyExtractor):
"&favsby=&type=&days=&keyword_id=&user_id=&random=&md5="), {
"range": "1-10",
"count": 10,
"keyword": {
"search": {
"rid": "ffffffffff",
"mode": "search",
"page": "1",
"orderby": "create_datetime",
"text": "cute",
"stringtype": "and",
"keywords": "yes",
"title": "yes",
"description": "no",
},
},
})
def __init__(self, match):
InkbunnyExtractor.__init__(self, match)
self.query = match.group(1)
self.params = text.parse_query(match.group(1))
def metadata(self):
return {"search": self.params}
def posts(self):
params = text.parse_query(self.query)
params = self.params.copy()
pop = params.pop
pop("rid", None)

Loading…
Cancel
Save