add(aduio): tagging files

This commit is contained in:
Steppenstreuner
2026-08-28 14:18:09 +02:00
parent c03bd4a2e2
commit c4e181b05b
4 changed files with 113 additions and 0 deletions
+34
View File
@@ -134,3 +134,37 @@ def test_bulk_requests_and_split_scan(client):
by_name = {i["name"]: i["suggested_request_id"] for i in items}
expected = {f"Die drei Fragezeichen - Folge {n:03d}": created[n - 1]["id"] for n in (1, 2, 3)}
assert by_name == expected
def test_audio_tags_written_on_import(client):
from mutagen.id3 import ID3
root = client.tmp_path / "library" / "kids_audio"
lib_id = client.post("/api/libraries", json={
"name": "KidsAudio", "media_type": "audiobook", "root_path": str(root),
}).json()["id"]
req_id = client.post("/api/requests", json={
"library_id": lib_id, "title": "Die drei ??? Kids Folge 085",
"authors": "Ulf Blanck", "series": "Die drei ??? Kids", "volume": 85,
}).json()["id"]
book_dir = client.downloads / "Kids 85 Schnueffler"
book_dir.mkdir()
for i in range(2):
(book_dir / f"track{i}.mp3").write_bytes(b"")
items = client.get("/api/import/scan").json()["items"]
resp = client.post("/api/import", json={"items": [{
"path": items[0]["path"], "is_dir": True,
"files": items[0]["files"], "request_id": req_id,
}]})
assert resp.json()["results"][0]["ok"]
dest = root / "Ulf Blanck" / "Die drei Kids Folge 085" # "?" is stripped from paths
files = sorted(dest.iterdir())
tags = ID3(files[0])
assert str(tags["TALB"]) == "Die drei ??? Kids Folge 085"
assert str(tags["TPE1"]) == "Ulf Blanck"
assert str(tags["TXXX:SERIES"]) == "Die drei ??? Kids"
assert str(tags["TXXX:SERIES-PART"]) == "85"
assert str(tags["TRCK"]) == "1/2"