fdf
This commit is contained in:
@@ -28,6 +28,9 @@ should_show_help = sh.should_show_help
|
||||
|
||||
from SYS import pipeline as ctx
|
||||
|
||||
_CHAPTER_TITLE_SPLIT_RE = _re.compile(r"^(?P<prefix>.+?)\s+-\s+(?P<chapter>.+)$")
|
||||
_FFMPEG_TIME_RE = _re.compile(r"time=(\d{2}):(\d{2}):(\d{2})\.(\d{2})")
|
||||
|
||||
try:
|
||||
from pypdf import PdfWriter, PdfReader
|
||||
|
||||
@@ -611,13 +614,12 @@ def _merge_audio(files: List[Path], output: Path, output_format: str) -> bool:
|
||||
# "Book Name - Chapter"
|
||||
# If *all* titles share the same "Book Name" prefix, strip it.
|
||||
if len(chapters) >= 2:
|
||||
split_re = _re.compile(r"^(?P<prefix>.+?)\s+-\s+(?P<chapter>.+)$")
|
||||
prefixes: List[str] = []
|
||||
stripped_titles: List[str] = []
|
||||
all_match = True
|
||||
for ch in chapters:
|
||||
raw_title = str(ch.get("title") or "").strip()
|
||||
m = split_re.match(raw_title)
|
||||
m = _CHAPTER_TITLE_SPLIT_RE.match(raw_title)
|
||||
if not m:
|
||||
all_match = False
|
||||
break
|
||||
@@ -721,7 +723,6 @@ def _merge_audio(files: List[Path], output: Path, output_format: str) -> bool:
|
||||
)
|
||||
|
||||
# Monitor progress
|
||||
duration_re = re.compile(r"time=(\d{2}):(\d{2}):(\d{2})\.(\d{2})")
|
||||
total_duration_sec = current_time_ms / 1000.0
|
||||
|
||||
while True:
|
||||
@@ -733,7 +734,7 @@ def _merge_audio(files: List[Path], output: Path, output_format: str) -> bool:
|
||||
|
||||
if line:
|
||||
# Parse time=HH:MM:SS.mm
|
||||
match = duration_re.search(line)
|
||||
match = _FFMPEG_TIME_RE.search(line)
|
||||
if match and total_duration_sec > 0:
|
||||
h, m, s, cs = map(int, match.groups())
|
||||
current_sec = h * 3600 + m * 60 + s + cs / 100.0
|
||||
|
||||
Reference in New Issue
Block a user