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进阶教程之模块(module)介绍
Aug 30 Python
python简单实现基数排序算法
May 16 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
python怎么提高计算速度
Jun 11 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
pycharm无法导入lxml的解决办法
Mar 31 Python
python内置模块之上下文管理contextlib
Jun 14 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
如何用php获取文件名后缀
2013/06/09 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
5 cool javascript apps
2007/03/24 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
玩转方法:call和apply
2014/05/08 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
Python的一些用法分享
2012/10/07 Python
Python中的字典遍历备忘
2015/01/17 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python的exec、eval使用分析
2017/12/11 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python坐标线性插值应用实现
2019/11/13 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
房屋买卖协议书
2014/04/10 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL