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以环状形式组合排列图片并输出的方法
Mar 17 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
Flask框架web开发之零基础入门
Dec 10 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
python实现简单图片物体标注工具
Mar 18 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python实现最速下降法
Mar 24 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
Pytorch使用shuffle打乱数据的操作
May 20 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
paypal即时到账php实现代码
2010/11/28 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
js中this的用法实例分析
2015/01/10 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
JS完成画圆圈的小球
2017/03/07 Javascript
vue跨域解决方法
2017/10/15 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
python读取文本中的坐标方法
2018/10/14 Python
python实现二维数组的对角线遍历
2019/03/02 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
C#中的验证控件有几种
2014/03/08 面试题
优秀民警事迹材料
2014/01/29 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
投标诚信承诺书
2014/05/26 职场文书
物理教育专业求职信
2014/06/25 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
企业百日安全活动总结
2015/05/07 职场文书
贷款工作证明模板
2015/06/12 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL