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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python编写Windows Service服务程序
Jan 04 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python交易记录整合交易类详解
Jul 03 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
Python基于pyjnius库实现访问java类
Jul 31 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
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
php压缩文件夹最新版
2018/07/18 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
input框中的name和id的区别
2016/11/16 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
党员思想汇报范文
2013/12/30 职场文书
办理护照介绍信
2014/01/16 职场文书
《童年》教学反思
2014/02/18 职场文书
奠基仪式主持词
2014/03/20 职场文书
公司委托书格式范文
2014/04/04 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
2015年敬老院工作总结
2015/05/18 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
初中数学教学反思范文
2016/02/17 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript