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对列表排序的方法实例分析
May 16 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
Numpy数组转置的两种实现方法
Apr 17 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
python实现维吉尼亚加密法
Mar 20 Python
Python高级特性 切片 迭代解析
Aug 23 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
Python 如何查找特定类型文件
Aug 17 Python
python urllib库的使用详解
Apr 13 Python
Python各协议下socket黏包问题原理
Apr 12 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的面向对象编程
2006/10/09 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
理解js回收机制通俗易懂版
2016/02/29 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
JavaScript实现多球运动效果
2020/09/07 Javascript
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
模具设计与制造专业求职信
2014/07/19 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
大学教师个人总结
2015/02/10 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript