From 0ca6f76119c54961716eed1aaaef27fb921669e6 Mon Sep 17 00:00:00 2001 From: Lev Date: Fri, 30 Dec 2022 20:41:08 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BF=D1=83=D1=81=D0=BA=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D1=82=D1=80=D0=B5=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index a951595..0bc9ef1 100644 --- a/main.py +++ b/main.py @@ -70,6 +70,8 @@ class BasicTrackInfo: @staticmethod def from_json(json: dict): + if not json['available']: + return None album_json = json['albums'][0] artists_names = [a['name'] for a in json['artists']] track_position = album_json['trackPosition'] @@ -81,7 +83,6 @@ class BasicTrackInfo: version = json.get('version', None) if version is not None: title = TITLE_FMT % {'title': title, 'version': version} - return BasicTrackInfo(title=title, id=str(json['id']), real_id=json['realId'], number=track_position['index'], disc_number=track_position['volume'], artists=artists_names, album=album, url_template=url_template, @@ -110,9 +111,9 @@ class FullAlbumInfo(BasicAlbumInfo): def from_json(json: dict): base = BasicAlbumInfo.from_json(json) tracks = json.get('volumes', []) - tracks = [t for v in tracks for t in v] # Array flattening + tracks = [t for v in tracks for t in v] tracks = map(BasicTrackInfo.from_json, tracks) - tracks = list(tracks) + tracks = [t for t in tracks if t is not None] return FullAlbumInfo(**base.__dict__, tracks=tracks) @@ -186,7 +187,9 @@ def get_playlist(session: Session, playlist: PlaylistId) -> list[BasicTrackInfo] resp = session.get('https://music.yandex.ru/handlers/playlist.jsx' f'?owner={playlist.owner}&kinds={playlist.kind}&lang=ru') raw_tracks = resp.json()['playlist']['tracks'] - return [BasicTrackInfo.from_json(t) for t in raw_tracks] + tracks = [BasicTrackInfo.from_json(t) for t in raw_tracks] + tracks = [t for t in tracks if t is not None] + return tracks def prepare_track_path(path: Path, prepare_path: bool, track: BasicTrackInfo) -> Path: