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 相关文章推荐
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
解决PyCharm中光标变粗的问题
Aug 05 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
Python自动化之批量处理工作簿和工作表
Jun 03 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
flexigrid 参数说明
2010/11/23 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
python列表与元组详解实例
2013/11/01 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
深入浅析python 中的匿名函数
2018/05/21 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
九年级历史教学反思
2014/01/27 职场文书
教师求职信范文
2014/05/24 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript