Pixiv native ingester (#129) + SubscribeStar .art fix, disable-clears-failure, system-tag suggestion floor #191

Merged
bvandeusen merged 9 commits from dev into main 2026-07-03 16:36:56 -04:00
Showing only changes of commit 4068a97392 - Show all commits
+19 -4
View File
@@ -67,9 +67,24 @@ def _post_and_media(work_id):
raise AssertionError(f"no work {work_id} in fixture")
def _post_only(work_id):
"""Normalized post WITHOUT media extraction — the write_post_record tests
don't need media, and extracting an ugoira would hit the API seam."""
page = json.loads(_FIXTURE.read_text())
for work in page["illusts"]:
if work["id"] == work_id:
return _client()._normalize(work)
raise AssertionError(f"no work {work_id} in fixture")
def _downloader(tmp_path, session=None):
# validate=False: the stub payload is PNG bytes regardless of the target
# extension, so real validation would quarantine the .jpg cases. The
# validate/quarantine plumbing is BaseNativeDownloader's, covered by the
# Patreon downloader tests.
return PixivDownloader(
tmp_path, session=session if session is not None else _FakeSession(),
tmp_path, validate=False,
session=session if session is not None else _FakeSession(),
)
@@ -188,7 +203,7 @@ def test_own_session_carries_app_referer(tmp_path):
def test_write_post_record_enriched(tmp_path):
post, _ = _post_and_media(111)
post = _post_only(111)
dl = _downloader(tmp_path)
outcome = dl.write_post_record(post, "artist-a")
@@ -219,7 +234,7 @@ def test_write_post_record_enriched(tmp_path):
def test_write_post_record_rating_r18(tmp_path):
post, _ = _post_and_media(222)
post = _post_only(222)
dl = _downloader(tmp_path)
outcome = dl.write_post_record(post, "artist-a")
data = json.loads(outcome.path.read_text())
@@ -228,7 +243,7 @@ def test_write_post_record_rating_r18(tmp_path):
def test_write_post_record_includes_ugoira_frames(tmp_path):
post, _ = _post_and_media(333)
post = _post_only(333)
frames = [{"file": "000000.jpg", "delay": 90}]
post["_work"]["_ugoira_frames"] = frames
dl = _downloader(tmp_path)