python实现播放音乐_python实现简易云音乐播放器

本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到。

#coding=utf-8

from Tkinter import *

import tkMessageBox

import urllib

import json

import mp3play

import time

import threading

from pinyin import PinYin

import os

import stat

test = PinYin()

test.load_word()

stop=0

def music():

if not entry.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

global x

x = []

for i in js['result']['songs']:

listbox.insert(n,'%s(%s)'%(i['name'],i['artists'][0]['name']))

n+=1

x.append(i['audio'])

count = 0

#isplaying = None

def play():

global count

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())

import inspect

import ctypes

def _async_raise(tid, exctype):

"""raises the exception, performs cleanup if needed"""

tid = ctypes.c_long(tid)

if not inspect.isclass(exctype):

exctype = type(exctype)

res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))

if res == 0:

raise ValueError("invalid thread id")

elif res != 1:

ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)

raise SystemError("PyThreadState_SetAsyncExc failed")

def stop_thread(thread):

_async_raise(thread.ident, SystemExit)

threads=list()

t=None

def excute(event):

global t

for i in threads:

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的话,欢迎指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值