Python怎样实现免费音乐下载器
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,今天就跟大家聊聊有关Python怎样实现免费音乐下载器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。正文1)思路进入某音乐主页输入任意歌手,比
千家信息网最后更新 2025年01月25日Python怎样实现免费音乐下载器
今天就跟大家聊聊有关Python怎样实现免费音乐下载器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
正文
1)思路
进入某音乐主页输入任意歌手,比如李XX为列。
音乐从哪里来?---网站的服务器里
怎么从网址里得到音乐?---向网站发起网络请求
最后用tkinter做成一个界面下载框即可
2)环境
本文用到的环境如下:Python3、Pycharm,requests、tkinter模块。
模块安装:pip install + 模块名 环境有问题可以直接找我解答。(安装包、视频、激活码都有)
3)代码演示
3.1 打开审查元素F12
找到头文件地址:
headers = { 'Referer': 'https://y.qq.com/portal/search.html', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/77.0.3865.90 Safari/537.36 '}
3.2 附完整项目
# -*- coding: utf-8 -*-from tkinter import *import requestsimport jsonimport os headers = { 'Referer': 'https://y.qq.com/portal/search.html', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/77.0.3865.90 Safari/537.36 '} def downlaod_song(): music_info_list = [] name = entry.get() page = '1' num = '10' url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p={page}&n={num}&w={name}' response = requests.get(url).text # 将response切分成json格式 类似字典 但是现在还是字符串 music_json = response[9:-1] music_data = json.loads(music_json) music_list = music_data['data']['song']['list'] for music in music_list: music_name = music['songname'] # 歌曲的名字 singer_name = music['singer'][0]['name'] # 歌手的名字 songmid = music['songmid'] media_mid = music['media_mid'] music_info_list.append((music_name, singer_name, songmid, media_mid)) # 获取vkey music_data = [] for music in music_info_list: music_name = music[0] singer_name = music[1] songmid = music[2] url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"8846039534","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"8846039534","songmid":["%s"],"songtype":[0],"uin":"1152921504784213523","loginflag":1,"platform":"20"}},"comm":{"uin":"1152921504784213523","format":"json","ct":24,"cv":0}}' % songmid response = requests.get(url).json() # 如果你获取的数据 是 {} .json() 他会直接帮我们转换成字典 purl = response['req_0']['data']['midurlinfo'][0]['purl'] full_media_url = 'http://dl.stream.qqmusic.qq.com/' + purl music_data.append( { 'music_name': music_name, 'singer_name': singer_name, 'full_media_url': full_media_url } ) if not os.path.exists('歌曲下载'): os.mkdir('歌曲下载') for music in music_data: music_name = music['music_name'] singer_name = music['singer_name'] full_url = music['full_media_url'] music_response = requests.get(full_url, headers=headers).content # 获取到二进制数据 with open('歌曲下载/%s-%s.mp3' % (music_name, singer_name), 'wb')as fp: fp.write(music_response) # 添加数据到列表框的最后 text.insert(END, '正在下载:%s' % music_name) # 文本框向下滚动 text.see(END) # 更新(不更新就一直卡在那,显示同样的内容) text.update() # 1.创建窗口root = Tk()# 2.窗口标题root.title('QQ音乐')# 3.窗口大小以及显示位置,中间是小写的xroot.geometry('550x400+550+230')# 窗口显示位置# 4.标签控件lable = Label(root, text='请输入需要下载的歌手或歌曲:', font=('微软雅黑', 10))lable.grid(row=0, column=0)# 5.输入控件entry = Entry(root, font=('微软雅黑', 25))entry.grid(row=0, column=1)# 6.列表框控件text = Listbox(root, font=('微软雅黑', 16), width=45, height=10)# # columnspan组件所跨月的列数text.grid(row=1, columnspan=2)# 7.按钮控件button = Button(root, text='开始下载', width=10, font=('微软雅黑', 10), command=downlaod_song)button.grid(row=2, column=0, sticky=W)button1 = Button(root, text='退出', width=10, font=('微软雅黑', 10), command=root.quit)button1.grid(row=2, column=1, sticky=E)# 消息循环,显示窗口root.mainloop()
4)效果展示
以李XX为例子下载的歌曲:
想下载什么下载什么哦~
看完上述内容,你们对Python怎样实现免费音乐下载器有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
音乐
歌曲
微软
内容
控件
数据
模块
歌手
歌曲下载
环境
输入
音乐下载
位置
名字
字典
网站
更新
二进制
代码
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
漳州芒果互联网科技公司
基于共享文件的数据库
高速网络安全产业
2019网络安全大赛答案
php服务器管理系统
dbf和ctl如何恢复数据库
腾讯网络安全管理部赖秀文
沈阳磐古网络技术有限公司
计算机网络技术教程简笔画
常见的网络安全风险控制
梅州数字软件开发优化价格
苏州戴尔服务器网络恢复
连平软件开发技术
网络安全概论
西安哲盟软件开发有限公司
西安新茂融软件开发有限公司
戴尔495瓦服务器电源改
福建南鼎网络技术
哪个光影材质包能装在服务器里面
与网络安全有关的证书
湖南高速打卡服务器
我的世界百万服务器失败
江苏环保网络技术服务价格
金山区企业软件开发不二之选
天津美术学院学生网络安全守则
数据库同眇技术
IMF数据库技术流视频
俄罗斯人做的数据库
jsp怎么在数据库插入数据
软件开发是怎么回事呢