Python自制音乐下载器,无需切换平台无需氪金(python制作音乐模块)

兄弟们,我来了

平时我们想下一首歌,因为资源限制,需要在W平台、Q平台、K平台来回切换,这样多累,那我就直接做了一个聚合的音乐下载器,想要什么歌,直接输入名字分分钟就下载到位了

Python自制音乐下载器,无需切换平台无需氪金(python制作音乐模块)

效果展示

⚡ 爱了爱了

Python自制音乐下载器,无需切换平台无需氪金(python制作音乐模块)


那我下首分手快乐试试

Python自制音乐下载器,无需切换平台无需氪金(python制作音乐模块)


都保存在音乐文件夹了

Python自制音乐下载器,无需切换平台无需氪金(python制作音乐模块)

代码解析

⚡ 准备工作

环境配置

# 解释器 python3.6# 编辑器 pycharm专业版

环境不会配置的小伙伴可以看我置顶合集里面有

导入模块

import osfrom urllib.request import urlretrievefrom tkinter import *import requests # pip 安装import jsonpath # json数据的解析工具

⚡ 界面实现

先整一手好看的界面,我这个比较简单,大家可以改的好看一点。

  1. 创建画布

root = Tk()

  1. 设置标题

root.title('音乐下载器')

  1. 设置窗口大小以及出现位置

root.geometry('560x450 400 200')

  1. 标签组件

label = Label(root, text='请输入下载歌曲:', font=('华文行楷', 20))

  1. 定位、布局

label.grid()

  1. 输入框组件

entry = Entry(root, font=('隶书', 20))entry.grid(row=0, column=1)

  1. 单选按钮

var = StringVar()r1 = Radiobutton(root, text='网抑云', variable=var, value='netease')r1.grid(row=1, column=0)r2 = Radiobutton(root, text='秋秋音乐', variable=var, value='qq')r2.grid(row=1, column=1)

  1. 列表框

text = Listbox(root, font=('隶书', 16), width=50, heigh=15)text.grid(row=2, columnspan=2)

  1. 下载按钮

button1 = Button(root, text='开始下载', font=('隶书', 15), command=get_music_name)button1.grid(row=3, column=0)

  1. 退出按钮

button2 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)button2.grid(row=3, column=1)

⚡ 功能实现

基本就是爬虫的一些操作

创建文件夹

os.makedirs("音乐", exist_ok=True)path = "音乐{}.mp3".format(title)text.insert(END, '歌曲:{},正在下载...'.format(title))

文本框滚动

text.see(END)

更新

text.update()

下载

urlretrieve(url, path)text.insert(END, '下载完毕:{},请试听'.format(title))

文本框滚动

text.see(END)

更新

text.update()

搜索歌曲

def get_music_name(): name = entry.get() platfrom = var.get() headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36', 'x-requested-with': 'XMLHttpRequest' # 判断请求是异步还是同步 } data = { 'input': name, 'filter': 'name', 'type': platfrom, 'page': 1, } url = 'https://music.liuzhijin.cn/' resp = requests.post(url=url, data=data, headers=headers) json_text = resp.json() title = jsonpath.jsonpath(json_text, '$..title')[0] author = jsonpath.jsonpath(json_text, "$..author")[0] url = jsonpath.jsonpath(json_text, "$..url")[0]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

您的电子邮箱地址不会被公开。