"""
分析需求
1,确定目标网址
2,获取目标网址的所有数据
3,筛选我们想要的数据
4,下载歌曲保存
"""
import os import requests # 模拟浏览器浏览网页 第三方库 工具包 singer = input("请输入歌手姓名:")
num = input("请输入你想下载的页数:")
# 目标网址
url = f"https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={singer}&pn={num}&rn=30&httpsStatus=1&reqId=0e333970-f90a-11ec-a02d-9b5117697bc1"
print(url)
# 伪装一下 请求头
headers = {
# 代理信息 模拟浏览器
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
# 令牌 钥匙
"csrf": "0G1J21RT96FN",
# 打开哪个门
"Cookie": "kw_token=0G1J21RT96FN",
# 域名
"Host": "www.kuwo.cn",
# 防盗链 从哪里来的
"Referer": f"https://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6"
}
# 模拟浏览器发送请求
response = requests.get(url, headers=headers).json()
print(response)
data = response["data"]["list"] # print(data)
for i in data:
rid = i["rid"]
name = i["name"]
print(rid, name)
# 新目标网址
# new_url = f'https://www.kuwo.cn/api/v1/www/music/playUrl?mid={rid}&type=music&httpsStatus=1&reqId=5085a771-f902-11ec-8529-cdb133e96ad8'
new_url = f'https://apis.jxcxin.cn/api/kuwo?id={rid}&type=json'
# new_url = "https://kuwo.cn/url?format=mp3&rid=" + str(rid) + "&response=url&type=convert_url3&br=128kmp3&from=web&t=1604320123221&httpsStatus=1&reqId=f202c851-1d06-11eb-91ba-83cb90e3e81e"
# #请求新网址
res = requests.get(new_url).json()
# print(res)
# print(res["url"])
# 下载歌曲 最后一次请求
r = requests.get(res["url"]).content
# 路径
path = os.path.join(os.path.expanduser("~"), 'Desktop') + os.sep + name + ".mp3"
# 保存 文件操作 以二进制写入
with open(path, "wb") as f:
f.write(r)
print("正在下载", name)

获取VIP歌曲的更多相关文章

  1. songtaste网站歌曲真实URL获取

    个人挺喜欢songtaste网站的歌曲的,下载方法也层出不穷,可是作为程序员如果不知其中原理的方法真是羞愧.首先简单点的方法当然有google插件这样的嗅探器了,不过这种工具的原理还不是很了解.今天先 ...

  2. 教你PC端网易云音乐自定义代理,VIP免费听歌!

    今天分享一份福利吧,使用网易云音乐自定义代理实现免费听和下载VIP.极高音质.付费的歌曲,这里主要针对PC端电脑版的,需要自己写脚本运行. 01 安装node.js Node.js是一个让 JavaS ...

  3. Jsonp调用网易云音乐API搜索播放歌曲

    效果如下图: 基本就是正常的文件播放,暂停,停止,设置循环,随机播放,加速,减速,上一曲,下一曲,再多个选择本地文件加入到播放列表的功能.然后想着给加个能搜索网络歌曲并且播放的功能,今天研究了一下,成 ...

  4. Android多媒体分析-通过MediaStore获取Audio信息

    public void getAlldata() { ContentResolver cr = getApplication().getContentResolver(); if (cr == nul ...

  5. 游戏中VIP会员模块的简单实现

    哈哈  今天周末有时间,再整理一篇博文上来,虽然已经不做游戏老长时间了,但还是要把以前做过的东西总结一下,借此可以回顾以前的东西,也可以分享给大家. 今天说一下游戏中VIP会员模块的实现思路.每款游戏 ...

  6. .NET小项目之MyKtv(歌曲播放功能实现)

    在KTV点歌系统中我们根据需求获取到歌手的歌曲信息,点击歌手的歌曲将其添加到一点歌曲列表中看似简单的一个操作其实涉及很多内容,这也是写这篇Blog的目的—分析歌曲播放的原理. 原理分析 我们应该清楚, ...

  7. python爬取网易云周杰伦所有专辑,歌曲,评论,并完成可视化分析

    ---恢复内容开始--- 去年在网络上有一篇文章特别有名:我分析42万字的歌词,为搞清楚民谣歌手们在唱些什么.这篇文章的作者是我大学的室友,随后网络上出现了各种以为爬取了XXX,发现了XXX为名的文章 ...

  8. Redis高可用架构—Keepalive+VIP

    最近整理一下Redis高可用架构的文档,也准备分享出来,虽然这些架构也不是很复杂.Redis的高可用方案目前主要尝试过5种方式,其中2种方式已经在线上使用. 1)Redis Master-Slave ...

  9. 【音乐App】—— Vue-music 项目学习笔记:歌曲列表组件开发

    前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 当前歌曲播放列表 添加歌曲 ...

  10. JS高级——面向对象方式解决歌曲管理问题

    需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原 ...

随机推荐

  1. 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    @ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...

  2. 洛谷P1908 逆序对 (树状数组+离散化)

    模板题,树状数组加上离散化求逆序对. 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 ...

  3. 结构体struct知识

    2022-10-12 08:52:03 //    结构体知识#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<m ...

  4. 2.MongoDB系列之创建更新删除文档

    1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...

  5. 应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库

    JSP中使用数据库 1.JDBC介绍 java数据库连接(java Database Connectivity ,JDBC)是一种用于执行SQL语句的JavaAPI ,由一组使用java编程语言编写的 ...

  6. C语言------数据类型与输入输出

    仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2 .实训目的及要求 3 .源代码及运行截图 4 .小结 1 .实训名称 实训2: ...

  7. JUC(4)Callable和常用的辅助类

    1.Callable 1.可以有返回值 2.可以抛出异常 3.方法不同.run()/call() future Task 细节: 1.有缓存 2.结果可能需要等待,会阻塞 2.常用的辅助类 2.1 C ...

  8. 4.Future对象

    asyncio.Future对象 Future是Task类的基类 Task对象内部await结果的处理是基于Future对象来的 async def main(): # 获取当前事件循环 loop = ...

  9. CodeTON Round 3 (Div. 1 + Div. 2, Rated, Prizes!) A-D

    比赛链接 A 题解 知识点:贪心. 注意到 \(a[1] \neq 1\) , \(1\) 永远不可能换到前面:\(a[1] = 1\) 可以交换后面任意元素. 时间复杂度 \(O(n)\) 空间复杂 ...

  10. 【笔记】入门DP

    复习一下近期练习的入门 \(DP\) .巨佬勿喷.\(qwq\) 重新写一遍练手,加深理解. 代码已经处理,虽然很明显,但请勿未理解就贺 \(qwq\) 0X00 P1057 [NOIP2008 普及 ...