python实现简易云音乐播放器


Posted in Python onJanuary 04, 2018

本人最近在学习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('<Double-Button-1>',excute) 
listbox.pack() 
var1=StringVar() 
label=Label(root,text="云音乐播放器",fg="purple",textvariable=var1) 
var1.set("云音乐播放器") 
label.pack() 
root.mainloop()#显示窗口

由于最近事情较多加上我的技术还不到位,这个播放器有一个BUG我还没有解决,就是在选择播放第二首歌时,第一首歌不会停止。如果有小伙伴解决了这个BUG的话,欢迎指正。

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

Python 相关文章推荐
Python实现抓取网页并且解析的实例
Sep 20 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python用match()函数爬数据方法详解
Jul 23 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python编写微信公众号首图思路详解
Dec 13 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
浅析Python面向对象编程
Jul 10 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
通俗讲解python 装饰器
Sep 07 Python
python中温度单位转换的实例方法
Dec 27 Python
Python语言描述连续子数组的最大和
Jan 04 #Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 #Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 #Python
python编程实现随机生成多个椭圆实例代码
Jan 03 #Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 #Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 #Python
Python简单实现socket信息发送与监听功能示例
Jan 03 #Python
You might like
数组与类使用PHP的可变变量名需要的注意的问题
2013/06/20 PHP
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
全面理解Python中self的用法
2016/06/04 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python timeit模块原理及使用方法
2020/10/10 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
办理生育手续介绍信
2014/01/14 职场文书
医学生自我评价
2014/01/27 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
刑事法律意见书
2015/06/04 职场文书
2015入党个人自传范文
2015/06/26 职场文书
计算机教师工作总结
2015/08/13 职场文书
创业计划书介绍
2019/04/24 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