酷狗音乐下载

酷狗音乐下载

import requests,re,json
#class 代表创建类
class Kugou:#类的第一个字母尽量大写,易于区分

    def __init__(self):
        #设置函数本身私有成员
        #网址可以拼接,也可以用format函数(格式化:把代码中{}替换{}可以写01234排序,也可以不写)

        #协议头header
        #ua---浏览器 ,很多网页需要加
        #Referer 来路,来自于哪访问此网站,有时候用到
        #Host 忘了怎么表达,不算常用
        #Content - Type  一般post需要用这个,常用
        #cookies    你懂的,一般必用
        self.header = {
            "user-agent" : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'
        }
        #搜索接口
        self.url = 'http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword={0}&page={1}&pagesize={2}'
        #下载试听接口
        self.play_url = 'http://www.kugou.com/yy/index.php?r=play/getdata&hash={}'
        #做个字典
        self.song_info = {
            '歌名': None,
            'play_url': None
        }

#声明函数,word就是{0},shu后面加了=‘20’表示默认搜索20个
    def getlist(self,word,page,shu='20'):
       # url = 'http://mobilecdn.kugou.com/api/v3/search/song?format=json&keyword='+word+'&page='+page+'&pagesize=20'
       #requests模块请求返回文本
        req= requests.get(self.url.format(word,page,shu), headers=self.header).text
        #print(req)
       #json解析一下
        jiexi = json.loads(req)
       #for循环取出名字与hash
        for x in jiexi['data']['info']:
            filename = x['filename']
            hash = x['hash']
            #用play——url + hash构建新的url,访问返回json数据
            r=requests.get(self.play_url.format(hash)).text
            #解析,取出播放和下载的链接
            #因为是在循环内,所以会取出多个
            play_url=json.loads(r)['data']['play_url']
            #data = {x['filename']:x['hash']}
            #print(data)

            #做一个新的字典
            new_info = {'歌名':filename,'play_url':play_url}
            #更新字典
            self.song_info.update(new_info)

            #yield self.song_info
            #打印新字典
            print(self.song_info)

        #req = requests.get(self.play_url.format(),headers=self.header).text

#入口
if __name__ == '__main__':
    #a=Kugou()  属于实例化类,如果用到类的话,貌似是必须要做实例化,如果不调用类好像不用也行,不过十分推荐做实例化
    #self表示的是类本身,必须要学会这个,感觉超级好用
    a = Kugou()
    #然后就是调用类里面的getlist函数了,推荐加上参数名字,这样乱序也不怕,shu因为后面加了值,所以代表可空,空就是默认20个
    a.getlist(page='1', word=input('请输入要搜索的歌曲:'))

 

posted @ 2019-01-29 14:42  ChenGouDa  阅读(235)  评论(0编辑  收藏  举报