[civitai] add 'user-collections' extractor (#8005)
This commit is contained in:
@@ -483,6 +483,7 @@ class CivitaiUserExtractor(Dispatch, CivitaiExtractor):
|
||||
(CivitaiUserPostsExtractor , base + "posts"),
|
||||
(CivitaiUserImagesExtractor, base + "images"),
|
||||
(CivitaiUserVideosExtractor, base + "videos"),
|
||||
(CivitaiUserCollectionsExtractor, base + "collections"),
|
||||
), ("user-images", "user-videos"))
|
||||
|
||||
|
||||
@@ -551,6 +552,22 @@ class CivitaiUserVideosExtractor(CivitaiExtractor):
|
||||
images = CivitaiUserImagesExtractor.images
|
||||
|
||||
|
||||
class CivitaiUserCollectionsExtractor(CivitaiExtractor):
|
||||
subcategory = "user-collections"
|
||||
pattern = USER_PATTERN + r"/collections/?(?:\?([^#]+))?"
|
||||
example = "https://civitai.com/user/USER/collections"
|
||||
|
||||
def items(self):
|
||||
user, query = self.groups
|
||||
params = self._parse_query(query)
|
||||
params["userId"] = self.api.user(text.unquote(user))[0]["id"]
|
||||
|
||||
base = f"{self.root}/collections/"
|
||||
for collection in self.api.collections(params):
|
||||
collection["_extractor"] = CivitaiCollectionExtractor
|
||||
yield Message.Queue, f"{base}{collection['id']}", collection
|
||||
|
||||
|
||||
class CivitaiGeneratedExtractor(CivitaiExtractor):
|
||||
"""Extractor for your generated files feed"""
|
||||
subcategory = "generated"
|
||||
@@ -785,6 +802,18 @@ class CivitaiTrpcAPI():
|
||||
params = {"id": int(collection_id)}
|
||||
return self._call(endpoint, params)["collection"]
|
||||
|
||||
def collections(self, params, defaults=True):
|
||||
endpoint = "collection.getInfinite"
|
||||
|
||||
if defaults:
|
||||
params = self._merge_params(params, {
|
||||
"browsingLevel": self.nsfw,
|
||||
"sort" : "Newest",
|
||||
})
|
||||
|
||||
params = self._type_params(params)
|
||||
return self._pagination(endpoint, params)
|
||||
|
||||
def user(self, username):
|
||||
endpoint = "user.getCreator"
|
||||
params = {"username": username}
|
||||
|
||||
Reference in New Issue
Block a user