拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Python自制音乐下载器,无需切换平台无需氪金!

Python自制音乐下载器,无需切换平台无需氪金!

白鹭 - 2022-01-23 2140 0 0

兄弟们,我来了??

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

?? 效果展示

? 爱了爱了

在这里插入图片描述
那我下首分手快乐试试??

在这里插入图片描述
都保存在音乐档案夹了
在这里插入图片描述

?? 代码决议

? 准备作业

环境配置

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

 

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

汇入模块

import os
from urllib.request import urlretrieve
from tkinter import *
import requests  # pip 安装
import jsonpath  # json资料的决议工具
兄弟们学习python,有时候不知道怎么学,从哪里开始学,掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识,
那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及视频源的源代码!
还会有大佬解答!
都在这个群里了 924040232
欢迎加入,一起讨论 一起学习!

 

? 界面实作

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

  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=https://www.cnblogs.com/hahaa/archive/2022/01/20/'netease')
r1.grid(row=1, column=0)
r2 = Radiobutton(root, text='秋秋音乐', variable=var, value=https://www.cnblogs.com/hahaa/archive/2022/01/20/'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=https://www.cnblogs.com/hahaa/archive/2022/01/20/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]

 

下载

song_load(url, title)

 

在这里插入图片描述

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *