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中__call__内置函数用法实例
Jun 04 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
python如何使用unittest测试接口
Apr 04 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
python 格式化输出百分号的方法
Jan 20 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
Aug 27 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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检测url是否存在的方法
2015/04/14 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
php对象工厂类完整示例
2018/08/09 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
Prototype Function对象 学习
2009/07/12 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
Python 自动化表单提交实例代码
2017/06/08 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python OpenCV实现视频分帧
2019/06/01 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
新闻专业应届生求职信
2013/10/31 职场文书
优秀幼教自荐信
2014/02/03 职场文书
更夫岗位责任制
2014/02/11 职场文书
农村门前三包责任书
2014/07/25 职场文书
励志演讲稿200字
2014/08/21 职场文书
行政司机岗位职责
2015/04/10 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
Go Plugins插件的实现方式
2021/08/07 Golang
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS