码迷,mamicode.com
首页 > 其他好文 > 详细

酷狗音乐下载

时间:2019-01-29 18:28:04      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:网站   head   数据   酷狗音乐   post   inf   ade   创建   表示   

酷狗音乐下载

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(请输入要搜索的歌曲:))

 

酷狗音乐下载

标签:网站   head   数据   酷狗音乐   post   inf   ade   创建   表示   

原文地址:https://www.cnblogs.com/chengoudan/p/10334025.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!