python实现简易云音乐播放器
本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到。
#coding=utf-8 fromTkinterimport* importtkMessageBox importurllib importjson importmp3play importtime importthreading frompinyinimportPinYin importos importstat test=PinYin() test.load_word() stop=0 defmusic(): ifnotentry.get(): tkMessageBox.showinfo("温馨提示","搜索内容不能为空") return name=test.hanzi2pinyin_split(entry.get()) html=urllib.urlopen("http://s.music.163.com/search/get/?type=1&s=%s&limit=9"%name).read() js=json.loads(html) n=0 globalx x=[] foriinjs['result']['songs']: listbox.insert(n,'%s(%s)'%(i['name'],i['artists'][0]['name'])) n+=1 x.append(i['audio']) count=0 #isplaying=None defplay(): globalcount count+=1 index=listbox.curselection() var1.set(u"正在加载"+listbox.get(index,last=None)) urllib.urlretrieve(x[index[0]],'tmp%s.mp3'%str(count)) var1.set(u"正在播放"+listbox.get(index,last=None)) mp3=mp3play.load("tmp%s.mp3"%str(count)) mp3.play() time.sleep(mp3.seconds()) importinspect importctypes def_async_raise(tid,exctype): """raisestheexception,performscleanupifneeded""" tid=ctypes.c_long(tid) ifnotinspect.isclass(exctype): exctype=type(exctype) res=ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,ctypes.py_object(exctype)) ifres==0: raiseValueError("invalidthreadid") elifres!=1: ctypes.pythonapi.PyThreadState_SetAsyncExc(tid,None) raiseSystemError("PyThreadState_SetAsyncExcfailed") defstop_thread(thread): _async_raise(thread.ident,SystemExit) threads=list() t=None defexcute(event): globalt foriinthreads: stop_thread(i) t=threading.Thread(target=play) t.setDaemon(True) t.start() threads.append(t) root=Tk()#创建一个窗口 root.title("云音乐") root.geometry("500x300+500+200") entry=Entry(root)#创建输入框(单行),置父 entry.pack() btn=Button(root,text="搜索",command=music) btn.pack()#布局方式必须用同一种 var=StringVar() listbox=Listbox(root,width=50,listvariable=var) listbox.bind('',excute) listbox.pack() var1=StringVar() label=Label(root,text="云音乐播放器",fg="purple",textvariable=var1) var1.set("云音乐播放器") label.pack() root.mainloop()#显示窗口
由于最近事情较多加上我的技术还不到位,这个播放器有一个BUG我还没有解决,就是在选择播放第二首歌时,第一首歌不会停止。如果有小伙伴解决了这个BUG的话,欢迎指正。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。