[civitai] implement retrieving 'post' metadata (#7548)
This commit is contained in:
@@ -1875,12 +1875,12 @@ Type
|
|||||||
Default
|
Default
|
||||||
``false``
|
``false``
|
||||||
Example
|
Example
|
||||||
* ``"generation,version"``
|
* ``"generation,post,version"``
|
||||||
* ``["generation", "version"]``
|
* ``["version", "generation"]``
|
||||||
Description
|
Description
|
||||||
Extract additional ``generation`` and ``version`` metadata.
|
Extract additional ``generation``, ``version``, and ``post`` metadata.
|
||||||
|
|
||||||
Note: This requires 1 additional HTTP request per image or video.
|
Note: This requires 1 or more additional API requests per image or video.
|
||||||
|
|
||||||
|
|
||||||
extractor.civitai.nsfw
|
extractor.civitai.nsfw
|
||||||
|
|||||||
@@ -64,11 +64,13 @@ class CivitaiExtractor(Extractor):
|
|||||||
if isinstance(metadata, str):
|
if isinstance(metadata, str):
|
||||||
metadata = metadata.split(",")
|
metadata = metadata.split(",")
|
||||||
elif not isinstance(metadata, (list, tuple)):
|
elif not isinstance(metadata, (list, tuple)):
|
||||||
metadata = ("generation", "version")
|
metadata = ("generation", "version", "post")
|
||||||
self._meta_generation = ("generation" in metadata)
|
self._meta_generation = ("generation" in metadata)
|
||||||
self._meta_version = ("version" in metadata)
|
self._meta_version = ("version" in metadata)
|
||||||
|
self._meta_post = ("post" in metadata)
|
||||||
else:
|
else:
|
||||||
self._meta_generation = self._meta_version = False
|
self._meta_generation = self._meta_version = self._meta_post = \
|
||||||
|
False
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
models = self.models()
|
models = self.models()
|
||||||
@@ -122,6 +124,9 @@ class CivitaiExtractor(Extractor):
|
|||||||
self._extract_meta_version(file, False)
|
self._extract_meta_version(file, False)
|
||||||
if "post" in file:
|
if "post" in file:
|
||||||
data["post"] = file.pop("post")
|
data["post"] = file.pop("post")
|
||||||
|
if self._meta_post and "post" not in data:
|
||||||
|
data["post"] = post = self._extract_meta_post(file)
|
||||||
|
post.pop("user", None)
|
||||||
file["date"] = text.parse_datetime(
|
file["date"] = text.parse_datetime(
|
||||||
file["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
file["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
||||||
|
|
||||||
@@ -204,6 +209,12 @@ class CivitaiExtractor(Extractor):
|
|||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
return self.log.debug("", exc_info=exc)
|
return self.log.debug("", exc_info=exc)
|
||||||
|
|
||||||
|
def _extract_meta_post(self, image):
|
||||||
|
try:
|
||||||
|
return self.api.post(image["postId"])
|
||||||
|
except Exception as exc:
|
||||||
|
return self.log.debug("", exc_info=exc)
|
||||||
|
|
||||||
def _extract_meta_version(self, item, is_post=True):
|
def _extract_meta_version(self, item, is_post=True):
|
||||||
try:
|
try:
|
||||||
version_id = self._extract_version_id(item, is_post)
|
version_id = self._extract_version_id(item, is_post)
|
||||||
|
|||||||
@@ -193,8 +193,9 @@ __tests__ = (
|
|||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "https://civitai.com/images/44789630",
|
"#url" : "https://civitai.com/images/44789630",
|
||||||
"#comment": "video",
|
"#comment": "video - 'post' metadata (#7548)",
|
||||||
"#class" : civitai.CivitaiImageExtractor,
|
"#class" : civitai.CivitaiImageExtractor,
|
||||||
|
"#options": {"metadata": "post"},
|
||||||
"#results": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/6a09ec54-6de4-4af1-b11d-2d0d8a66d651/quality=100/copy_C6C532CE-EC47-4A52-9138-AEF1D7756F16.Mp4",
|
"#results": "https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/6a09ec54-6de4-4af1-b11d-2d0d8a66d651/quality=100/copy_C6C532CE-EC47-4A52-9138-AEF1D7756F16.Mp4",
|
||||||
|
|
||||||
"extension": "mp4",
|
"extension": "mp4",
|
||||||
@@ -221,6 +222,18 @@ __tests__ = (
|
|||||||
"width" : 1080,
|
"width" : 1080,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"post": {
|
||||||
|
"availability": "Public",
|
||||||
|
"collectionId": None,
|
||||||
|
"detail" : None,
|
||||||
|
"id" : 10151863,
|
||||||
|
"modelVersion": None,
|
||||||
|
"modelVersionId": None,
|
||||||
|
"nsfwLevel" : 2,
|
||||||
|
"publishedAt" : "2024-12-10T19:20:51.579Z",
|
||||||
|
"tags" : [],
|
||||||
|
"title" : None,
|
||||||
|
},
|
||||||
"user" : {
|
"user" : {
|
||||||
"username": "jboogx_creative",
|
"username": "jboogx_creative",
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user