From 506c5b5bc12f3b3597354cb31212b305227462c5 Mon Sep 17 00:00:00 2001 From: ehds Date: Sun, 29 Jul 2018 14:03:10 +0800 Subject: [PATCH] upadate kugou api --- src/you_get/extractors/kugou.py | 63 ++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 13 deletions(-) diff --git a/src/you_get/extractors/kugou.py b/src/you_get/extractors/kugou.py index 925bdf1c..a98daac6 100644 --- a/src/you_get/extractors/kugou.py +++ b/src/you_get/extractors/kugou.py @@ -20,32 +20,69 @@ def kugou_download(url, output_dir=".", merge=True, info_only=False, **kwargs): print_info(site_info, title, songtype, size) if not info_only: download_urls([url], title, ext, size, output_dir, merge=merge) + elif url.lower().find("hash")!=-1: + return kugou_download_by_hash(url,output_dir,merge,info_only) else: #for the www.kugou.com/ return kugou_download_playlist(url, output_dir=output_dir, merge=merge, info_only=info_only) # raise NotImplementedError(url) -def kugou_download_by_hash(title,hash_val,output_dir = '.', merge = True, info_only = False): + +def kugou_download_by_hash(url,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'] + #url_sample:http://www.kugou.com/song/#hash=93F7D2FC6E95424739448218B591AEAF&album_id=9019462 + hash_val = match1(url,'hash=(\w+)') + album_id = match1(url,'album_id=(\d+)') + html = get_html("http://www.kugou.com/yy/index.php?r=play/getdata&hash={}&album_id={}".format(hash_val,album_id)) + j =loads(html) + url = j['data']['play_url'] + title = j['data']['audio_name'] + # some songs cann't play because of copyright protection + if(url == ''): + return 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, merge=merge) def kugou_download_playlist(url, output_dir = '.', merge = True, info_only = False, **kwargs): - 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) + urls=[] + + #download music leaderboard + #sample: http://www.kugou.com/yy/html/rank.html + if url.lower().find('rank') !=-1: + html=get_html(url) + pattern = re.compile('