昨天翻了下写过的博文,看着看着,一个邪恶的想法油然而生……
“为何不做一个集合音乐下载和播放的小程序呢?以我的能力完全可以的啊!搞他。” Niko贱贱的语言
于是开始搞了。
也没多久,一天一夜,搞定了。
下载的音乐会以歌曲id命名,放在文件目录,支持多文件下载(不是同时)。
看到没,下载完之后支持选择播放,但,凡事就怕但。 界面是在太 {丑} 好 {得} 看 {一} 了{批}!
没办法啊!Python语言没一个好看的UI界面,也可能有,我不会用,比如Pyqt5。 害,不多说了,多说无益,放源代码!
from tkinter.constants import LEFT, RIGHT
import requests
import tkinter
from tkinter import messagebox
import sys
def music_play():
import pygame
pygame.mixer.init()
pygame.mixer.music.load(str(id) + '.mp3')
pygame.mixer.music.play()
def get_link():
try:
text = entry.get()
lst = text.split('?')
str_lst = lst[1].split('=')[1]
link = 'https://music.163.com/song/media/outer/url?id=' + str_lst
global id
id = str(str_lst)
return link, id
except Exception as error:
error_s = 'ERROR:', str(error)
entry.delete(0, tkinter.END)
messagebox.showerror(error_s)
def get_song(link, id):
data = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
resp = requests.get(link, data=data).content
with open('.\\' + id + '.mp3', 'wb') as s:
s.write(resp)
global result
result = messagebox.askyesno(title='是否播放?', message='下载完成,是否播放?')
if result:
music_play()
return True
def ex():
sys.exit(0)
def tkin_canvas():
global top
top = tkinter.Tk()
top.title('网易云音乐下载')
L1 = tkinter.Label(top, text='请输入歌曲网址:')
global entry
entry = tkinter.Entry(top)
button = tkinter.Button(top, text='下载', command=main)
button_exit = tkinter.Button(top, text='退出', command=ex)
L1.pack(side=LEFT)
button_exit.pack(side=RIGHT)
button.pack(side=RIGHT)
entry.pack(side=RIGHT)
top.mainloop()
def main():
print('System Starting......')
all = get_link()
link = all[0]
id = all[1]
chose = get_song(link, id)
print('All Done.')
if __name__ == '__main__':
tkin_canvas()
也没多少,80多行,轻轻松松。 搞完了这个,以后再来个进阶的,不断进步,积极进取!