ITPub博客

首页 > 数据库 > 数据库开发技术 > Python获取指定歌手音乐

Python获取指定歌手音乐

原创 数据库开发技术 作者:数据库干货铺 时间:2023-02-13 21:48:35 0 删除 编辑
点击上方蓝字关注我

本文使用python批量获取指定歌手的音乐,并下载到本地。

1. 分析网页

登录酷狗音乐,输入想搜索的歌手的音乐(例如本文的林俊杰),页面结果如下


1.1 分析对应的url

可见,获取歌曲列表的url

list_murl='https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime=1669552869004&mid=6fb3e7f78cfb475ec8353739280ca9e0&uuid=6fb3e7f78cfb475ec8353739280ca9e0&dfid=4XSsT32VYg1y0xqt0R3rCVdv&keyword=林俊杰&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=0&iscorrection=1&privilege_filter=0&filter=10&token=&appid=1014&signature=f09af4c2d8fd21a095c14300772703ce'

对应的歌曲数据列表

1.2 选择对应歌曲

选择一首歌曲(例如《背对背拥抱》),找到对应的歌曲的url

其中hash值即之前list中的值,由此可将其作为变量传入

for i, s in enumerate(song_list):    print(f'{i+1} . {s.get("SongName")}---{s.get("FileHash")}--{s.get("AlbumID")}')    info_url = f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={s.get("FileHash")}&album_id={s.get("AlbumID")}'    # print(info_url)


2. 完整案例代码

2.1 完整案例代码如下

import requestsimport jsonheaders = {    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',    'Cookie':'kg_mid=6fb3e7f78cfb475ec8353739280ca9e0; kg_dfid=4XSsT32VYg1y0xqt0R3rCVdv; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1669429609,1669430050,1669474232; kg_mid_temp=6fb3e7f78cfb475ec8353739280ca9e0; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1669480245'}

list_murl='https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime=1669552869004&mid=6fb3e7f78cfb475ec8353739280ca9e0&uuid=6fb3e7f78cfb475ec8353739280ca9e0&dfid=4XSsT32VYg1y0xqt0R3rCVdv&keyword=林俊杰&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=0&iscorrection=1&privilege_filter=0&filter=10&token=&appid=1014&signature=f09af4c2d8fd21a095c14300772703ce'm_res = requests.get(list_murl, headers=headers)
#print(m_res.text)
song_list = json.loads(m_res.text[12:-2])['data']['lists']print(song_list)
for i, s in enumerate(song_list): print(f'{i+1} . {s.get("SongName")}---{s.get("FileHash")}--{s.get("AlbumID")}') info_url = f'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={s.get("FileHash")}&album_id={s.get("AlbumID")}' # print(info_url) f_name = f'{i+1}. {s.get("SongName")}.mp3' m_res2 = requests.get(info_url, headers=headers) print(f'{i+1} .{m_res2.json()["data"]["play_url"]}') m_url = m_res2.json()['data']['play_url'] # print(m_url) if m_url != '': m_res3 = requests.get(m_url, headers=headers) with open(f_name, 'wb') as f: f.write(m_res3.content)
2.2  运行结果
运行过程中会将对应歌曲的url打印出来

PS:以上是参考尚学堂项目案例学习编写,仅供学习使用,严禁用于商业用途或破坏性用途。

祝愿大家听歌无忧~~~


往期精彩回顾

1.  MySQL高可用之MHA集群部署

2.  mysql8.0新增用户及加密规则修改的那些事

3.  比hive快10倍的大数据查询利器-- presto

4.  监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

5.  PostgreSQL主从复制--物理复制

6.  MySQL传统点位复制在线转为GTID模式复制

7.  MySQL敏感数据加密及解密

8.  MySQL数据备份及还原(一)

9.  MySQL数据备份及还原(二)

扫码关注     

原文作者:数据库干货铺;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-18

  • 博文量
    273
  • 访问量
    66456