[civitai] implement retrieving 'post' metadata (#7548)

This commit is contained in:
Mike Fährmann
2025-07-07 11:48:21 +02:00
parent d25b1f22f3
commit ad84e72fda
3 changed files with 31 additions and 7 deletions

View File

@@ -64,11 +64,13 @@ class CivitaiExtractor(Extractor):
if isinstance(metadata, str):
metadata = metadata.split(",")
elif not isinstance(metadata, (list, tuple)):
metadata = ("generation", "version")
metadata = ("generation", "version", "post")
self._meta_generation = ("generation" in metadata)
self._meta_version = ("version" in metadata)
self._meta_post = ("post" in metadata)
else:
self._meta_generation = self._meta_version = False
self._meta_generation = self._meta_version = self._meta_post = \
False
def items(self):
models = self.models()
@@ -122,6 +124,9 @@ class CivitaiExtractor(Extractor):
self._extract_meta_version(file, False)
if "post" in file:
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["createdAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
@@ -204,6 +209,12 @@ class CivitaiExtractor(Extractor):
except Exception as 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):
try:
version_id = self._extract_version_id(item, is_post)