1. 程式人生 > 實用技巧 >現在聽歌要各大平臺到處跑,嫌麻煩?製作個人專屬的音樂下載器

現在聽歌要各大平臺到處跑,嫌麻煩?製作個人專屬的音樂下載器

前言

之前大家有沒有過從電腦上下載歌曲MP3檔案放到手機記憶體卡的經歷,隨著時代發展,現在的各大音樂軟體已經成為播放器,下載音樂是要收費的,現在教大家從零開始可以通過python通過爬蟲爬取音樂,教大家打造自己的音樂下載器

知識點:

  1. python基礎知識
  2. requests庫
  3. urllib庫
  4. BeautifulSoup

環境:

  • windows
  • pycharm
  • python3

先看效果圖

程式碼

匯入工具

import os
from urllib.request import urlretrieve
from tkinter import *
import requests
import
json import jsonpath from selenium import webdriver

下載歌曲

def song_load(song_url,song_title):

    # 建立資料夾
    os.makedirs('music', exist_ok=True)
    path = 'music\{}.mp3'.format(song_title)
    text.insert(END, '歌曲:{},正在下載...'.format(song_title))
    # 文字框滾動
    text.see(END)
    # 更新
    text.update()

    urlretrieve(song_url, path)

    text.insert(END, 
'下載完畢:{},請試聽'.format(song_title)) # 文字框滾動 text.see(END) # 更新 text.update()

搜尋歌曲的id 名字

def get_music_name():
    # 獲取輸入框的歌曲名稱
    name = entry.get()
    platform = 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',
# 'Referer': 'http://music.onlychen.cn/?name=%E4%BB%A5%E7%88%B6%E4%B9%8B%E5%90%8D&type=qq', # 'Origin': 'http://music.onlychen.cn', # 'Host': 'music.onlychen.cn', # 'Cookie': 'UM_distinctid=173e1b3fd7f683-018ad69a1b7ba2-3c634103-1fa400-173e1b3fd8084b; CNZZDATA1279162877=486742487-1597218425-null%7C1597462873', 'X-Requested-With': 'XMLHttpRequest', } params = { 'input': name, 'filter': 'name', 'type': platform, # netease 網易雲 'page': '1', } # 拼接url url = 'http://music.onlychen.cn/' resp = requests.post(url,data=params,headers=headers) data = resp.json() print(data) title = jsonpath.jsonpath(data,"$..title")[0] author = jsonpath.jsonpath(data,"$..author")[0] url = jsonpath.jsonpath(data,"$..url")[0] print(title) print(author) print(url) # 下載歌曲 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))
# 7.定位
entry.grid(row=0, column=1)
# 單選按鈕***
var = StringVar()
r1 = Radiobutton(root,text="網易雲",variable=var,value='netease')
r1.grid(row=2, column=0)
r2 = Radiobutton(root,text="qq",variable=var,value='qq')
r2.grid(row=2, column=1)
# 8.列表框
text = Listbox(root, font=('楷書', 16), width=50, heigh=15)
# 9.定位 columnspan 元件橫跨的列數
text.grid(row=3, columnspan=2)
# 點選下載按鈕
button = Button(root, text='開始下載', font=('隸書', 15), command=get_music_name)
# 定位 sticky 對齊方式 W E N S  東南西北
button.grid(row=4, column=0, sticky=W)
# 退出程式的按鈕
button1 = Button(root, text='退出程式', font=('隸書', 15), command=root.quit)
# 定位 sticky 對齊方式 W E N S  東南西北
button1.grid(row=4, column=1, sticky=E)
# 顯示介面
root.mainloop()

PS:如有需要Python學習資料的小夥伴可以加下方的群去找免費管理員領取

可以免費領取原始碼、專案實戰視訊、PDF檔案等