From 6f610e62f66d6057e40abd75df540c702234a0ee Mon Sep 17 00:00:00 2001 From: codezjx Date: Sat, 6 Feb 2021 12:48:39 +0800 Subject: [PATCH] #56 Bugfix: Fix api change of playlist, use v6 version. --- ncm/api.py | 2 +- ncm/constants.py | 2 +- ncm/downloader.py | 9 +++++++-- ncm/start.py | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ncm/api.py b/ncm/api.py index 93685fc..3ce80f1 100644 --- a/ncm/api.py +++ b/ncm/api.py @@ -91,7 +91,7 @@ class CloudApi(object): """ url = get_playlist_url(playlist_id) result = self.get_request(url) - return result['result']['tracks'], result['result']['name'] + return result['playlist']['trackIds'], result['playlist']['name'] diff --git a/ncm/constants.py b/ncm/constants.py index b569728..7477ad2 100644 --- a/ncm/constants.py +++ b/ncm/constants.py @@ -31,4 +31,4 @@ def get_artist_url(artist_id): def get_playlist_url(playlist_id): - return 'http://music.163.com/api/playlist/detail?id={}'.format(playlist_id) + return 'http://music.163.com/api/v6/playlist/detail?id={}'.format(playlist_id) diff --git a/ncm/downloader.py b/ncm/downloader.py index ea5c2f2..b35ce7c 100644 --- a/ncm/downloader.py +++ b/ncm/downloader.py @@ -10,10 +10,15 @@ from ncm.file_util import add_metadata_to_song from ncm.file_util import resize_img -def download_song_by_id(song_id, download_folder, sub_folder=True): - # get song info +def get_song_info_by_id(song_id): api = CloudApi() song = api.get_song(song_id) + return song + + +def download_song_by_id(song_id, download_folder, sub_folder=True): + # get song info + song = get_song_info_by_id(song_id) download_song_by_song(song, download_folder, sub_folder) diff --git a/ncm/start.py b/ncm/start.py index 42c707d..b5240e8 100644 --- a/ncm/start.py +++ b/ncm/start.py @@ -5,6 +5,7 @@ import os from urllib.parse import urlparse, parse_qs from ncm import config from ncm.api import CloudApi +from ncm.downloader import get_song_info_by_id from ncm.downloader import download_song_by_id from ncm.downloader import download_song_by_song from ncm.downloader import format_string @@ -38,8 +39,9 @@ def download_playlist_songs(playlist_id): folder_name = format_string(playlist_name) + ' - playlist' folder_path = os.path.join(config.DOWNLOAD_DIR, folder_name) for i, song in enumerate(songs): - print('{}: {}'.format(i + 1, song['name'])) - download_song_by_song(song, folder_path, False) + song_detail = get_song_info_by_id(song['id']) + print('{}: {}'.format(i + 1, song_detail['name'])) + download_song_by_song(song_detail, folder_path, False) def get_parse_id(song_id):