add percentage counter

This commit is contained in:
Lucas Vivo committed 2026-10-07 09:08:14 +02:00
1 parent 1af47022e9
commit f9ee0a0694
1 file changed
+17 -7
@@ -7,6 +7,7 @@ import subprocess
import tempfile
from pathlib import Path
import time
from typing import Any
logfile=Path(f"media_{time.strftime("%Y%m%d_%H%M%S")}.log")
@@ -137,7 +138,7 @@ def create_m4b(root_path: Path, book_dir: Path) -> None:
else:
log_message(f"FAILED: Code: {result.returncode}, Stderr: {result.stderr}")
def find_book_dirs(root: Path) -> list[Path]:
def find_book_dirs(root: Path) -> tuple[list[Any], int]:
"""
A book directory is any directory containing more than one
audiobook file (.mp3, .m4a, .m4b)
@@ -152,13 +153,19 @@ def find_book_dirs(root: Path) -> list[Path]:
counts: dict[Path, int] = {}
for file in media_files:
if counts.get(file.parent, 0) > 1:
continue
counts[file.parent] = counts.get(file.parent, 0) + 1
return sorted(
directory
for directory, count in counts.items()
if count > 1
)
directories = []
size = 0
for directory, count in counts.items():
if count > 1:
directories.append(directory)
size += sum(file.stat().st_size for pattern in ("*.mp3", "*.m4a", "*.m4b") for file in directory.glob(pattern))
return sorted(directories), size
def main() -> None:
parser = argparse.ArgumentParser()
@@ -180,7 +187,7 @@ def main() -> None:
create_m4b(target.parent,target)
return
book_dir_set = find_book_dirs(target)
book_dir_set, library_size = find_book_dirs(target)
for book_dir in book_dir_set:
log_message(f"Found Media: {book_dir}")
@@ -190,8 +197,11 @@ def main() -> None:
if name != "y":
log_message(f"Aborted")
exit(0)
size = 0
# Root folder containing many books
for book_dir in book_dir_set:
size += sum(file.stat().st_size for pattern in ("*.mp3", "*.m4a", "*.m4b") for file in book_dir.glob(pattern))
print(f"{size / 1024**3:07.2f}/{library_size/ 1024**3:07.2f} - {size/library_size*100:.2f}% ... ",end="")
try:
create_m4b(target,book_dir)
except Exception as exc: