import jsonimport requestsimport timeimport osimport urllibheaders = { “cookie”: ‘RK=51FHFw4aE8; pgv_pvi=8430643200; ptcz=83cfc479ce75c5a1416df7d87136166109888f38587d9944738abca7ab77d17c; tvfe_boss_uuid=e4ba183f02ae980f; pgv_pvid=3169027098; pgv_pvid_new=2426636288_14882e87533; mobileUV=1_15f666e2b04_e8a50; pac_uid=1_1278077260; eas_sid=l1C5q306s9W2d845F9u7f1K1U6; ptui_loginuin=40370953; o_cookie=1278077260; luin=o1278077260; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221669eddcdc5156-0905303c6ff588-7d113749-1049088-1669eddcdc83f8%22%2C%22%24device_id%22%3A%221669eddcdc5156-0905303c6ff588-7d113749-1049088-1669eddcdc83f8%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%7D; lskey=00010000a5727043706a88a2aebf6044daf687035fcc0804760fd13cac0729275356f7aa88d5157b46210ea6; LW_sid=y1s5J425D4j7u9N1Q8Q0j2k383; LW_uid=p1q5u4d584A7f971l820z2k3M9; ts_uid=4705118039; yq_index=0; uin=o1278077260; skey=@mXN9mj3as; p_uin=o1278077260; pt4_token=cVwioR9KifEllUyD2CPEXz692iNhDH8JE-YwH5TlRY_; p_skey=BE7HSxnTeFIPwrO6sJYXyA1xKGxT072f5YAo919LSY_; yqq_stat=0; pgv_si=s3828307968; pgv_info=ssid=s3773836208; ts_last=y.qq.com/n/yqq/toplist/4.html; ts_refer=link.zhihu.com/%3Ftarget%3Dhttps%253A//y.qq.com/n/yqq/toplist/4.html%2523stat%253Dy_new.toplist.menu.4’, “user-agent”: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3493.3 Safari/537.36’ }def getHtml(start_url): try: r = requests.get(start_url, headers=headers) r.encoding = r.apparent_encoding text = json.loads(r.text) return text except: return ““def getSongMid(html): songmid = [] for tid in html[‘songlist’]: songmid.append([tid[‘data’][‘songmid’], tid[‘data’][‘songname’]]) return songmiddef getSong(html): start_index = 0 while (True): start_num = start_index * 30 num = 30 start_index += 1 update_key = html[‘update_time’] temp_key = update_key.split(”") if (len(temp_key) == 3): if len(temp_key[1]) == 1: update_key = temp_key[0] + '0’ + temp_key[1] + temp_key[2] elif len(temp_key[2]) == 1: update_key = temp_key[0] + temp_key[1] + '0’ + temp_key[2] page_url = “https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?tpl=3&page=detail&date={0}&topid=4&type=top&song_begin={1}&song_num=30&g_tk=1154346586&loginUin=1278077260&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0”.format( update_key, start_num) json_text = getHtml(page_url) songinfo = getSongMid(json_text) if len(songinfo) == 0: break for sid in songinfo: vkey = getVkey(sid[0]) saveMusic(sid[0],vkey,sid[1]) time.sleep(1)def getVkey(songmid): vkey_url = “https://u.y.qq.com/cgi-bin/musicu.fcg?-=getplaysongvkey05137740976859173&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0&data=%7B%22req%22%3A%7B%22module%22%3A%22CDN.SrfCdnDispatchServer%22%2C%22method%22%3A%22GetCdnDispatch%22%2C%22param%22%3A%7B%22guid%22%3A%22953482270%22%2C%22calltype%22%3A0%2C%22userip%22%3A%22%22%7D%7D%2C%22req_0%22%3A%7B%22module%22%3A%22vkey.GetVkeyServer%22%2C%22method%22%3A%22CgiGetVkey%22%2C%22param%22%3A%7B%22guid%22%3A%22953482270%22%2C%22songmid%22%3A%5B%22{0}%22%5D%2C%22songtype%22%3A%5B0%5D%2C%22uin%22%3A%220%22%2C%22loginflag%22%3A1%2C%22platform%22%3A%2220%22%7D%7D%2C%22comm%22%3A%7B%22uin%22%3A0%2C%22format%22%3A%22json%22%2C%22ct%22%3A24%2C%22cv%22%3A0%7D%7D”.format(songmid) res = requests.get(url=vkey_url) time.sleep(0.5) res02 = json.loads(res.text) vkey = res02[“req_0”][“data”][“midurlinfo”][0][“purl”] return vkeydef saveMusic(songmid, vkey, name): headers[‘Host’] = ‘dl.stream.qqmusic.qq.com’ url = “http://dl.stream.qqmusic.qq.com/” + vkey res = requests.get(url, headers=headers, stream=True) filename = ‘song/{0}.m4a’.format(name.replace("?", “”).replace("/", "").replace("\", "").replace(""", “”)) print("***** 正在下载 *****") print(url) print("*****歌曲:{}".format(name.replace("?", “”).replace("/", "”).replace("\", “").replace(""", “”))) with open(filename, ‘wb’) as f: f.write(res.raw.read()) if(urllib.request.urlopen(url).getheader(‘Content-Length’) > 0): print(“成功下载歌曲:{}”.format(name.replace("?", “”).replace("/", "”).replace("\", “_”).replace(""", “”))) else: print(“下载失败”) os.remove(filename)if name == ‘main’: start_url = “https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?tpl=3&page=detail&date=2019-01-08&topid=4&type=top&song_begin=0&song_num=30&g_tk=1154346586&loginUin=1278077260&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0” text = getHtml(start_url) getSong(text

2020-04-14相关推荐

  1. 【图表】java 24年发展历史及长期支持jdk版本(up to 2020.04)

    Oracle官网所有jdk版本的发行说明:参见 jdk 所有发行版本时间点(up to 2020.04) jdk 所有发行版本时间点(up to 2020.04) 年份 java版本 1991.02 ...

  2. 2020.04.08【NOIP普及组】模拟赛C组24 总结

    2020.04.08 2020.04.08 2020.04.08[ N O I P NOIP NOIP普及组]模拟赛 C C C组 24 24 24 总结 概述: 这次比赛我 A K AK AK了,拿 ...

  3. YL工作记录 (不断更新) -- 2020.04

    -------------------- 2020.04.07-2020.04.17 -------------------- 1. @XStreamAlias理解和使用 - XStream 是个很强 ...

  4. 心音数据库_小V云端数据库 | 2020.9.14—2020.9.18

    桂花的芬芳 在雨后空气中弥散开来 似为湿润的情绪 赠予了一丝甜蜜 小V云端数据库 2020.9.14-2020.9.18 资讯情报关键词 健康.示范.安全 V宝体检,助力成长 2020年9月14日上午 ...

  5. 2008.04.14狼图腾

    说来也搞笑,看这本书中间断断续续的,一下子忙这一下子忙那,前后差不多都5个月. 书中主要是讲一群在草原上的知青养一只小狼的故事,其中介绍了很多狼的相关知识.故事的最后结局到是让我很想像不到,完全在我的 ...

  6. linux notepad 安装教程,Ubuntu 15.04/14.10/14.04下安装和卸载Notepad++(notepadqq)

    Ubuntu下的Notepad++也就是notepadqq,比较适合刚从Windows平台转移到Linux平台的用户使用,如果你一直在Windows下使用的是nodepad++,那么推荐你在Linux ...

  7. 广东省计算机行业发展程度,广东省统计局-2020年1-4月广东规模以上工业生产运行简况...

    2020年1-4月,全省规模以上工业企业累计实现增加值8658.97亿元,同比下降10.1%,降幅比一季度收窄5.0个百分点:其中,4月当月增长3.6%,增幅比3月回升8.3个百分点,实现由负转正. ...

  8. 安装ubuntu出现BUG soft lockup的解决方法(16.04 14.04)

    安装ubuntu出现BUG soft lockup的解决方法(16.04 14.04) 参考文章: (1)安装ubuntu出现BUG soft lockup的解决方法(16.04 14.04) (2) ...

  9. 宏碁(Acer)蜂鸟Fun 2020新款 14英寸轻薄商务笔记本使用真实评测

    宏碁(Acer)蜂鸟Fun 2020新款 14英寸轻薄商务笔记本使用真实评测 本人因为工作需要,近期想购置一台轻薄,性能过的去的笔记本,预算大概在4000元左右.去JD看了一圈,大把的AMD本,虽说近 ...

  10. 2020.1.14课程摘要(逻辑教育-王劲胜)

    2020.1.14课程摘要 13期基础班-王劲胜 计算机要点知识 13期基础班-王劲胜 计算机要点知识 1.计算机基本概念 (1)计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机 ...

最新文章

  1. 数据结构_栈和队列的区别
  2. 友盟手游开放日全面来袭!奏响手游运营“四部曲”
  3. Centos7 下安装配置tomcat7
  4. 在阿里,我们如何管理代码分支?
  5. vue2.x 在引用插件的时候,npm run dev跑正常 ,npm run build 报错vue-cli Unexpected token: punc (() [...
  6. 2012三年大专计算机试题医学,计算机原理2012年4月真题(02384)
  7. Makefile选项CFLAGS,LDFLAGS,LIBS
  8. Nike Air Jordan Sneakers
  9. Android TensorFlow Lite 深度学习识别手写数字mnist demo
  10. infor wms 项目启动_派诺科技数字工厂MES/WMS系统项目正式启动
  11. 三星关闭在华最后一家电脑厂 约850名员工受影响
  12. uva10668二分解方程
  13. 电脑模拟收银机_模拟超市收银系统
  14. 中国麻将:世界上最早的区块链项目
  15. 如何将三维模型移动到真实位置
  16. 【考研数学高数部分】泰勒展开式
  17. 快速给PDF批量添加目录
  18. Java身份证、手机号码用*隐藏中间几位
  19. 基于CNN实现垃圾分类案例
  20. Qt 股票资金流向评估

热门文章

  1. Day001:Excel数据分析
  2. PIC16F630使用PICkit程序下载使用方法
  3. MemoryAnalyzer(MAT)内存分析工具和Android Profiler的使用
  4. Hi3516内核编译
  5. 空间里相片批量导入u盘_多台电脑同步文件还在用 U 盘牵线?GoodSync 帮你一键搞定...
  6. 影视列表(20211117更新)
  7. C++ signed 与 unsigned
  8. 社交电商的趋势布局规划?
  9. 创业思维 - MikeCRM的故事
  10. 【企业资源计划ERP】益达医院ERP实施