diff --git a/src/you_get/extractor/kugou.py b/src/you_get/extractor/kugou.py index 5c5a115d..7aa845f9 100644 --- a/src/you_get/extractor/kugou.py +++ b/src/you_get/extractor/kugou.py @@ -5,7 +5,8 @@ __all__ = ['kugou_download'] from ..common import * from json import loads from base64 import b64decode - +import re +import hashlib def kugou_download(url, output_dir=".", merge=True, info_only=False): if url.lower().find("5sing")!=-1: @@ -21,8 +22,32 @@ def kugou_download(url, output_dir=".", merge=True, info_only=False): download_urls([url], title, ext, size, output_dir) else: #for the www.kugou.com/ - raise NotImplementedError(url) + return kugou_download_playlist(url) + # raise NotImplementedError(url) + +def kugou_download_by_hash(title,hash_val,output_dir = '.', merge = True, info_only = False): + #sample + #url_sample:http://www.kugou.com/yy/album/single/536957.html + #hash ->key md5(hash+kgcloud")->key decompile swf + #cmd 4 for mp3 cmd 3 for m4a + key=hashlib.new('md5',(hash_val+"kgcloud").encode("utf-8")).hexdigest() + html=get_html("http://trackercdn.kugou.com/i/?pid=6&key=%s&acceptMp3=1&cmd=4&hash=%s"%(key,hash_val)) + j=loads(html) + url=j['url'] + songtype, ext, size = url_info(url) + print_info(site_info, title, songtype, size) + if not info_only: + download_urls([url], title, ext, size, output_dir) + +def kugou_download_playlist(url, output_dir = '.', merge = True, info_only = False): + html=get_html(url) + pattern=re.compile('title="(.*?)".* data="(\w*)\|.*?"') + pairs=pattern.findall(html) + for title,hash_val in pairs: + kugou_download_by_hash(title,hash_val,output_dir,merge,info_only) + site_info = "kugou.com" download = kugou_download -download_playlist = playlist_not_supported("kugou") +# download_playlist = playlist_not_supported("kugou") +download_playlist=kugou_download_playlist