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代码打包为jar软件的简单方法
Aug 04 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
python print 按逗号或空格分隔的方法
May 02 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
如何理解及使用Python闭包
Jun 01 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
晶体管单管来复再生式收音机
2021/03/02 无线电
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
PHP异常处理浅析
2015/05/12 PHP
非常实用的php验证码类
2016/05/15 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
python学习入门细节知识点
2018/03/29 Python
python获取代码运行时间的实例代码
2018/06/11 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
写求职信要注意什么问题
2014/04/12 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
法人授权委托书
2014/09/16 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
2015年助残日活动总结
2015/03/27 职场文书
2015年推普周活动方案
2015/05/06 职场文书
会议主持人开场白台词
2015/05/28 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
2015大一新生军训感言
2015/08/01 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
创业计划书之酒吧
2019/12/02 职场文书