mirror of
https://github.com/hyugogirubato/cbz.git
synced 2026-09-26 13:31:00 +00:00
more flexible suffix check
This commit is contained in:
+17
-11
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user