streamrip/tests/test_tagger.py

112 lines
3.2 KiB
Python

import os
import shutil
import pytest
from mutagen.flac import FLAC
from util import arun
from streamrip.metadata import (
AlbumInfo,
AlbumMetadata,
Covers,
TrackInfo,
TrackMetadata,
tag_file,
)
TEST_FLAC_ORIGINAL = "tests/silence.flac"
TEST_FLAC_COPY = "tests/silence_copy.flac"
test_cover = "tests/1x1_pixel.jpg"
def wipe_test_flac():
audio = FLAC(TEST_FLAC_COPY)
# Remove all tags
audio.delete()
audio.save()
@pytest.fixture()
def sample_metadata() -> TrackMetadata:
return TrackMetadata(
TrackInfo(
id="12345",
quality=3,
bit_depth=24,
explicit=True,
sampling_rate=96,
work=None,
),
"testtitle",
AlbumMetadata(
AlbumInfo("5678", 4, "flac"),
"testalbum",
"testalbumartist",
"1999",
["rock", "pop"],
Covers(),
14,
3,
"testalbumcomposer",
"testcomment",
compilation="testcompilation",
copyright="(c) stuff (p) other stuff",
date="1998-02-13",
description="testdesc",
encoder="ffmpeg",
grouping="testgroup",
lyrics="ye ye ye",
purchase_date=None,
),
"testartist",
3,
1,
"testcomposer",
)
def test_tag_flac_no_cover(sample_metadata):
shutil.copy(TEST_FLAC_ORIGINAL, TEST_FLAC_COPY)
wipe_test_flac()
arun(tag_file(TEST_FLAC_COPY, sample_metadata, None))
file = FLAC(TEST_FLAC_COPY)
assert file["title"][0] == "testtitle"
assert file["album"][0] == "testalbum"
assert file["composer"][0] == "testcomposer"
assert file["comment"][0] == "testcomment"
assert file["artist"][0] == "testartist"
assert file["albumartist"][0] == "testalbumartist"
assert file["year"][0] == "1999"
assert file["genre"][0] == "rock, pop"
assert file["tracknumber"][0] == "03"
assert file["discnumber"][0] == "01"
assert file["copyright"][0] == "© stuff ℗ other stuff"
assert file["tracktotal"][0] == "14"
assert file["date"][0] == "1998-02-13"
assert "purchase_date" not in file, file["purchase_date"]
os.remove(TEST_FLAC_COPY)
def test_tag_flac_cover(sample_metadata):
shutil.copy(TEST_FLAC_ORIGINAL, TEST_FLAC_COPY)
wipe_test_flac()
arun(tag_file(TEST_FLAC_COPY, sample_metadata, test_cover))
file = FLAC(TEST_FLAC_COPY)
assert file["title"][0] == "testtitle"
assert file["album"][0] == "testalbum"
assert file["composer"][0] == "testcomposer"
assert file["comment"][0] == "testcomment"
assert file["artist"][0] == "testartist"
assert file["albumartist"][0] == "testalbumartist"
assert file["year"][0] == "1999"
assert file["genre"][0] == "rock, pop"
assert file["tracknumber"][0] == "03"
assert file["discnumber"][0] == "01"
assert file["copyright"][0] == "© stuff ℗ other stuff"
assert file["tracktotal"][0] == "14"
assert file["date"][0] == "1998-02-13"
with open(test_cover, "rb") as img:
assert file.pictures[0].data == img.read()
assert "purchase_date" not in file, file["purchase_date"]
os.remove(TEST_FLAC_COPY)