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与shell的3种交互方式介绍
Apr 11 Python
Django框架中方法的访问和查找
Jul 15 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python制作刷网页流量工具
Apr 23 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python内置函数delattr的具体用法
Nov 23 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
python math模块的基本使用教程
Jan 16 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开发文件系统实例讲解
2006/10/09 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
四个PHP非常实用的功能
2015/09/29 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
实例解析php的数据类型
2018/10/24 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
2019/08/05 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
FCK调用方法..
2006/12/21 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
JavaScript常用事件介绍
2019/01/21 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python中的变量和作用域详解
2016/07/13 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
如何基于Python实现自动扫雷
2020/01/06 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
清扬洗发水广告词
2014/03/14 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL