mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-03-23 01:53:32 +08:00
Use ExtractedMetadata in ingest_existing_file instead of passing raw dict
Have ingest_existing_file call extract_file_metadata() to build a proper ExtractedMetadata object, matching what the scanner does. This tightens SeedAssetSpec.metadata to ExtractedMetadata | None and removes dict-handling branches in bulk_ingest.py that would have raised AttributeError on to_meta_rows()/to_user_metadata(). Amp-Thread-ID: https://ampcode.com/threads/T-019cfdf9-2379-723a-82cf-306755e54396 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
parent
05f0052c73
commit
b9286572d3
@ -34,7 +34,7 @@ class SeedAssetSpec(TypedDict):
|
|||||||
info_name: str
|
info_name: str
|
||||||
tags: list[str]
|
tags: list[str]
|
||||||
fname: str
|
fname: str
|
||||||
metadata: ExtractedMetadata | dict[str, Any] | None
|
metadata: ExtractedMetadata | None
|
||||||
hash: str | None
|
hash: str | None
|
||||||
mime_type: str | None
|
mime_type: str | None
|
||||||
job_id: str | None
|
job_id: str | None
|
||||||
@ -152,10 +152,8 @@ def batch_insert_seed_assets(
|
|||||||
|
|
||||||
# Build user_metadata from extracted metadata or fallback to filename
|
# Build user_metadata from extracted metadata or fallback to filename
|
||||||
extracted_metadata = spec.get("metadata")
|
extracted_metadata = spec.get("metadata")
|
||||||
if isinstance(extracted_metadata, dict):
|
if extracted_metadata:
|
||||||
user_metadata: dict[str, Any] | None = extracted_metadata
|
user_metadata: dict[str, Any] | None = extracted_metadata.to_user_metadata()
|
||||||
elif extracted_metadata:
|
|
||||||
user_metadata = extracted_metadata.to_user_metadata()
|
|
||||||
elif spec["fname"]:
|
elif spec["fname"]:
|
||||||
user_metadata = {"filename": spec["fname"]}
|
user_metadata = {"filename": spec["fname"]}
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -26,6 +26,7 @@ from app.assets.database.queries import (
|
|||||||
from app.assets.helpers import get_utc_now, normalize_tags
|
from app.assets.helpers import get_utc_now, normalize_tags
|
||||||
from app.assets.services.bulk_ingest import batch_insert_seed_assets
|
from app.assets.services.bulk_ingest import batch_insert_seed_assets
|
||||||
from app.assets.services.file_utils import get_size_and_mtime_ns
|
from app.assets.services.file_utils import get_size_and_mtime_ns
|
||||||
|
from app.assets.services.metadata_extract import extract_file_metadata
|
||||||
from app.assets.services.path_utils import (
|
from app.assets.services.path_utils import (
|
||||||
compute_relative_filename,
|
compute_relative_filename,
|
||||||
get_name_and_tags_from_asset_path,
|
get_name_and_tags_from_asset_path,
|
||||||
@ -196,6 +197,7 @@ def ingest_existing_file(
|
|||||||
session.commit()
|
session.commit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
metadata = extract_file_metadata(locator)
|
||||||
spec = {
|
spec = {
|
||||||
"abs_path": abs_path,
|
"abs_path": abs_path,
|
||||||
"size_bytes": size_bytes,
|
"size_bytes": size_bytes,
|
||||||
@ -203,9 +205,9 @@ def ingest_existing_file(
|
|||||||
"info_name": name,
|
"info_name": name,
|
||||||
"tags": tags,
|
"tags": tags,
|
||||||
"fname": os.path.basename(abs_path),
|
"fname": os.path.basename(abs_path),
|
||||||
"metadata": user_metadata,
|
"metadata": metadata,
|
||||||
"hash": None,
|
"hash": None,
|
||||||
"mime_type": mime_type,
|
"mime_type": mime_type or metadata.content_type,
|
||||||
"job_id": job_id,
|
"job_id": job_id,
|
||||||
}
|
}
|
||||||
result = batch_insert_seed_assets(session, [spec], owner_id=owner_id)
|
result = batch_insert_seed_assets(session, [spec], owner_id=owner_id)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user