前言

嗨喽,大家好呀,这里是魔王~

我们空闲时都会听听音乐,放松一下自己的心情,每个人都会有自己喜欢的歌手或歌

但是通常一个平台不能完全找到,因为版权原因,经常需要几个软件跨着听,非常的麻烦

那么现在,我们直接来用代码全部下载下来用本地播放器播放,美滋滋!

开发环境:

  • 版 本:python3.8
  • 编辑器:pycharm

所使用模块

  • requests
  • prettytable

这两个都是第三方模块,所以我们需要安装:

  1. win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源

  2. 在pycharm中点击Terminal(终端) 输入安装命令


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

流程思路

本次主要实现

  1. 搜索功能
  2. 下载歌曲功能

搜索功能

  1. 发送请求 向以前的搜索功能接口发送 请求
  2. 获取数据 获取所有歌曲信息数据
  3. 解析数据 歌曲 歌手名 专辑 歌曲mid(用来下载歌曲必须要的参数)
  4. 格式化输出
  5. 下载歌曲功能

通过获取的歌曲mid 拼接 需要的音频url

解答、资料、源码点击领取~

  1. 发送网络请求 需要的音乐url
  2. 获取数据 获取 里面生成的 部分音乐链接 合并 (mp3 数据所在的链接了)
  3. 发送请求 (mp3 数据所在的链接了)
  4. 获取数据 音乐二进制数据
  5. 保存数据

代码

import requests     # 发送网络请求
import json
import prettytable as ptheaders = {'cookie': 'pgv_pvid=7300130020; tvfe_boss_uuid=242c5295a1cb156d; RK=6izJ0rkfNn; ptcz=622f5bd082de70e3e6e9a077923b48f72600cafd5e4b1e585e5f418570fa30fe; ptui_loginuin=1321228067; luin=o3452264669; o_cookie=3452264669; ts_uid=5501087131; fqm_pvqid=89ea2cc7-6806-4091-989f-5bc2f2cdea5c; lskey=00010000d96bdb23303bc141246a5c2f9a02cf45acf079eaab6645fdc10923e7a0eaac09aa24533ab1299555; fqm_sessionid=d77623f3-4dd0-4709-8e50-a34986b17344; pgv_info=ssid=s4530794666; ts_last=y.qq.com/; ts_refer=ADTAGmyqq; _qpsvr_localtk=0.8458135546904957; euin=oK6kowEAoK4z7eclow6qoiSz7z**; psrf_qqrefresh_token=; psrf_qqaccess_token=; wxuin=1152921504872193707; psrf_qqopenid=; wxrefresh_token=53_FHlMDgGCCfOUCXRxCMGFGYHxwtDV0_rZANu84l_KrYtPYRVSWqpxoWqojdj1coj4CF_H4qNrXw0WrZtQdlsozcwYQbVp0SepI9Jmm_Pfhjk; qqmusic_key=W_X_3mJrl760n0lDWkgqqBhBMX2VPnH1PNwwUZjvNkmSnurNjTTap1J6gjetIU50hraK3AjHgw5T4ay2R3; qm_keyst=W_X_3mJrl760n0lDWkgqqBhBMX2VPnH1PNwwUZjvNkmSnurNjTTap1J6gjetIU50hraK3AjHgw5T4ay2R3; psrf_qqunionid=; tmeLoginType=1; wxunionid=oqFLxsgDOwYRnPDffuK5UINv958c; wxopenid=opCFJw5Vvcf24VLQSyNpKAX6gt3I; wxuin=1152921504872193707; qm_keyst=W_X_3mJrl760n0lDWkgqqBhBMX2VPnH1PNwwUZjvNkmSnurNjTTap1J6gjetIU50hraK3AjHgw5T4ay2R3; login_type=2'
}
name = input('请输入你想要下载的歌曲或者歌手名称:')
# 1. 发送请求 向以前的搜索功能接口发送 请求
url = f'https://c.***/soso/fcgi-bin/client_search_cp?p=1&n=10&w={name}'
response = requests.get(url)
# print(response)
# 2. 获取数据 获取所有歌曲信息数据
json_str = response.text
# 3. 解析数据 歌曲 歌手名 专辑 歌曲mid(用来下载歌曲必须要的参数)
json_str = json_str[9: -1]
json_dict = json.loads(json_str)
song_list = json_dict['data']['song']['list']
tb = pt.PrettyTable()
tb.field_names = ['序号', '歌名', '歌手', '专辑']
music_info_list = []
count = 0
# 4. 格式化输出
for song in song_list:songname = song['songname']songmid = song['songmid']singer = song['singer'][0]['name']albumname = song['albumname']tb.add_row([count, songname, singer, albumname])music_info_list.append([songmid, songname, singer])count += 1
print(tb)while True:input_index = eval(input('请输入你要下载的歌曲序号(-1)退出:'))if input_index == -1:breakdownload_info = music_info_list[input_index]songmid = download_info[0]# 1. 通过获取的歌曲mid 拼接 需要的音乐urlmusic_info_url = 'https://u.***/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch", "filename":"M800","param":{"guid":"8846039534","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","filename":"M800","param":{"guid":"8846039534","songmid":["%s"],"songtype":[0],"uin":"1152921504784213523","loginflag":1,"platform":"20"}},"comm":{"uin":"1152921504784213523","format":"json","ct":24,"cv":0}}' % songmid# print(music_info_url)# 2. 发送网络请求 需要的音乐urljson_data = requests.get(url=music_info_url, headers=headers).json()# 3. 获取数据 获取 里面生成的 部分音乐链接 合并 (mp3 数据所在的链接了)purl = json_data['req_0']['data']['midurlinfo'][0]['purl']media_url = 'https://dl.stream.qqmusic.qq.com/' + purl# 4. 发送请求 (mp3 数据所在的链接了)# 5. 获取数据 音乐二进制数据music_data = requests.get(media_url).content# 6. 保存数据with open(f'歌曲下载/{download_info[1]}-{download_info[2]}.mp3', mode='wb') as f:f.write(music_data)print(f'{download_info[1]}, 下载完成!')

