Python实现基于Tkinter的网易云音乐在线播放器
本文介绍了一个使用Python开发的简易在线音乐播放器项目。通过Tkinter构建图形界面,利用requests模块获取网易云音乐接口数据,结合json解析与mp3play库实现歌曲搜索与在线播放功能。
Python在线音乐播放器开发概述
近期在学习Python的过程中,我对爬虫技术产生了浓厚兴趣,因此开发了一个简单的爬虫项目。该项目使用Python内置的Tkinter库构建了图形用户界面,操作体验较为便捷。音乐数据源来自网易云音乐的公开接口,程序通过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()
运行结果展示
程序运行效果展示如下:

以上就是本文的全部内容,希望能为读者提供有益参考,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













