Python自制音樂下載器,無需切換平台無需氪金!


兄弟們,我來了😎

平時我們想下一首歌,因為資源限制,需要在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='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]

 

下載

song_load(url, title)

 

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM