各位用户为了找寻关于Python实现在线音乐播放器的资料费劲了很多周折。这里教程网为您整理了关于Python实现在线音乐播放器的相关资料,仅供查阅,以下为您介绍关于Python实现在线音乐播放器的详细内容
最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过requests模块,get请求将数据获得,使用Json模块进行数据的解析,最终使用python的mp3play库进行对音乐的在线播放,以下是该程序的源码。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88#!/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()
程序运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。