album playlist

This commit is contained in:
c-basalt 2024-04-23 02:33:08 -04:00
parent 59d350dd90
commit ef0f778785

View file

@ -327,25 +327,27 @@ def _real_extract(self, url):
}))) })))
class QQMusicAlbumIE(QQPlaylistBaseIE): class QQMusicAlbumIE(QQMusicBaseIE):
IE_NAME = 'qqmusic:album' IE_NAME = 'qqmusic:album'
IE_DESC = 'QQ音乐 - 专辑' IE_DESC = 'QQ音乐 - 专辑'
_VALID_URL = r'https?://y\.qq\.com/n/yqq/album/(?P<id>[0-9A-Za-z]+)\.html' _VALID_URL = r'https?://y\.qq\.com/n/ryqq/albumDetail/(?P<id>[0-9A-Za-z]+)'
_TESTS = [{ _TESTS = [{
'url': 'https://y.qq.com/n/yqq/album/000gXCTb2AhRR1.html', 'url': 'https://y.qq.com/n/ryqq/albumDetail/000gXCTb2AhRR1',
'info_dict': { 'info_dict': {
'id': '000gXCTb2AhRR1', 'id': '000gXCTb2AhRR1',
'title': '我们都是这样长大的', 'title': '我们都是这样长大的',
'description': 'md5:179c5dce203a5931970d306aa9607ea6', 'description': 'md5:179c5dce203a5931970d306aa9607ea6',
'thumbnail': r're:(^https?:|^)//.*\.jpg(?:$|[#?])',
}, },
'playlist_count': 4, 'playlist_count': 4,
}, { }, {
'url': 'https://y.qq.com/n/yqq/album/002Y5a3b3AlCu3.html', 'url': 'https://y.qq.com/n/ryqq/albumDetail/002Y5a3b3AlCu3',
'info_dict': { 'info_dict': {
'id': '002Y5a3b3AlCu3', 'id': '002Y5a3b3AlCu3',
'title': '그리고...', 'title': '그리고',
'description': 'md5:a48823755615508a95080e81b51ba729', 'description': 'md5:a48823755615508a95080e81b51ba729',
'thumbnail': r're:(^https?:|^)//.*\.jpg(?:$|[#?])',
}, },
'playlist_count': 8, 'playlist_count': 8,
}] }]
@ -353,21 +355,16 @@ class QQMusicAlbumIE(QQPlaylistBaseIE):
def _real_extract(self, url): def _real_extract(self, url):
mid = self._match_id(url) mid = self._match_id(url)
album = self._download_json( init_data = self.download_init_data(url, mid)
'http://i.y.qq.com/v8/fcg-bin/fcg_v8_album_info_cp.fcg?albummid=%s&format=json' % mid,
mid, 'Download album page')['data']
entries = [ entries = traverse_obj(init_data, ('songList', ..., {lambda x: self.url_result(
self.url_result( f'https://y.qq.com/n/ryqq/songDetail/{x["mid"]}', QQMusicIE, x['mid'], x.get('title'))}))
'https://y.qq.com/n/yqq/song/' + song['songmid'] + '.html', 'QQMusic', song['songmid']
) for song in album['list']
]
album_name = album.get('name')
album_detail = album.get('desc')
if album_detail is not None:
album_detail = album_detail.strip()
return self.playlist_result(entries, mid, album_name, album_detail) return self.playlist_result(entries, mid, **traverse_obj(init_data, ('detail', {
'title': ('albumName', {str}),
'description': ('desc', {str}),
'thumbnail': ('picurl', {url_or_none}),
})))
class QQMusicToplistIE(QQPlaylistBaseIE): class QQMusicToplistIE(QQPlaylistBaseIE):