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中的一些高级编程技巧
Apr 02 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
Apr 10 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Pandas 同元素多列去重的实例
Jul 03 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
python日志模块logbook使用方法
Sep 19 Python
Python 解析简单的XML数据
Jul 24 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Django如何继承AbstractUser扩展字段
Nov 27 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
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
linux下编译安装memcached服务
2014/08/03 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
selenium如何定位span元素的实现
2021/01/13 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
2014村务公开实施方案
2014/02/25 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
借款民事起诉状范文
2015/05/19 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
为自己工作观后感
2015/06/11 职场文书
MySQL之DML语言
2021/04/05 MySQL
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL