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 发送邮件实例代码
Dec 22 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
Python3实现转换Image图片格式
Jun 21 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
python 函数内部修改外部变量的方法
Dec 18 Python
解决python有时候import不了当前的包问题
Aug 28 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Python类的继承super相关原理解析
Oct 22 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
详解Python牛顿插值法
May 11 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
其他功能
2006/10/09 PHP
PHP中图片等比缩放的实例
2013/03/24 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
PHP中list方法用法示例
2016/12/01 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python如何实现反向迭代
2018/03/20 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
this关键字的作用
2016/01/30 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
实习鉴定评语
2014/01/19 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
销售竞赛活动方案
2014/08/23 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
小学见习报告
2014/10/31 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers