Добавление ссылки на трек в метаданные .mp3 файла (#19)
Ссылка сохраняется в фрейме WOAF (Official audio file webpage)
This commit is contained in:
parent
f5f730a8b4
commit
2b700ebb16
1 changed files with 9 additions and 6 deletions
15
main.py
15
main.py
|
|
@ -31,7 +31,8 @@ PLAYLIST_RE = re.compile(r'([\w\-._]+)/playlists/(\d+)$')
|
||||||
|
|
||||||
FILENAME_CLEAR_RE = re.compile(r'[^\w\-\'() ]+')
|
FILENAME_CLEAR_RE = re.compile(r'[^\w\-\'() ]+')
|
||||||
|
|
||||||
TITLE_FMT = '%(title)s (%(version)s)'
|
TITLE_TEMPLATE = '{tile} ({version})'
|
||||||
|
TRACK_URL_TEMPLATE = 'https://music.yandex.ru/album/{album_id}/track/{track_id}'
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|
@ -70,7 +71,7 @@ def parse_artists(artists: list) -> list[str]:
|
||||||
def parse_title(data: dict) -> str:
|
def parse_title(data: dict) -> str:
|
||||||
title = data['title']
|
title = data['title']
|
||||||
if version := data.get('version'):
|
if version := data.get('version'):
|
||||||
title = TITLE_FMT % {'title': title, 'version': version}
|
title = TITLE_TEMPLATE.format(title=title, version=version)
|
||||||
return title
|
return title
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -280,8 +281,8 @@ def set_id3_tags(path: Path, track: BasicTrackInfo, lyrics: Optional[str],
|
||||||
else:
|
else:
|
||||||
release_date = track.album.year
|
release_date = track.album.year
|
||||||
audiofile = eyed3.load(path)
|
audiofile = eyed3.load(path)
|
||||||
if audiofile is None:
|
assert audiofile
|
||||||
raise ValueError
|
|
||||||
tag = audiofile.initTag()
|
tag = audiofile.initTag()
|
||||||
|
|
||||||
tag.artist = chr(0).join(track.artists)
|
tag.artist = chr(0).join(track.artists)
|
||||||
|
|
@ -292,6 +293,8 @@ def set_id3_tags(path: Path, track: BasicTrackInfo, lyrics: Optional[str],
|
||||||
tag.disc_num = track.disc_number
|
tag.disc_num = track.disc_number
|
||||||
tag.release_date = tag.original_release_date = release_date
|
tag.release_date = tag.original_release_date = release_date
|
||||||
tag.encoded_by = ENCODED_BY
|
tag.encoded_by = ENCODED_BY
|
||||||
|
tag.audio_file_url = TRACK_URL_TEMPLATE.format(album_id=track.album.id,
|
||||||
|
track_id=track.id)
|
||||||
|
|
||||||
if lyrics is not None:
|
if lyrics is not None:
|
||||||
tag.lyrics.set(lyrics)
|
tag.lyrics.set(lyrics)
|
||||||
|
|
@ -472,8 +475,8 @@ if __name__ == '__main__':
|
||||||
if isinstance(track, FullTrackInfo):
|
if isinstance(track, FullTrackInfo):
|
||||||
lyrics = track.lyrics
|
lyrics = track.lyrics
|
||||||
else:
|
else:
|
||||||
full_info = get_full_track_info(session, track.id)
|
full_track = get_full_track_info(session, track.id)
|
||||||
lyrics = full_info.lyrics
|
lyrics = full_track.lyrics
|
||||||
|
|
||||||
cover = None
|
cover = None
|
||||||
cover_url = track.cover_info.cover_url(args.cover_resolution)
|
cover_url = track.cover_info.cover_url(args.cover_resolution)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue