From ea16f87fc9a6cf8613846a846ca8dc6867356923 Mon Sep 17 00:00:00 2001 From: RenatoXSR Date: Wed, 12 Aug 2026 09:46:34 -0300 Subject: [PATCH] spantrack interface ok --- src/epub_tts/__init__.py | 7 ++-- src/epub_tts/logger.py | 1 + src/epub_tts/spantrack.py | 79 ++++++++++++++++++++++++++++++--------- src/epub_tts/utils.py | 3 +- 4 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/epub_tts/__init__.py b/src/epub_tts/__init__.py index c566d43..8455cf7 100644 --- a/src/epub_tts/__init__.py +++ b/src/epub_tts/__init__.py @@ -14,7 +14,6 @@ except PackageNotFoundError: pass - -from .logger import logger, loglevel_map, get_logger -from .utils import DataDict, PathLike, path -from .app import App +#from .logger import logger, loglevel_map, get_logger +#from .utils import DataDict, PathLike, path +#from .app import App diff --git a/src/epub_tts/logger.py b/src/epub_tts/logger.py index eaed47f..19ae090 100644 --- a/src/epub_tts/logger.py +++ b/src/epub_tts/logger.py @@ -48,6 +48,7 @@ logging.basicConfig( level=logging.INFO, format=format_str, ) +logging.captureWarnings(True) logger = logging.getLogger(__name__) diff --git a/src/epub_tts/spantrack.py b/src/epub_tts/spantrack.py index 20db1fc..3f29acc 100644 --- a/src/epub_tts/spantrack.py +++ b/src/epub_tts/spantrack.py @@ -1,22 +1,65 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8; tab-width: 4; -*- +# vim: set fileencoding=utf-8 tabstop=4 shiftwidth=4 expandtab: +# Copyright (c) 2025-2026 Renato Xavier da Silveira Rosa +# See [LICENSE](./LICENSE) or [BSD-3-Clause-Clear](https://spdx.org/licenses/BSD-3-Clause-Clear.html) + +from pathlib import Path import os +import sys import logging -logger = logging.get_logger() +from datetime import datetime as dt + +from dotenv import load_dotenv +from .logger import logger + +from spantrack import cli, run_config + +load_dotenv() os.environ["NLTK_DATA"] = 'C:\\Users\\renat\\AppData\\Roaming\\nltk_data' os.environ["HF_TOKEN"] = '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' -from spantrack import cli -root = 'D:\\DATA\\EBOOKS\\_SEM_DRM\\' -globs = [ -"Night School*.epub", -"The Midnight*.epub", -"Past Tense*.epub", -"Blue Moon*.epub", -"The Sentinel", -"Better Off Dead", -"No Plan B", -] -for glob in globs: - f = root.glob(glob) - if len(f) > 1: - logger.error("Glob pattern found more than 1 file: %s", f) - continue - cli.main([f.resolve(), "--voice", "am_liam"]) \ No newline at end of file +timefmt = os.environ.get("TIMEFMT", r"%Y-%m-%dT%H:%M:%S.%f") + + + +def main(): + root = Path('D:\\DATA\\EBOOKS\\_SEM_DRM\\') + globs = [ + "Night School*.epub", + "The Midnight*.epub", + "Past Tense*.epub", + "Blue Moon*.epub", + "The Sentinel*.epub", + "Better Off Dead*.epub", + "No Plan B*.epub", + ] + + cmd = [] + if "--dry-run" in sys.argv: + cmd.extend("--dry-run") + cmd.extend(["--progress", + "--device", run_config.Device["CUDA"], # spantrack.run_config.Device, default=Device.AUTO, + #"--lexicon", # Path + #"--audio-format", # AudioFormat, default=AudioFormat.MP3, spantrack.run_config._AUDIO_MEDIA_TYPES + #"--lang", # Language, default=Language.EN_US, + "--voice","am_liam", + ]) + result_output = [] + for glob in globs: + file_list = [f for f in root.glob(glob)] + if len(file_list) > 1: + logger.error("Glob pattern found more than 1 file: %s", f) + continue + file = str(file_list[0]) + start = dt.now() + logger.info(f"[{start.strftime(timefmt)}] Narrating '{file}'") + cli.main([file] + cmd) + finish = dt.now() + logger.info(f"[{finish .strftime(timefmt)}] Success! '{file}'") + + elapsed_time = finish-start + elapsed_hours= elapsed_time.total_seconds // 3600 + elapsed_minutes = (elapsed_time.total_seconds % 3600) // 60 + elapsed_seconds = elapsed_time.total_seconds % 60 + f"Total elapsed time: {elapsed_hours}h {elapsed_minutes}min {elapsed_seconds}s" + result_output.append() \ No newline at end of file diff --git a/src/epub_tts/utils.py b/src/epub_tts/utils.py index e35c176..fd5a752 100644 --- a/src/epub_tts/utils.py +++ b/src/epub_tts/utils.py @@ -13,7 +13,8 @@ from pathlib import Path from typing import Optional, Union from collections.abc import MutableMapping -from . import logger, PathLike +from .logger import logger +from . import PathLike def path(fpath: str|Path = None):