add percentage counter
This commit is contained in:
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:
|
||||
|
||||
Reference in new issue
Block a user