From 447d04d13d2cabb98ba50f03f3c307f881b017ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tronel?= Date: Sun, 30 Aug 2026 09:33:02 +0200 Subject: [PATCH] Better imports in the pipeline. --- src/tscut/cli.py | 7 ++- src/tscut/config.py | 3 +- src/tscut/pipeline.py | 54 +++++++++++-------- .../{ocr/subtitles.py => subtitles/ocr.py} | 0 src/tscut/tscut.py | 5 +- 5 files changed, 43 insertions(+), 26 deletions(-) rename src/tscut/{ocr/subtitles.py => subtitles/ocr.py} (100%) diff --git a/src/tscut/cli.py b/src/tscut/cli.py index 5a4dc6a..581fac5 100644 --- a/src/tscut/cli.py +++ b/src/tscut/cli.py @@ -98,6 +98,7 @@ def main() -> int: input_file=Path(args.input_file), output_file=Path(args.output_file), parts=parts, + framerate = args.framerate, verbose=args.verbose, coarse=args.coarse, threshold=args.threshold, @@ -108,6 +109,10 @@ def main() -> int: all_optional_tools = all_optional_tools) logger.debug("Configuration: %s", config) - process_recording(config) + try: + process_recording(config) + except TSCutError as exc: + logger.error("%s", exc) + return 1 return 0 diff --git a/src/tscut/config.py b/src/tscut/config.py index 6c209b2..af70a35 100644 --- a/src/tscut/config.py +++ b/src/tscut/config.py @@ -4,12 +4,13 @@ from dataclasses import dataclass from pathlib import Path +from datetime import timedelta @dataclass class ProcessingOptions: input_file: Path output_file: Path - parts: list + parts: list[tuple[timedelta, timedelta]] tools_paths: dict[str, str] all_optional_tools: bool framerate: int|None = None diff --git a/src/tscut/pipeline.py b/src/tscut/pipeline.py index 04ec9bc..aed15c6 100644 --- a/src/tscut/pipeline.py +++ b/src/tscut/pipeline.py @@ -11,34 +11,44 @@ import logging import hexdump -from .config import ProcessingOptions -from .tscut import ( - SupportedFormat, - change_codec_private_data, - concatenate_h264_parts, - concatenate_h264_ts_parts, - do_ocr, - dump_codec_private_data, - extract_all_streams, - extract_mkv_part, - extract_srt, - extract_track_from_mkv, - ffmpeg_convert, - find_subtitles_tracks, - get_avc_config_from_h264, +from tscut.config import ProcessingOptions +from tscut.tools.mkvtoolnix import ( get_codec_private_data_from_mkv, + change_codec_private_data, + extract_mkv_part, + extract_track_from_mkv, + merge_mkvs, + remove_video_tracks_from_mkv, + remux_srt_subtitles +) +from tscut.tools.ffmpeg import ( + ffmpeg_convert, + extract_all_streams +) +from tscut.tools.ffprobe import ( + find_subtitles_tracks, get_format, get_frame_rate, get_movie_duration, get_nearest_iframe, - get_streams, - get_tesseract_supported_lang, - get_ts_frame, - merge_mkvs, - parse_codec_private, - remove_video_tracks_from_mkv, - remux_srt_subtitles, + get_streams ) +from tscut.h264.avc import ( + parse_codec_private, + get_avc_config_from_h264 +) +from tscut.matroska.codec import dump_codec_private_data +from tscut.tscut import ( + concatenate_h264_parts, + concatenate_h264_ts_parts, + SupportedFormat +) +from tscut.subtitles.ocr import ( + do_ocr, + extract_srt, + get_tesseract_supported_lang +) +from tscut.tools.timeframe import get_ts_frame logger = logging.getLogger(__name__) diff --git a/src/tscut/ocr/subtitles.py b/src/tscut/subtitles/ocr.py similarity index 100% rename from src/tscut/ocr/subtitles.py rename to src/tscut/subtitles/ocr.py diff --git a/src/tscut/tscut.py b/src/tscut/tscut.py index c7bec65..43989d4 100755 --- a/src/tscut/tscut.py +++ b/src/tscut/tscut.py @@ -46,9 +46,10 @@ from tscut.tools.timeframe import ( parse_time_interval ) from tscut.tools.discovery import check_required_tools -from tscut.ocr.subtitles import ( +from tscut.subtitles.ocr import ( do_ocr, - extract_srt,get_tesseract_supported_lang + extract_srt, + get_tesseract_supported_lang ) from tscut.tools.mkvtoolnix import ( extract_mkv_part,