Init CBZ Volume Combiner v0.2.0
This commit is contained in:
31
cbz_volume_combiner/core.py
Normal file
31
cbz_volume_combiner/core.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# File: /home/code/projects/manga-organizer-1/cbz-volume-combiner/cbz_volume_combiner/core.py
|
||||
import os
|
||||
from collections import defaultdict
|
||||
from .parsing import parse_manga_filename
|
||||
|
||||
def organize_by_volume(cbz_files, extra_verbose=False):
|
||||
"""Group CBZ files by manga name and volume."""
|
||||
volumes = defaultdict(lambda: defaultdict(list))
|
||||
unparsed_files = []
|
||||
|
||||
for cbz_file in cbz_files:
|
||||
info = parse_manga_filename(cbz_file)
|
||||
if info:
|
||||
manga_key = info['manga_name'].lower()
|
||||
volumes[manga_key][info['volume']].append(info)
|
||||
else:
|
||||
unparsed_files.append(cbz_file)
|
||||
|
||||
# Sort chapters within each volume
|
||||
for manga in volumes:
|
||||
for volume in volumes[manga]:
|
||||
volumes[manga][volume].sort(key=lambda x: x['chapter'])
|
||||
|
||||
if extra_verbose and unparsed_files:
|
||||
print(f"\nWARNING: Could not parse {len(unparsed_files)} files:")
|
||||
for file in unparsed_files[:10]: # Show first 10 only to avoid spam
|
||||
print(f" - {os.path.basename(file)}")
|
||||
if len(unparsed_files) > 10:
|
||||
print(f" ... and {len(unparsed_files) - 10} more")
|
||||
|
||||
return volumes
|
||||
Reference in New Issue
Block a user