1
|
|
|
from glob import glob |
2
|
|
|
|
3
|
|
|
import os |
4
|
|
|
import pytest |
5
|
|
|
from mutagen.id3 import ID3 |
6
|
|
|
|
7
|
|
|
from music_album_creation.metadata import MetadataDealer as MD |
8
|
|
|
from music_album_creation.tracks_parsing import StringParser |
9
|
|
|
|
10
|
|
|
|
11
|
|
|
@pytest.fixture(scope='module') |
12
|
|
|
def test_album_dir(): |
13
|
|
|
return os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/album_0/') |
14
|
|
|
|
15
|
|
|
|
16
|
|
|
@pytest.fixture(scope='module') |
17
|
|
|
def album_info(): |
18
|
|
|
return {'artist': ['ratm', 'TPE1'], |
19
|
|
|
'album-artist': ['ratm', 'TPE2'], |
20
|
|
|
'album': ['renegades', 'TALB'], |
21
|
|
|
'year': ['2000', 'TDRC'] |
22
|
|
|
} |
23
|
|
|
|
24
|
|
|
@pytest.fixture(scope='module') |
25
|
|
|
def tags_from_file_name(): |
26
|
|
|
return {'track_number': {'tag': 'TRCK', 'parser': lambda x: str(int(x))}, # 4.2.1 TRCK [#TRCK Track number/Position in set] |
27
|
|
|
'track_name': {'tag': 'TIT2'} # 4.2.1 TIT2 [#TIT2 Title/songname/content description] |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
def test_writting_album_metadata(test_album_dir, album_info, tags_from_file_name): |
31
|
|
|
MD.set_album_metadata(test_album_dir, track_number=True, track_name=True, artist=album_info['artist'][0], |
32
|
|
|
album_artist=album_info['album-artist'][0], album=album_info['album'][0], year=album_info['year'][0]) |
33
|
|
|
for file_path in glob(test_album_dir + '/*'): |
34
|
|
|
c = StringParser.parse_track_number_n_name(os.path.basename(file_path)) |
35
|
|
|
audio = ID3(file_path) |
36
|
|
|
assert all(str(audio.get(v[1]) == v[0] for v in album_info.values())) |
37
|
|
|
# for k, v in tags_from_file_name.items(): |
38
|
|
|
# print("TAG SET: {}={}, requested: {}={}".format(v, str(audio.get(v)), k, c[k])) |
39
|
|
|
assert all([str(audio.get(data['tag'])) == data.get('parser', lambda x: x)(c[k]) for k, data in tags_from_file_name.items()]) |
40
|
|
|
|