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数据结构之二叉树的统计与转换实例
Apr 29 Python
详解Python的单元测试
Apr 28 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
python实现自动解数独小程序
Jan 21 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python 类之间的参数传递方式
Dec 20 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
Python自动创建Excel并获取内容
Sep 16 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
使用Python拟合函数曲线
Apr 14 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
Python yield与实现方法代码分析
2018/02/06 Python
Python异常处理操作实例详解
2018/08/28 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
在python中修改.properties文件的操作
2020/04/08 Python
Python如何发送与接收大型数组
2020/08/07 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
MySQL中in和exists区别详解
2021/06/03 MySQL