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学习笔记:字典的使用示例详解
Jun 13 Python
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python中的super()方法使用简介
Aug 14 Python
Django开发中的日志输出的方法
Jul 02 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
python3 线性回归验证方法
Jul 09 Python
python文件和文件夹复制函数
Feb 07 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Python预测分词的实现
Jun 18 Python
详解MindSpore自定义模型损失函数
Jun 30 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 翻页 实例代码
2009/08/07 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
python生成二维码的实例详解
2017/10/29 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python判断输入日期为第几天的实例
2018/11/13 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
汽车专业学生自我评价
2014/01/19 职场文书
高一物理教学反思
2014/01/24 职场文书
会计顶岗实习心得
2014/01/25 职场文书
春节联欢会主持词
2014/03/24 职场文书
建设工地安全标语
2014/06/07 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
高一语文教学反思
2016/02/16 职场文书