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
|