From 05242fb17ee33e14a6de13326fd9858263ec58c4 Mon Sep 17 00:00:00 2001 From: hafeoz Date: Mon, 24 Jun 2024 20:50:46 +0100 Subject: [PATCH 1/4] [ie/neteasemusic] use `url/v1` API for audio url extraction --- yt_dlp/extractor/neteasemusic.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/yt_dlp/extractor/neteasemusic.py b/yt_dlp/extractor/neteasemusic.py index dd50efe51..cc71c3df5 100644 --- a/yt_dlp/extractor/neteasemusic.py +++ b/yt_dlp/extractor/neteasemusic.py @@ -22,7 +22,7 @@ class NetEaseMusicBaseIE(InfoExtractor): - _FORMATS = ['bMusic', 'mMusic', 'hMusic'] + _LEVELS = ['standard', 'exhigh', 'lossless', 'hires', 'jyeffect', 'sky', 'jymaster'] _API_BASE = 'http://music.163.com/api/' _GEO_BYPASS = False @@ -66,27 +66,22 @@ def _download_eapi_json(self, path, video_id, query_body, headers={}, **kwargs): **headers, }, **kwargs) - def _call_player_api(self, song_id, bitrate): + def _call_player_api(self, song_id, level): return self._download_eapi_json( - '/song/enhance/player/url', song_id, {'ids': f'[{song_id}]', 'br': bitrate}, - note=f'Downloading song URL info: bitrate {bitrate}') + '/song/enhance/player/url/v1', song_id, {'ids': f'[{song_id}]', 'level': level, 'encodeType': 'flac'}, + note=f'Downloading song URL info: level {level}') def extract_formats(self, info): err = 0 formats = [] song_id = info['id'] - for song_format in self._FORMATS: - details = info.get(song_format) - if not details: - continue - bitrate = int_or_none(details.get('bitrate')) or 999000 - for song in traverse_obj(self._call_player_api(song_id, bitrate), ('data', lambda _, v: url_or_none(v['url']))): + for song_level in self._LEVELS: + for song in traverse_obj(self._call_player_api(song_id, song_level), ('data', lambda _, v: url_or_none(v['url']))): song_url = song['url'] if self._is_valid_url(song_url, info['id'], 'song'): formats.append({ 'url': song_url, - 'format_id': song_format, - 'asr': traverse_obj(details, ('sr', {int_or_none})), + 'format_id': song_level, **traverse_obj(song, { 'ext': ('type', {str}), 'abr': ('br', {self.kilo_or_none}), From 225b44afc060690d5e5c42c5208aca02d0d792e3 Mon Sep 17 00:00:00 2001 From: hafeoz Date: Tue, 25 Jun 2024 10:07:19 +0000 Subject: [PATCH 2/4] [ie/neteasemusic] return `none` for `vcodec` field Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com> --- yt_dlp/extractor/neteasemusic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/yt_dlp/extractor/neteasemusic.py b/yt_dlp/extractor/neteasemusic.py index cc71c3df5..5ea3b9008 100644 --- a/yt_dlp/extractor/neteasemusic.py +++ b/yt_dlp/extractor/neteasemusic.py @@ -82,6 +82,7 @@ def extract_formats(self, info): formats.append({ 'url': song_url, 'format_id': song_level, + 'vcodec': 'none', **traverse_obj(song, { 'ext': ('type', {str}), 'abr': ('br', {self.kilo_or_none}), From 429732f0fbf7771e2504a35927e8e669834464fd Mon Sep 17 00:00:00 2001 From: bashonly Date: Tue, 25 Jun 2024 11:39:38 -0500 Subject: [PATCH 3/4] update tests Authored by: bashonly --- yt_dlp/extractor/neteasemusic.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/neteasemusic.py b/yt_dlp/extractor/neteasemusic.py index 5ea3b9008..52aa4d1fe 100644 --- a/yt_dlp/extractor/neteasemusic.py +++ b/yt_dlp/extractor/neteasemusic.py @@ -142,8 +142,8 @@ class NetEaseMusicIE(NetEaseMusicBaseIE): 'average_rating': int, 'album_artist': '偶像练习生', }, + 'skip': 'Blocked outside Mainland China', }, { - 'note': 'No lyrics.', 'url': 'http://music.163.com/song?id=17241424', 'info_dict': { 'id': '17241424', @@ -157,10 +157,14 @@ class NetEaseMusicIE(NetEaseMusicBaseIE): 'album': 'Piano Solos Vol. 2', 'album_artist': 'Dustin O\'Halloran', 'average_rating': int, + 'description': '[00:05.00]纯音乐,请欣赏\n', + 'album_artists': ['Dustin O\'Halloran'], + 'creators': ['Dustin O\'Halloran'], + 'subtitles': {'lyrics': [{'ext': 'lrc'}]}, }, }, { 'url': 'https://y.music.163.com/m/song?app_version=8.8.45&id=95670&uct2=sKnvS4+0YStsWkqsPhFijw%3D%3D&dlt=0846', - 'md5': '95826c73ea50b1c288b22180ec9e754d', + 'md5': 'b896be78d8d34bd7bb665b26710913ff', 'info_dict': { 'id': '95670', 'ext': 'mp3', @@ -176,6 +180,8 @@ class NetEaseMusicIE(NetEaseMusicBaseIE): 'average_rating': int, 'album': '红色摇滚', 'album_artist': '侯牧人', + 'creators': ['马备'], + 'album_artists': ['侯牧人'], }, }, { 'url': 'http://music.163.com/#/song?id=32102397', From ed82d270d7a730943de5302b89de289180f14062 Mon Sep 17 00:00:00 2001 From: bashonly Date: Tue, 25 Jun 2024 11:56:10 -0500 Subject: [PATCH 4/4] update test Authored by: bashonly --- yt_dlp/extractor/neteasemusic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yt_dlp/extractor/neteasemusic.py b/yt_dlp/extractor/neteasemusic.py index 52aa4d1fe..db8ce65c7 100644 --- a/yt_dlp/extractor/neteasemusic.py +++ b/yt_dlp/extractor/neteasemusic.py @@ -142,7 +142,7 @@ class NetEaseMusicIE(NetEaseMusicBaseIE): 'average_rating': int, 'album_artist': '偶像练习生', }, - 'skip': 'Blocked outside Mainland China', + 'skip': 'No longer available', }, { 'url': 'http://music.163.com/song?id=17241424', 'info_dict': {