feat(preview): respect blur mature content setting

This commit is contained in:
pixelpaws
2025-10-25 06:43:03 +08:00
parent aa4b1ccc25
commit 807425f12a
6 changed files with 314 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ from typing import Any
import pytest
from py.services import preview_asset_service
from py.services.preview_asset_service import PreviewAssetService
@@ -180,3 +181,68 @@ async def test_ensure_preview_rewrites_civitai_video(tmp_path):
assert preview_path.exists()
assert preview_path.suffix == ".mp4"
assert local_metadata["preview_nsfw_level"] == 2
@pytest.mark.asyncio
async def test_ensure_preview_respects_blur_setting(monkeypatch, tmp_path):
metadata_path = tmp_path / "model.metadata.json"
metadata_path.write_text("{}")
local_metadata: dict[str, Any] = {}
class Downloader:
def __init__(self):
self.file_calls: list[tuple[str, str]] = []
async def download_file(self, url, path, use_auth=False):
self.file_calls.append((url, path))
Path(path).write_bytes(b"image-data")
return True, None
async def download_to_memory(self, *_args, **_kwargs):
pytest.fail("download_to_memory should not be used when download_file succeeds")
downloader = Downloader()
async def downloader_factory():
return downloader
class StubSettingsManager:
def __init__(self, blur: bool) -> None:
self.blur = blur
def get(self, key: str, default=None):
if key == "blur_mature_content":
return self.blur
return default
monkeypatch.setattr(
preview_asset_service,
"get_settings_manager",
lambda: StubSettingsManager(True),
)
service = PreviewAssetService(
metadata_manager=StubMetadataManager(),
downloader_factory=downloader_factory,
exif_utils=RecordingExifUtils(),
)
images = [
{
"url": "https://image.civitai.com/container/example/original=true/nsfw.jpeg",
"type": "image",
"nsfwLevel": 8,
},
{
"url": "https://image.civitai.com/container/example/original=true/safe.jpeg",
"type": "image",
"nsfwLevel": 1,
},
]
await service.ensure_preview_for_metadata(str(metadata_path), local_metadata, images)
assert len(downloader.file_calls) == 1
requested_url = downloader.file_calls[0][0]
assert "safe.jpeg" in requested_url
assert local_metadata["preview_nsfw_level"] == 1