add subcommand to show page counts and image sizes of an extracted work's files

This commit is contained in:
xenofem 2024-02-06 23:52:59 -05:00
parent cdf06d9aa0
commit c2f516a281

View file

@ -527,6 +527,28 @@ def manual_collate(args):
print(f'Unknown file type {path}, stopping') print(f'Unknown file type {path}, stopping')
return return
def fmt_size(s):
return f'{s[0]}x{s[1]}px'
def analyze(args):
extract_dir = args.destdir / 'extract'
files = descendant_files_ignore(extract_dir / args.work_id)
files.sort()
for f in files:
print(f'{relpath(f, extract_dir)}', end='')
if f.suffix.lower() in IMAGE_FILE_EXTENSIONS:
size = standalone_image_size(f)
print(f'\t{fmt_size(size)}')
elif f.suffix.lower() == '.pdf':
sizes = pdf_image_sizes(f)
if len(sizes) == 0:
print(f'\tContains no images')
else:
print(f'\t{len(sizes)} images, median {fmt_size(median(sizes))}, min {fmt_size(min(sizes))}, max {fmt_size(max(sizes))}')
else:
print()
def metadata(args): def metadata(args):
con = sqlite3.connect(args.destdir / 'meta.db') con = sqlite3.connect(args.destdir / 'meta.db')
cur = con.cursor() cur = con.cursor()
@ -813,6 +835,10 @@ parser_manual_collate.add_argument(
) )
parser_manual_collate.set_defaults(func=manual_collate) parser_manual_collate.set_defaults(func=manual_collate)
parser_analyze = subparsers.add_parser('analyze', help='analyze an extracted folder to assist in collation')
parser_analyze.add_argument('work_id')
parser_analyze.set_defaults(func=analyze)
parser_metadata = subparsers.add_parser('metadata', help='view or modify metadata for a work') parser_metadata = subparsers.add_parser('metadata', help='view or modify metadata for a work')
parser_metadata.add_argument('work_id') parser_metadata.add_argument('work_id')
parser_metadata.add_argument( parser_metadata.add_argument(