fix: поправил ошибку чтения из альбома если данных об альбоме нет в метаданных трека
solve #85 solve #100
This commit is contained in:
parent
7581bee661
commit
557f65aecc
1 changed files with 8 additions and 8 deletions
16
ymd/core.py
16
ymd/core.py
|
|
@ -29,6 +29,7 @@ from yandex_music import (
|
||||||
Client,
|
Client,
|
||||||
Track,
|
Track,
|
||||||
YandexMusicModel,
|
YandexMusicModel,
|
||||||
|
Album,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ymd import api
|
from ymd import api
|
||||||
|
|
@ -84,10 +85,10 @@ def init_client(token: str, timeout: int) -> Client:
|
||||||
return client.init()
|
return client.init()
|
||||||
|
|
||||||
|
|
||||||
def full_title(obj: YandexMusicModel) -> Optional[str]:
|
def full_title(obj: YandexMusicModel) -> str:
|
||||||
result = obj["title"]
|
result = obj["title"]
|
||||||
if result is None:
|
if result is None:
|
||||||
return
|
return ""
|
||||||
if version := obj["version"]:
|
if version := obj["version"]:
|
||||||
result += f" ({version})"
|
result += f" ({version})"
|
||||||
return result
|
return result
|
||||||
|
|
@ -139,7 +140,7 @@ def set_tags(
|
||||||
album_cover: Optional[AlbumCover],
|
album_cover: Optional[AlbumCover],
|
||||||
compatibility_level: int,
|
compatibility_level: int,
|
||||||
) -> None:
|
) -> None:
|
||||||
album = track.albums[0]
|
album = track.albums[0] if track.albums else Album()
|
||||||
track_artists = [a.name for a in track.artists if a.name]
|
track_artists = [a.name for a in track.artists if a.name]
|
||||||
album_artists = [a.name for a in album.artists if a.name]
|
album_artists = [a.name for a in album.artists if a.name]
|
||||||
tag = mutagen.File(path, [MP3, MP4, FLAC]) # type: ignore
|
tag = mutagen.File(path, [MP3, MP4, FLAC]) # type: ignore
|
||||||
|
|
@ -264,7 +265,6 @@ def download_track(
|
||||||
track = track_info.track
|
track = track_info.track
|
||||||
client = typing.cast(Client, track.client)
|
client = typing.cast(Client, track.client)
|
||||||
assert client
|
assert client
|
||||||
album = track.albums[0]
|
|
||||||
|
|
||||||
text_lyrics = None
|
text_lyrics = None
|
||||||
if lyrics_format != LyricsFormat.NONE and (lyrics_info := track.lyrics_info):
|
if lyrics_format != LyricsFormat.NONE and (lyrics_info := track.lyrics_info):
|
||||||
|
|
@ -291,12 +291,12 @@ def download_track(
|
||||||
raise RuntimeError("Unknown cover mime type")
|
raise RuntimeError("Unknown cover mime type")
|
||||||
album_cover = AlbumCover(data=cover_bytes, mime_type=mime_type)
|
album_cover = AlbumCover(data=cover_bytes, mime_type=mime_type)
|
||||||
if embed_cover:
|
if embed_cover:
|
||||||
album_id = album.id
|
album = track.albums[0] if track.albums else Album()
|
||||||
if album_id and (cached_cover := covers_cache.get(album_id)):
|
if album.id and (cached_cover := covers_cache.get(album.id)):
|
||||||
cover = cached_cover
|
cover = cached_cover
|
||||||
else:
|
else:
|
||||||
if album_id:
|
if album.id:
|
||||||
cover = covers_cache[album_id] = album_cover
|
cover = covers_cache[album.id] = album_cover
|
||||||
else:
|
else:
|
||||||
mime_suffix_dict = {MimeType.JPEG: ".jpg", MimeType.PNG: ".png"}
|
mime_suffix_dict = {MimeType.JPEG: ".jpg", MimeType.PNG: ".png"}
|
||||||
file_suffix = mime_suffix_dict.get(album_cover.mime_type)
|
file_suffix = mime_suffix_dict.get(album_cover.mime_type)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue