Enrich IQDB candidates; link downloads the e621 original
- IQDB responses carry no preview/file data, so candidates only showed an ID; the SPA now enriches them with one batched posts lookup (preview, rating, score, favourites, dimensions, tag preview) - Candidate tiles are selectable instead of instantly resolving: picking one shows its info and an explicit 'Link selected post' button - Linking a post now fetches the e621 original into the library and drops the staged upload; when the staged file's MD5 already equals the post's file, the staged copy is moved instead (identical bytes) - Keep the file URL in stored e621 metadata; sanitize the new candidate fields server-side
This commit is contained in:
@@ -231,6 +231,7 @@ def trim_e621_post(post):
|
||||
"size": file_data.get("size"),
|
||||
"width": file_data.get("width"),
|
||||
"height": file_data.get("height"),
|
||||
"url": file_data.get("url"),
|
||||
},
|
||||
"uploader_name": post.get("uploader_name"),
|
||||
}
|
||||
@@ -244,12 +245,38 @@ def sanitize_iqdb_results(results):
|
||||
continue
|
||||
score = result.get("score")
|
||||
post_id = result.get("post_id")
|
||||
tags_preview = result.get("tags_preview")
|
||||
entry = {
|
||||
"post_id": post_id if isinstance(post_id, int) else None,
|
||||
"score": float(score) if isinstance(score, (int, float)) else None,
|
||||
"preview_url": str(result.get("preview_url") or "")[:500] or None,
|
||||
"rating": str(result.get("rating") or "")[:1] or None,
|
||||
"md5": str(result.get("md5") or "")[:32] or None,
|
||||
"score_total": (
|
||||
result.get("score_total")
|
||||
if isinstance(result.get("score_total"), int)
|
||||
else None
|
||||
),
|
||||
"fav_count": (
|
||||
result.get("fav_count")
|
||||
if isinstance(result.get("fav_count"), int)
|
||||
else None
|
||||
),
|
||||
"width": (
|
||||
result.get("width")
|
||||
if isinstance(result.get("width"), int)
|
||||
else None
|
||||
),
|
||||
"height": (
|
||||
result.get("height")
|
||||
if isinstance(result.get("height"), int)
|
||||
else None
|
||||
),
|
||||
"tags_preview": (
|
||||
[str(tag)[:100] for tag in tags_preview][:8]
|
||||
if isinstance(tags_preview, list)
|
||||
else []
|
||||
),
|
||||
}
|
||||
if entry["post_id"] or entry["preview_url"]:
|
||||
cleaned.append(entry)
|
||||
|
||||
Reference in New Issue
Block a user