- --lang ohne Angabe aus der ersten OCR-Sprache ableiten (eng -> en) - Fehlen Titel/Autor in den PDF-Metadaten: aus dem Dateinamen nach dem Muster "Autor_-_Titel" übernehmen, sonst Dateiname mit Leerzeichen - --jobs: halbe Kernzahl, höchstens 8 (bisher 4) - Tests (tests/test_defaults.py), README und Bedienungsanleitung Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Standardwerte: EPUB-Sprache, Prozesszahl, Titel/Autor aus dem Dateinamen."""
|
|
|
|
import zipfile
|
|
|
|
import pymupdf
|
|
import pytest
|
|
|
|
import pdf2md as p
|
|
from conftest import needs_pandoc
|
|
from test_e2e import run
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"ocr_language, expected",
|
|
[("deu", "de"), ("eng", "en"), ("eng+deu", "en"), ("fra", "fr"), ("xyz", "de")],
|
|
)
|
|
def test_epub_language_follows_ocr_language(ocr_language, expected):
|
|
assert p.epub_language(ocr_language) == expected
|
|
|
|
|
|
@pytest.mark.parametrize("cores, expected", [(None, 1), (1, 1), (4, 2), (24, 8)])
|
|
def test_default_jobs(monkeypatch, cores, expected):
|
|
monkeypatch.setattr(p.os, "cpu_count", lambda: cores)
|
|
assert p.default_jobs() == expected
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"stem, expected",
|
|
[
|
|
("Katja_Adler_-_Rolle_rückwärts_DDR", ("Rolle rückwärts DDR", "Katja Adler")),
|
|
("Zensur_Netzwerk_Deutschland_de-report-de", ("Zensur Netzwerk Deutschland de-report-de", "")),
|
|
("A_-_B_-_C", ("B - C", "A")),
|
|
],
|
|
)
|
|
def test_title_author_from_filename(stem, expected):
|
|
assert p.title_author_from_filename(stem) == expected
|
|
|
|
|
|
@needs_pandoc
|
|
def test_epub_without_metadata_uses_filename_and_ocr_language(pdfs, tmp_path):
|
|
doc = pymupdf.open(pdfs["digital"])
|
|
doc.set_metadata({})
|
|
source = tmp_path / "Max_Muster_-_Ein_Buch.pdf"
|
|
doc.save(source)
|
|
|
|
run(source, tmp_path / "buch.md", "--epub", "--ocr-language", "eng")
|
|
with zipfile.ZipFile(tmp_path / "buch.epub") as z:
|
|
opf = z.read("EPUB/content.opf").decode()
|
|
assert ">Ein Buch<" in opf
|
|
assert ">Max Muster<" in opf
|
|
assert "<dc:language>en</dc:language>" in opf
|