[civitai] add 'user-videos' extractor (#6644)
This commit is contained in:
@@ -1677,9 +1677,11 @@ Description
|
||||
when processing a user profile.
|
||||
|
||||
Possible values are
|
||||
``"user-models"``,
|
||||
``"user-posts"``,
|
||||
``"user-images"``.
|
||||
|
||||
* ``"user-models"``
|
||||
* ``"user-posts"``
|
||||
* ``"user-images"``
|
||||
* ``"user-videos"``
|
||||
|
||||
It is possible to use ``"all"`` instead of listing all values separately.
|
||||
|
||||
@@ -1698,7 +1700,7 @@ Example
|
||||
Description
|
||||
Extract additional ``generation`` metadata.
|
||||
|
||||
Note: This requires 1 additional HTTP request per image.
|
||||
Note: This requires 1 additional HTTP request per image or video.
|
||||
|
||||
|
||||
extractor.civitai.nsfw
|
||||
|
||||
@@ -172,7 +172,7 @@ Consider all listed sites to potentially be NSFW.
|
||||
<tr>
|
||||
<td>Civitai</td>
|
||||
<td>https://www.civitai.com/</td>
|
||||
<td>individual Images, Image Listings, Models, Model Listings, Posts, Search Results, Tag Searches, User Profiles, User Images, User Models, User Posts</td>
|
||||
<td>individual Images, Image Listings, Models, Model Listings, Posts, Search Results, Tag Searches, User Profiles, User Images, User Models, User Posts, User Videos</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -338,6 +338,7 @@ class CivitaiUserExtractor(CivitaiExtractor):
|
||||
(CivitaiUserModelsExtractor, base + "models"),
|
||||
(CivitaiUserPostsExtractor , base + "posts"),
|
||||
(CivitaiUserImagesExtractor, base + "images"),
|
||||
(CivitaiUserVideosExtractor, base + "videos"),
|
||||
), ("user-models", "user-posts"))
|
||||
|
||||
|
||||
@@ -400,6 +401,20 @@ class CivitaiUserImagesExtractor(CivitaiExtractor):
|
||||
return self.api.images(params)
|
||||
|
||||
|
||||
class CivitaiUserVideosExtractor(CivitaiExtractor):
|
||||
subcategory = "user-videos"
|
||||
directory_fmt = ("{category}", "{username|user[username]}", "videos")
|
||||
pattern = USER_PATTERN + r"/videos/?(?:\?([^#]+))?"
|
||||
example = "https://civitai.com/user/USER/videos"
|
||||
|
||||
def images(self):
|
||||
self._image_ext = "mp4"
|
||||
params = text.parse_query(self.groups[1])
|
||||
params["types"] = ["video"]
|
||||
params["username"] = text.unquote(self.groups[0])
|
||||
return self.api.images(params)
|
||||
|
||||
|
||||
class CivitaiRestAPI():
|
||||
"""Interface for the Civitai Public REST API
|
||||
|
||||
@@ -484,7 +499,7 @@ class CivitaiTrpcAPI():
|
||||
self.root = extractor.root + "/api/trpc/"
|
||||
self.headers = {
|
||||
"content-type" : "application/json",
|
||||
"x-client-version": "5.0.211",
|
||||
"x-client-version": "5.0.394",
|
||||
"x-client-date" : "",
|
||||
"x-client" : "web",
|
||||
"x-fingerprint" : "undefined",
|
||||
|
||||
@@ -213,6 +213,7 @@ SUBCATEGORY_MAP = {
|
||||
"user-models": "User Models",
|
||||
"user-images": "User Images",
|
||||
"user-posts" : "User Posts",
|
||||
"user-videos": "User Videos",
|
||||
},
|
||||
"coomerparty": {
|
||||
"discord" : "",
|
||||
|
||||
@@ -241,4 +241,12 @@ __tests__ = (
|
||||
"#exception": exception.AuthorizationError,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://civitai.com/user/jboogx_creative/videos",
|
||||
"#class": civitai.CivitaiUserVideosExtractor,
|
||||
"#pattern": r"https://image\.civitai\.com/xG1nkqKTMzGDvpLrqFT7WA/[0-9a-f-]+/original=true/\S+\.mp4",
|
||||
"#range" : "1-50",
|
||||
"#count" : 50,
|
||||
},
|
||||
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user