[civitai] add 'user-collections' extractor (#8005)

This commit is contained in:
Mike Fährmann
2025-08-10 18:42:03 +02:00
parent 2b03843092
commit e92538624e
5 changed files with 46 additions and 1 deletions

View File

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