尾话

好啦,这篇文章就到这里啦~对你有帮助就点赞收藏一下吧!

python:想要什么资源,直接上去莽就完事了~相关推荐

  1. 只需十四步:从零开始掌握 Python 机器学习(附资源)

    分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...

  2. 从零开始掌握Python机器学习(附资源)

    从零开始掌握Python机器学习(附资源) 机器之心 2017-03-14 14:29 选自kdnuggets 作者:Matthew Mayo Python 可以说是现在最流行的机器学习语言,而且你也 ...

  3. 教你使用Python爬虫获取电子书资源实战!喜欢学习的小伙伴过来看啦!

    最近在学习Python,相对java来说python简单易学.语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,对于小型应用的开发,虽然运行效率慢点,但开发效率极高.大大提高了咱们的生产力. ...

  4. 想要的资源百度搜不到?6个只有老师傅才知道的网站,悄悄领走

    总有些想要的资源,百度翻了几十页都找不到.怎么办呢?不妨试试下面这6个资源搜索网站,想要的资源几秒就能找到,让你大饱眼福. BT兔子 btrabbit.biz 号称是最快的磁力链接搜索引擎,实测了一下 ...

  5. python 整合_python的资源整合

    Python基本安装: * http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站: * http://www.activestate.co ...

  6. 你想要的资源我都有(2)

    关注博主,持续更新 在这里,博主给大家分享一些在大学学习过程中经常使用的网站或者平台,希望有助于各位的学习和工作! 1.中国大学MOOC(慕课)_国家精品课程在线学习平台 https://kaoyan ...

  7. 博学谷python_2020年最新博学谷Python基础班,资源教程下载

    课程名称 2020年最新博学谷Python基础班,资源教程下载 课程目录 day01 01-开班介绍 02-计算机组成原理 03-python介绍 04-python第一个程序 05-注释 06-注释 ...

  8. 如何快速找到自己想要的资源?

    一.利用CSDN站内搜索 CSDN专门组建了自己的搜索团队,其目的就是为了方面大家能速搜索自己想要的资源:如果找不到资源,不妨来试一试.我要搜索资源. 二.指定通道反馈 CSDN的运营小伙伴也可以努力 ...

  9. 30个T的硬盘都不够装,你想要的资源都在这里

    总是找不到自己想要的资源吗?看着空空如也的硬盘是不是心中总有一丝淡淡的失落呢?小编今天将分享几个资源满满的网站. 让你硬盘瞬间爆满,接下来就来看看吧. 一.一听音乐网一听音乐网是在线音乐网站,提供免费 ...

  10. 学习Python语言必备的资源 作者: ZDNET CHINA 特稿

    Python是一种不但成熟而且功能也十分强大的面向对象程序设计语言.它的功能性现在已经可以与Java相媲美了.尽管Python有着这样或者那样的优点,但是它仍然面对着这样的一种现实:真正了解Pytho ...

最新文章

  1. 2022-2028年中国煤及褐煤行业发展现状及未来前景分析报告
  2. Stanford UFLDL教程 池化Pooling
  3. SAP S/4HANA表结构之变
  4. Spring的异步方法
  5. Cisco packet tracer6.0下的网络工程实训
  6. 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区
  7. hadoopsdk使用_Hadoop的一些基本操作
  8. keycloak mysql_keycloak搭配mysql
  9. php易宝支付扫码支付代码_谈谈扫码支付
  10. JavaScript 函数定义和调用
  11. 家用智能门锁常见的开锁方式
  12. python简单的计算方法_用python实现简单的有限元方法(二)
  13. 为CMUSphinx训练声学模型教程手册
  14. 刘兰芳评书app下载
  15. 「Vue实战」武装你的前端项目
  16. 博世XC事业部李胤:自动驾驶降温不意外,但这条路肯定会走下去
  17. python中计算梯度值
  18. 春秋战国时期灭了三个国家的陈国女人
  19. 索尼相机摄像机断电MP4视频无XML文件数据恢复修复方法
  20. (附源码)Springboot 点餐系统 毕业设计 100908

热门文章

  1. 关窗户和代码——学习12字原则:授之以欲,受之以愉,渔之以渔
  2. java stun_公开的免费STUN服务器
  3. 个人日常教学工作的总结~~悲凉、失落和无奈
  4. 用于多项式计算的霍纳方法
  5. JAVA源码学习网站
  6. 手写数字体识别,用保存的模型跑自己的图片
  7. 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...
  8. C语言中CR是什么意思
  9. u盘安装Ubuntu系统(win10+Ubuntu双系统)
  10. 前端开发需要学习什么?需要掌握哪些技能?