人生苦短,快用python,今天我们来打造一个属于自己的爬虫音乐播放器。
来先上图:(一个牛逼、漂亮、简洁、高大上的音乐播放器)
1.首先我们来导入需要的库:
import requests
import re
import json
from tkinter import *
import tkinter.messagebox
import urllib.request
import requests
import pygame
import encodings
变量设置
path=[]
h=0
搜索音乐播放,调用相关函数
def music():
global path
path=[]
cs=0
query=entry.get()
#name=urllib.request.quote(name,encoding="utf8")
if not query:
tkinter.messagebox.showinfo("提示","请输入歌曲名再进行搜索")
return
api="http://music.baidu.com/search?key=%s"%query
response=requests.get(api)
#print(response.text)
sid=re.findall("sid":"+"(.*?)"+",",response.text)
print(sid)
for i in sid:
get_mp3_by_sid(i,cs)
cs+=1
获取mp3下载链接中的id参数的函数
def get_mp3_by_sid(sid,cs):
global path
w=[]
api="http://musicapi.qianqian.com/v1/restserver/ting?method=baidu.ting.song.play&format=jsonp&callback=jQuery172018602504867491998_1517931605266&songid=%s&_=1517931610100"%sid
response=requests.get(api)
# print(response.text)
data=response.text
# print(data)
data=re.findall(r"\((.*)\)",data)[0]
data=json.loads(data)
# print(data)
#取得歌曲的信息(名字,MP3地址)
mp3_name=data['songinfo']['title']
songer=data['songinfo']['author']
#print(mp3_name)
w.append(mp3_name)
mp3_url=data["bitrate"]["file_link"]
print(mp3_name,songer)
# print(mp3_url)
#
# #持久化
response=requests.get(mp3_url)
with open(r"{}-{}.mp3".format(mp3_name,songer),"wb") as f:#bytes 二进制
f.write(response.content)
歌曲=mp3_name+"-"+songer
path.append(r"{}.mp3".format(歌曲))
#print(path)
#print("gg",歌曲)
listbox.insert(cs,歌曲)
播放函数
def paly(event):
aa=0
#print(event)
sy=listbox.curselection()[0]
# print(path[int(sy)])
u=path[int(sy)]
pygame.init()
pygame.mixer.init()
#screen = pygame.display.set_mode([640, 480])
pygame.time.delay(1000)
u=u.encode("utf-8")
q=pygame.mixer.music.load(u)
#q.play()
pygame.mixer.music.play()
播放暂停按钮逻辑功能函数
def www():
global h
h = h + 1
if h<2:
pygame.mixer.music.pause()
print(h)
elif h==2:
h = 0
print(h)
pygame.mixer.music.unpause()
gui界面创建函数
#创建一个窗口
root=Tk()#创建窗口,实例化对象
root.title("music oline")
root.geometry("+610+200")#300x200表示窗口大小,+700+200表示窗口显示的位置
entry=Entry(root)#创建控件(搜索框,并实例化
entry.pack()#布局
button=Button(root,text="搜 索",command=music)
button.pack()
stop=Button(root,text="停止/播放",command=wwww)
stop.pack()
var=StringVar()
listbox=Listbox(root,width=50,listvariable=var)#width宽
listbox.bind("<Double-Button-1>",paly)
listbox.pack()
i=Label(text="欢迎使用 mymusic",fg="red")
i.pack()#fg:字体颜色
root.mainloop()#显示窗口
请务必记得将路径替换成自己的,还等什么,快点来试一试吧。
网友评论