[civitai] add 'user-collections' extractor (#8005)
This commit is contained in:
@@ -1888,6 +1888,7 @@ Description
|
|||||||
* ``"user-posts"``
|
* ``"user-posts"``
|
||||||
* ``"user-images"``
|
* ``"user-images"``
|
||||||
* ``"user-videos"``
|
* ``"user-videos"``
|
||||||
|
* ``"user-collections"``
|
||||||
|
|
||||||
It is possible to use ``"all"`` instead of listing all values separately.
|
It is possible to use ``"all"`` instead of listing all values separately.
|
||||||
Note
|
Note
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ Consider all listed sites to potentially be NSFW.
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Civitai</td>
|
<td>Civitai</td>
|
||||||
<td>https://www.civitai.com/</td>
|
<td>https://www.civitai.com/</td>
|
||||||
<td>Collections, Generated Files, individual Images, Image Listings, Models, Model Listings, Posts, Post Listings, Image Searches, Model Searches, Tag Searches, User Profiles, User Images, Image Reactions, User Models, User Posts, User Videos, Video Reactions</td>
|
<td>Collections, Generated Files, individual Images, Image Listings, Models, Model Listings, Posts, Post Listings, Image Searches, Model Searches, Tag Searches, User Profiles, User Collections, User Images, Image Reactions, User Models, User Posts, User Videos, Video Reactions</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -483,6 +483,7 @@ class CivitaiUserExtractor(Dispatch, CivitaiExtractor):
|
|||||||
(CivitaiUserPostsExtractor , base + "posts"),
|
(CivitaiUserPostsExtractor , base + "posts"),
|
||||||
(CivitaiUserImagesExtractor, base + "images"),
|
(CivitaiUserImagesExtractor, base + "images"),
|
||||||
(CivitaiUserVideosExtractor, base + "videos"),
|
(CivitaiUserVideosExtractor, base + "videos"),
|
||||||
|
(CivitaiUserCollectionsExtractor, base + "collections"),
|
||||||
), ("user-images", "user-videos"))
|
), ("user-images", "user-videos"))
|
||||||
|
|
||||||
|
|
||||||
@@ -551,6 +552,22 @@ class CivitaiUserVideosExtractor(CivitaiExtractor):
|
|||||||
images = CivitaiUserImagesExtractor.images
|
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):
|
class CivitaiGeneratedExtractor(CivitaiExtractor):
|
||||||
"""Extractor for your generated files feed"""
|
"""Extractor for your generated files feed"""
|
||||||
subcategory = "generated"
|
subcategory = "generated"
|
||||||
@@ -785,6 +802,18 @@ class CivitaiTrpcAPI():
|
|||||||
params = {"id": int(collection_id)}
|
params = {"id": int(collection_id)}
|
||||||
return self._call(endpoint, params)["collection"]
|
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):
|
def user(self, username):
|
||||||
endpoint = "user.getCreator"
|
endpoint = "user.getCreator"
|
||||||
params = {"username": username}
|
params = {"username": username}
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ SUBCATEGORY_MAP = {
|
|||||||
"user-images": ("User Images", "Image Reactions"),
|
"user-images": ("User Images", "Image Reactions"),
|
||||||
"user-posts" : "User Posts",
|
"user-posts" : "User Posts",
|
||||||
"user-videos": ("User Videos", "Video Reactions"),
|
"user-videos": ("User Videos", "Video Reactions"),
|
||||||
|
"user-collections" : "User Collections",
|
||||||
"generated": "Generated Files",
|
"generated": "Generated Files",
|
||||||
},
|
},
|
||||||
"coomer": {
|
"coomer": {
|
||||||
|
|||||||
@@ -660,4 +660,18 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"#url" : "https://civitai.com/user/SakuraCherryBlossoms/collections",
|
||||||
|
"#class" : civitai.CivitaiUserCollectionsExtractor,
|
||||||
|
"#results" : (
|
||||||
|
"https://civitai.com/collections/11462456",
|
||||||
|
"https://civitai.com/collections/11453431",
|
||||||
|
"https://civitai.com/collections/11453135",
|
||||||
|
"https://civitai.com/collections/11407164",
|
||||||
|
"https://civitai.com/collections/11405046",
|
||||||
|
"https://civitai.com/collections/11395523",
|
||||||
|
"https://civitai.com/collections/11395467",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user