From fd4eefed39595850b864d3be9711224e4e8e9dd4 Mon Sep 17 00:00:00 2001 From: ping Date: Wed, 13 May 2015 01:14:02 +0800 Subject: [PATCH] [qqmusic] Fix extraction for global list --- youtube_dl/extractor/qqmusic.py | 34 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/youtube_dl/extractor/qqmusic.py b/youtube_dl/extractor/qqmusic.py index bca4a8f90a..3401dcaef1 100644 --- a/youtube_dl/extractor/qqmusic.py +++ b/youtube_dl/extractor/qqmusic.py @@ -188,6 +188,13 @@ class QQMusicToplistIE(QQPlaylistBaseIE): 'title': 'QQ音乐巅峰榜·欧美', }, 'playlist_count': 100, + }, { + 'url': 'http://y.qq.com/#type=toplist&p=global_5', + 'info_dict': { + 'id': 'global_5', + 'title': '韩国mnet排行榜', + }, + 'playlist_count': 50, }] @staticmethod @@ -203,22 +210,23 @@ class QQMusicToplistIE(QQPlaylistBaseIE): list_page = self._download_webpage( "http://y.qq.com/y/static/toplist/index/%s.html" % list_id, list_id, 'Download toplist page') + entries = [] + jsonp_url = "" if list_type == 'top': - list = self._download_json( - "http://y.qq.com/y/static/toplist/json/top/%s/1.js" % num_id, - list_id, note='Retrieve toplist json', errnote='Unable to get toplist json', - transform_source=self.strip_qq_jsonp) - - for song in list['l']: - s = song['s'] - song_mid = s.split("|")[20] - entries.append(self.url_result( - 'http://y.qq.com/#type=song&mid=' + song_mid, 'QQMusic', - song_mid)) - + jsonp_url = "http://y.qq.com/y/static/toplist/json/top/%s/1.js" % num_id elif list_type == 'global': - entries = self.get_entries_from_page(list_page) + jsonp_url = "http://y.qq.com/y/static/toplist/json/global/%s/1_1.js" % num_id + + list = self._download_json(jsonp_url, list_id, note='Retrieve toplist json', + errnote='Unable to get toplist json', transform_source=self.strip_qq_jsonp) + + for song in list['l']: + s = song['s'] + song_mid = s.split("|")[20] + entries.append(self.url_result( + 'http://y.qq.com/#type=song&mid=' + song_mid, 'QQMusic', + song_mid)) list_name = self._html_search_regex( r'

([^\']+)

', list_page, 'top list name',