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写的Socks5协议代理服务器
Aug 06 Python
Python字符串处理之count()方法的使用
May 18 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
Python 读取位于包中的数据文件
Aug 07 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
python基础之匿名函数详解
Apr 21 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
Python入门教程之运算符与控制流
2016/08/17 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python生成词云的实现代码
2020/01/14 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
xml有哪些解析技术?区别是什么
2016/04/26 面试题
高级文秘工作总结的自我评价
2013/09/28 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
物理学专业自荐信
2014/06/11 职场文书
文明工地标语
2014/06/16 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
Golang 字符串的常见操作
2022/04/19 Golang