diff options
| author | ping <lipng.ong@gmail.com> | 2015-06-18 13:59:37 +0800 | 
|---|---|---|
| committer | ping <lipng.ong@gmail.com> | 2015-06-18 13:59:37 +0800 | 
| commit | 0d0d5d37174ed611dd823c5be025c49e73d83d1d (patch) | |
| tree | 5a91ebc0a0b53171bd4b7adee91f63d587d40b15 | |
| parent | a69e8bfdd9e94537eb72a358c1b62dbea8a59a04 (diff) | |
[qqmusic] Add support for playlists
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 1 | ||||
| -rw-r--r-- | youtube_dl/extractor/qqmusic.py | 34 | 
2 files changed, 35 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 6fdaf90b2..d03577cdf 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -427,6 +427,7 @@ from .qqmusic import (      QQMusicSingerIE,      QQMusicAlbumIE,      QQMusicToplistIE, +    QQMusicPlaylistIE,  )  from .quickvid import QuickVidIE  from .r7 import R7IE diff --git a/youtube_dl/extractor/qqmusic.py b/youtube_dl/extractor/qqmusic.py index bafa81c21..f9aafcd28 100644 --- a/youtube_dl/extractor/qqmusic.py +++ b/youtube_dl/extractor/qqmusic.py @@ -9,6 +9,7 @@ from .common import InfoExtractor  from ..utils import (      strip_jsonp,      unescapeHTML, +    clean_html,  )  from ..compat import compat_urllib_request @@ -243,3 +244,36 @@ class QQMusicToplistIE(QQPlaylistBaseIE):          list_name = topinfo.get('ListName')          list_description = topinfo.get('info')          return self.playlist_result(entries, list_id, list_name, list_description) + + +class QQMusicPlaylistIE(QQPlaylistBaseIE): +    IE_NAME = 'qqmusic:playlist' +    _VALID_URL = r'http://y\.qq\.com/#type=taoge&id=(?P<id>[0-9]+)' + +    _TEST = { +        'url': 'http://y.qq.com/#type=taoge&id=3462654915', +        'info_dict': { +            'id': '3462654915', +            'title': '韩国5月新歌精选下旬', +            'description': 'md5:d2c9d758a96b9888cf4fe82f603121d4', +        }, +        'playlist_count': 40, +    } + +    def _real_extract(self, url): +        list_id = self._match_id(url) + +        list_json = self._download_json( +            'http://i.y.qq.com/qzone-music/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&disstid=%s' +            % list_id, list_id, 'Download list page', +            transform_source=strip_jsonp)['cdlist'][0] + +        entries = [ +            self.url_result( +                'http://y.qq.com/#type=song&mid=' + song['songmid'], 'QQMusic', song['songmid'] +            ) for song in list_json['songlist'] +        ] + +        list_name = list_json['dissname'] +        list_description = clean_html(unescapeHTML(list_json.get('desc'))) +        return self.playlist_result(entries, list_id, list_name, list_description) | 
