Python实现在线音乐播放器


Posted in Python onMarch 03, 2017

最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过requests模块,get请求将数据获得,使用Json模块进行数据的解析,最终使用python的mp3play库进行对音乐的在线播放,以下是该程序的源码。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2016-12-28 21:03:21
# @Author : Donoy (172829352@qq.com)
# @Link : http://www.cnblogs.com/Donoy/
# @Version : $Id$

from Tkinter import *
import tkMessageBox
import requests
import json
import urllib
import mp3play
import threading
import time

def center_window(root, width, height): 
 screenwidth = root.winfo_screenwidth() 
 screenheight = root.winfo_screenheight() 
 size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2) 
 root.geometry(size) 

def createWnd():
 global root
 global listBox
 global text
 
 root = Tk()
 root.title('-----DMPlayer------来自网易云音乐-----')

 center_window(root, 440, 250)

 root['background'] = '#C7EDCC'
 
 text = Entry(font='宋体',width=36)
 text.pack()
 button = Button(root,text='搜索',width=18,fg='red',background='#CDCDC1',command=searchM).pack()
 
 listBox = Listbox(root, height=12,width=72,background='#C7EDCC')
 listBox.bind('<Double-Button-1>',play)
 listBox.pack()

 root.mainloop()

def searchM():
 global m_List 
 itemCount = 50

 if not text.get():
 tkMessageBox.showinfo('温馨提示','您可以输入以下内容进行搜索\n1.歌曲名\n2.歌手名\n3.部分歌词')
 return

 #获得输入的歌名
 url = 'http://s.music.163.com/search/get/?type=1&s=%s&limit=%s'%(text.get(),itemCount)
 
 #get请求
 header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'}
 html = requests.get(url,header)
 data = json.loads(html.text)
 m_List = []

 try:
 listBox.delete(0,listBox.size())
 for MusicData in data['result']['songs']:
  listBox.insert(END,MusicData['name'] +'------'+'(' +MusicData['artists'][0]['name'] + ')')
  m_List.append(MusicData['audio'])
 except Exception as e: 
 tkMessageBox.showinfo('温馨提示','查询过程出现错误,请重试')
 #print '查询过程出现错误,请重试'
 
 
def play(args):
 try:
 global mp3
 sy = listBox.curselection()[0]
 mp3 = mp3play.load(m_List[int(sy)])
 mp3.play()
 #time.sleep(1000)
 except Exception as e:
 pass

 
def main():
 createWnd()


if __name__ == '__main__':
 main()

程序运行结果:

Python实现在线音乐播放器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现kMeans算法
Dec 21 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
python函数的作用域及关键字详解
Aug 20 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
pytorch构建多模型实例
Jan 15 Python
Python with标签使用方法解析
Jan 17 Python
python如何把字符串类型list转换成list
Feb 18 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
python开发简易版在线音乐播放器
Mar 03 #Python
详解python中requirements.txt的一切
Mar 03 #Python
python中异常捕获方法详解
Mar 03 #Python
python利用不到一百行代码实现一个小siri
Mar 02 #Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 #Python
Python正则表达式教程之二:捕获篇
Mar 02 #Python
Python正则表达式教程之一:基础篇
Mar 02 #Python
You might like
php输入流php://input使用浅析
2014/09/02 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python中如何引入第三方模块
2020/05/27 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
python如何调用百度识图api
2020/09/29 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
毕业生自荐信的主要内容
2013/10/29 职场文书
大学毕业生简单自荐信
2013/11/05 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
国庆宣传标语
2014/06/30 职场文书
开除员工通知
2015/04/22 职场文书
重阳节简报
2015/07/20 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python