转发一个关于下载qq无损音乐的博客
import requests
import json
headers = {
'Host': 'c.y.qq.com',
'Referer': 'http://c.y.qq.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 '
'Safari/537.36 '
}
def douqq_post(mid):
"""
返回歌曲下载url
:param mid:歌曲mid
:return: 字典
"""
post_url = 'http://www.douqq.com/qqmusic/qqapi.php'
data = {'mid': mid}
res = requests.post(post_url, data=data)
get_json = json.loads(res.text)
return eval(get_json)
def download_file(src, file_path):
"""
歌曲下载
:param src: 下载链接
:param file_path: 存储路径
:return: 文件路径
"""
r = requests.get(src, stream=True)
f = open(file_path, "wb")
for chunk in r.iter_content(chunk_size=512):
if chunk:
f.write(chunk)
return file_path
def choice_download(dic):
print('1. m4a视频')
print('2. mp3普通品质')
print('3. mp3高品质')
print('4. ape高品无损')
print('5. flac无损音频')
select = int(input("Please input your choice:"))
src = ''
postfix = ''
if select == 1:
src = dic['m4a']
postfix = '.m4a'
if select == 2:
src = dic['mp3_l']
postfix = '.mp3'
if select == 3:
src = dic['mp3_h']
postfix = '.mp3'
if select == 4:
src = dic['ape']
postfix = '.ape'
if select == 5:
src = dic['flac']
postfix = '.flac'
return postfix, src.replace('\/\/', '//').replace('\/', '/')
def find_song(word):
"""
查找歌曲
:param word: 歌曲名
:return: 返回歌曲mid
"""
get_url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n' \
'=20&w=' + word
res1 = requests.get(get_url, headers=headers)
get_json = json.loads(res1.text.strip('callback()[]'))
jsons = get_json['data']['song']['list']
songmid = []
media_mid = []
song_singer = []
i = 1
for song in jsons:
# print(i, ':' + song['songname'], '---', song['singer'][0]['name'], song['songmid'], song['media_mid'])
print(i, ':' + song['songname'], '---', song['singer'][0]['name'])
songmid.append(song['songmid'])
media_mid.append(song['media_mid'])
song_singer.append(song['singer'][0]['name'])
i = i + 1
select = int(input("Please input your choice:")) - 1
return songmid[select], song_singer[select]
if __name__ == '__main__':
# songname = '叹云兮'
songname = input("Please input the music name:")
song_mid, singer = find_song(songname)
dic = douqq_post(song_mid)
# {
# "mid":"004FjJo32TISsY",
# "m4a":"http:\/\/dl.stream.qqmusic.qq.com\/C400004FjJo32TISsY.m4a?guid=2095717240&vkey=0B599CA74745F8A27A33A1FED2C7F6925FFFE8ED040569FB3540EB011FE9C5A3D7F36EAE4BDBD450F25076A23EBAF95A5ECB54B22C5E8F10&uin=0&fromtag=38",
# "mp3_l":"http:\/\/dl.stream.qqmusic.qq.com\/M500004FjJo32TISsY.mp3?guid=2095717240&vkey=0B599CA74745F8A27A33A1FED2C7F6925FFFE8ED040569FB3540EB011FE9C5A3D7F36EAE4BDBD450F25076A23EBAF95A5ECB54B22C5E8F10&uin=0&fromtag=53",
# "mp3_h":"http:\/\/dl.stream.qqmusic.qq.com\/M800004FjJo32TISsY.mp3?guid=2095717240&vkey=0B599CA74745F8A27A33A1FED2C7F6925FFFE8ED040569FB3540EB011FE9C5A3D7F36EAE4BDBD450F25076A23EBAF95A5ECB54B22C5E8F10&uin=0&fromtag=53",
# "ape":"http:\/\/dl.stream.qqmusic.qq.com\/A000004FjJo32TISsY.ape?guid=2095717240&vkey=0B599CA74745F8A27A33A1FED2C7F6925FFFE8ED040569FB3540EB011FE9C5A3D7F36EAE4BDBD450F25076A23EBAF95A5ECB54B22C5E8F10&uin=0&fromtag=53",
# "flac":"http:\/\/dl.stream.qqmusic.qq.com\/F000004FjJo32TISsY.flac?guid=2095717240&vkey=0B599CA74745F8A27A33A1FED2C7F6925FFFE8ED040569FB3540EB011FE9C5A3D7F36EAE4BDBD450F25076A23EBAF95A5ECB54B22C5E8F10&uin=0&fromtag=53",
# "pic":"https:\/\/y.gtimg.cn\/music\/photo_new\/T002R300x300M000003NZyTh4eMMsp.jpg?max_age=2592000"
# }
# print('mid:'+dic['mid'])
postfix, url = choice_download(dic)
save_path = "G:\\qq音乐\\"
download_file(url, save_path + songname + ' - ' + singer + postfix)
print('Download Successful')


直接考copy就能成功下载了

https://www.52pojie.cn/thread-767941-1-1.html(转发网址)
转发一个关于下载qq无损音乐的博客的更多相关文章
- [有料组每日学习分享计划--00087]32行代码帮你导出IOS酷我音乐下载的无损音乐
需求与研究: 1.IOS的酷我音乐软件,还是不错滴,可以直接下载APE或是320K的MP3音乐,但是我发现PC上的酷我反而没这个功能,而且其他的音乐软件一般只能下载中低品质的音乐.所以能够从IOS中找 ...
- 如何实现一个 markdown 图片粘贴上传的博客后台系统
如何实现一个 markdown 图片粘贴上传的博客后台系统 js 实现 drag & drop / copy & paste image uploader MongoDB 设计文档对象 ...
- 【个人博客 hexo】一个小时就搭好属于自己的博客
对于经常需要发博客的小伙伴来说,拥有一个属于自己的博客网站,听起来是不是很酷. 今天我就来告诉大家,怎么搭建一个属于自己的博客网站,我们需要的就是使用hexo+github来搭建我们自己博客系统. 你 ...
- 发起一个开源项目:基于 .NET 的博客引擎 fluss
今天我们发起一个开源项目,它的名字叫 fluss,fluss 是 river 的德语. 百川归海,每一个博客就如一条河流,输入的是文字,流出的是知识,汇入的是知识的汪洋大海. 川流不息,fluss 是 ...
- iOS中 流媒体播放和下载 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播 ...
- 一个关于AM335X比较全面的笔记博客
http://www.eefocus.com/marianna/blog/cate_18142_0.html
- 一个很有参考意义的unity博客
http://blog.csdn.net/lyh916/article/details/45133101
- 一个完全关于android编程的技术博客网站
https://www.oschina.net/android/96/file-process
- React与Koa一起打造一个仿稀土掘金全栈个人博客(技术篇)
本篇文章将分为前台角度与后台角度来分析我是怎么开发的.前台角度主要资源 react.js ant Design for-editor axios craco-less immutable react- ...
随机推荐
- Centos7搭建redis,同一服务器启动两个端口的redis
1.安装redis [1]下载安装包 #准备安装文件夹 mkdir /usr/local/soft/redis #进入文件夹 cd /usr/local/soft/redis #下载安装包 wget ...
- 基于HttpClient的新版正方教务系统模拟登录及信息获取API
简介 通过HttpClient获取网页数据源,通过Jsoup解析数据.先模拟登录,再获取信息.模拟浏览器正常操作,封装请求头信息获取SESSIONID.模拟登录成功后切勿断开会话,依赖登录请求得到的C ...
- Android图表库XCL-Charts
首先,这个是国人开发的,支持下必须顶!github项目地址:点击打开,由于项目的基本功能已经实现,所以项目作者也说以后基本不会在有更新了. 项目简介: Android图表库(XCL-Charts is ...
- php 出现空格,换行原因
1.空格:转换成utf-8无bom格式 2.空格:<?php ?>标签结尾有中文,英文空格 3.换行,一个文件中有多个<?php ?>标签,标签间隔中有换行符合
- C#对话框-打开和保存对话框(转)
//打开文件 OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.In ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:6.技术简介之Protobuf
欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 protocolbuffer(以下简称Protobuf)是google 的一种数据交换的格式,它独立于语言,独立于平 ...
- jquery mmgrid使用
参考 http://miemiedev.github.io/mmGrid/examples/index.html
- 一、基于Qt的图像矩形区域改色
Qt环境下图像的打开和涂色 一.设计目标 能够在 Qt QtCreator 环境下打开常用图像格式文件,诸如 bmp.jpg.png 图像等,然后将他们转化为 Qt 中的 QImage 类,并进行矩形 ...
- 用log4net快速构建asp.net 异常日志
log4net是一个非常完善的日志组件. 有着强大的可配置性. 有助于提高开发效率 .log4net是apache组织开发的日志组件, 同其姐妹log4j一样, 是一个开源项目. 可以以插件的形式应用 ...
- graylog插件的安装
什么是插件和插件的作用我就不说了,大家应该都知道了. 安装方法是打开下面选择项 进去后出现如下界面 选择事先下载好的插件后,点击上传.这里以nginx日志插件为例 之后查看效果,发现对应的过滤 ...