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制作爬虫抓取美女图
Jan 20 Python
Python操作MongoDB详解及实例
May 18 Python
如何在python中使用selenium的示例
Dec 26 Python
TensorFlow实现非线性支持向量机的实现方法
Apr 28 Python
flask中过滤器的使用详解
Aug 01 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP源码之explode使用说明
2011/08/05 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python判断完全平方数的方法
2018/11/13 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Python Process多进程实现过程
2019/10/22 Python
Python中私有属性的定义方式
2020/03/05 Python
python实现ping命令小程序
2020/12/28 Python
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
上班离岗检讨书
2014/01/27 职场文书
文字自荐书范文
2014/02/10 职场文书
优秀公益广告词大全
2014/03/19 职场文书
党员干部一句话承诺
2014/05/30 职场文书
高三霸气励志标语
2014/06/24 职场文书
毕业设计论文评语
2014/12/31 职场文书
北京故宫导游词
2015/01/31 职场文书
师范生见习自我总结
2015/06/23 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
centos7安装mysql5.7经验记录
2022/05/02 Servers
python开发人人对战的五子棋小游戏
2022/05/02 Python
springboot读取nacos配置文件
2022/05/20 Java/Android
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库