more flexible suffix check

This commit is contained in:
hyugogirubato
2025-10-19 19:48:13 +02:00
parent a489ae17fb
commit 597cb41b00
+17 -11
View File
@@ -1,5 +1,6 @@
from __future__ import annotations from __future__ import annotations
import logging
import zipfile import zipfile
from datetime import datetime, timezone from datetime import datetime, timezone
@@ -172,17 +173,22 @@ class ComicInfo(ComicModel):
pages_info = comic_info.get('Pages', {}).get('Page', []) pages_info = comic_info.get('Pages', {}).get('Page', [])
for i, name in enumerate(names): for i, name in enumerate(names):
suffix = Path(name).suffix suffix = Path(name).suffix
if suffix:
assert suffix in IMAGE_FORMAT, f'Unsupported image format: {suffix}' # Some archives may contain folders or hidden files (e.g., ".extra/" or "__MACOSX/.DS_Store")
with archive_file.open(name, 'r') as f: # that could corrupt the suffix detection and cause invalid image handling.
page_info = {} if not suffix or suffix not in IMAGE_FORMAT:
if i < len(pages_info): logging.warning(f'Skipping unsupported or invalid file: {name!r} (suffix={suffix!r})')
page_info = ComicInfo.__extract_info( continue
items=pages_info[i],
fields=PAGE_FIELDS with archive_file.open(name, 'r') as f:
) page_info = {}
page_info['name'] = Path(name).name if i < len(pages_info):
pages.append(PageInfo.loads(data=f.read(), **page_info)) page_info = ComicInfo.__extract_info(
items=pages_info[i],
fields=PAGE_FIELDS
)
page_info['name'] = Path(name).name
pages.append(PageInfo.loads(data=f.read(), **page_info))
return ComicInfo.from_pages(pages=pages, **comic) return ComicInfo.from_pages(pages=pages, **comic)