利用python自己动手制作一个音乐下载器,想听什么歌自己下就好

2020-12-17  本文已影响0人  孤城暮雨丶

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

一、前言

之前大家有没有过从电脑上下载歌曲MP3文件放到手机内存卡的经历,随着时代发展,现在的各大音乐软件已经成为播放器,下载音乐是要收费的,
现在教大家从零开始可以通过python通过爬虫爬取音乐,教大家打造自己的音乐下载器。

二、知识点

1.python基础知识
2.requests库
3.urliib库
4.BeautifulSoup

三、所用到得库

import os
from urllib.request import urlretrieve
from tkinter import *
import requests  # pip
import jsonpath  # json数据的解析工具

四、 功能

爬虫

  1. url
  2. 模拟浏览器请求
  3. 解析网页源代码
  4. 保存数据

五、环境配置

解释器 python3.6
编辑器 pycharm专业版 激活码

六、完整代码

def song_load(url, title):
    # 创建文件夹
    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; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 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]

    # 下载
    song_load(url, title)

# 一 界面
# 1\. 创建画布
root = Tk()
# 2\. 设置标题
root.title('全网音乐下载器')
# 3\. 设置窗口大小以及出现位置
root.geometry('560x450+400+200')

# 4\. 标签组件
label = Label(root, text='请输入下载歌曲:', font=('华文行楷', 20))
# 5\. 定位  布局
label.grid()

# 6\. 输入框组件
entry = Entry(root, font=('隶书', 20))
entry.grid(row=0, column=1)

# 7\. 单选按钮
var = StringVar()
r1 = Radiobutton(root, text='网易云', variable=var, value='netease')
r1.grid(row=1, column=0)
r2 = Radiobutton(root, text='QQ', variable=var, value='qq')
r2.grid(row=1, column=1)
# 8\. 列表框
text = Listbox(root, font=('隶书', 16), width=50, heigh=15)
text.grid(row=2, columnspan=2)
# 9\. 下载按钮
button1 = Button(root, text='开始下载', font=('隶书', 15), command=get_music_name)
button1.grid(row=3, column=0)
# 10\. 退出按钮
button2 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)
button2.grid(row=3, column=1)

# 显示界面
root.mainloop()

# 二 功能

# pyinstaller

七、实现界面

在这里插入图片描述

界面不是很完美,主要是时间原因,没用调整的那么好看,但是下载功能齐全。

上一篇 下一篇

猜你喜欢

热点阅读