【实例简介】

【实例截图】

【核心代码】

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# [url=home.php?mod=space&uid=238618]@Time[/url] : 2018/7/20 14:37

# [url=home.php?mod=space&uid=686208]@AuThor[/url] : Bnightning

# [url=home.php?mod=space&uid=406162]@site[/url] : https://www.bnightning.cn

# [url=home.php?mod=space&uid=267492]@file[/url] : douqq.py

# @Software: PyCharm

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 = "D:\\Music\\"

download_file(url, save_path songname ' - ' singer postfix)

print('Download Successful')

python音乐实例详解_python下载无损音乐示例源码(qq音乐)相关推荐

  1. python代码覆盖率测试_unittest+coverage单元测试代码覆盖操作实例详解_python

    这篇文章主要为大家详细介绍了unittest+coverage单元测试代码覆盖操作的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 基于上一篇文章,这篇文章是关于使用coverage来实现代码 ...

  2. vue 源码详解(零):Vue 源码流程图

    vue 源码详解(零):Vue 源码流程图 最近在研究 Vue 的源码, 整理博客, 结果想到的.看到的内容实在是太多了, 不知道从何写起, 故整理了一个大致的流程图,根据这个顺序进行一一整理. 为了 ...

  3. Java API源码在哪里找_详解查看JAVA API及JAVA源码的方法

    在java的日常学习中,我们有时候会需要看java的api说明,或者是查看java的源码,使我们更好的了解java,接下来我就来说说如何查看java的api以及java源码 对于java的api,一般 ...

  4. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

    Python开发技术详解适合Python爱好者.大中专院校的学生.社会培训班的学生以及用Python语言进行系统管理.GUI开发.Web开发.数据库编程.网络编程的人员使用. 内容提要 Python是 ...

  5. python算术运算符详解_Python中关于算术运算符的实例详解

    这篇文章主要介绍了Python算术运算符实例详解的相关资料,需要的朋友可以参考下 Python算术运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b ...

  6. python协程详解_python协程详解

    原博文 2019-10-25 10:07 − # python协程详解 ![python协程详解](https://pic2.zhimg.com/50/v2-9f3e2152b616e89fbad86 ...

  7. python int函数详解_Python内置函数OCT详解

    英文文档:oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression ...

  8. python 元类 详解_Python 元类详解 __new__、__init__、__call__、__metacalss__

    了解元类之前,先了解几个魔术方法: __new__.__init__.__call__ __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪 ...

  9. python pexpect模块详解_python pexpect原理详解及使用说明

    pexpect是python中用于实现SSH,FTP,telnet等命令进行自动化交互,从而无需人工干预实现自动化运维的一个第三方扩展模块.理论的描述过于抽象,这里首先设想一下,如果让您设计一个实现自 ...

  10. python字符串格式化详解_Python字符串格式化%s%d%f详解

    Python字符串格式化%s%d%f详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python字符串格式化%s%d%f详解.txt ] (友情提示:右键点上 ...

最新文章

  1. react 让滚动条一直在下面_Ink 2.0 发布:命令行应用程序的 React
  2. 用友服务器整体迁移--数据库附加
  3. 为何python不好找工作k-为何python不好找工作,seo行业不好转行了
  4. 杭电2035--人见人爱A^B
  5. 南方科技大学计算机交换生,国际合作 – 合作交流分类 – 南方科技大学生物医学工程系...
  6. wpf office 菜单_如何带回Office 2007中的旧菜单
  7. 信息学奥赛一本通(1323:【例6.5】活动选择)
  8. HDFS小文件问题解决方案
  9. Python扩展库numpy中where()函数的三种用法
  10. c++ 结构体中不同类型的初始值_不同类型结构的厂房效果图大盘点
  11. 初始化Direct3D(2)
  12. 第二季-专题11-世界一下变大了-MMU
  13. 简单的达梦数据库使用DISTINCT去重
  14. 我为什么弃用OpenStack转向CNware
  15. [转载]希捷固件门7200.12 CC46固件升级方法
  16. 3D Vision--生成空间任意圆柱及任意直线
  17. c语言之“数组”初级篇
  18. 我在亚马逊云平台的学习成长之路
  19. 计算机专业笔记本用i5还是i7,玩游戏笔记本i5和i7的区别_笔记本电脑游戏用i5还是i7...
  20. 岁月你别催 该来的我不推;岁月你别催 走远的我不追;

热门文章

  1. Deprecated: Function eregi() is deprecated in ……【解决方法】
  2. IIS如何添加MIME类型.svg/.woff2/.woff
  3. SolidWorks用鼠标中键控制模型的旋转、缩放和平移
  4. 全自动IC半导体MCU芯片烧录flash大批量生产出货的解决方案分析
  5. 怎么删除计算机病毒,电脑中病毒删不掉怎么办?
  6. [html + css] SVG动画 发光渐变炫彩猫猫头
  7. java gzip rest_使用restclient或postman发送gzip数据
  8. python入门之函数结构第二关_Python入门二:函数
  9. php文字转换为图片,图片转换成文字 把图片转换成可以编辑的文字,图片文字转换成文本文字的方法...
  10. 时间轴+html+源码,HTML5+CSS3+Jquery实现纯手工的垂直时光轴【附源码】