python制作简易的音乐播放器(5.改进:添加歌单列表)
#下载区
# coding:utf-8
import requests
import json
import urllib.requestheaders={'Host':'music.bbbbbb.me',
'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:65.0) Gecko/20100101 Firefox/65.0',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding':'gzip, deflate',
'Referer':'http://music.bbbbbb.me/',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With':'XMLHttpRequest',
'Content-Length':'47',
'Connection':'keep-alive',
'Pragma':'no-cache',
'Cache-Control':'no-cache'}def search_Music(mname):global headersdata={'input':mname,'filter':'name','type':'netease','page':'1'}url = 'http://music.bbbbbb.me/'wbdata = requests.post(url,headers=headers,data=data).textdata = json.loads(wbdata)return datadef ShowList(data):i=1for n in data['data']: author = n['author'] url = n['url'] print("编号:",i,"歌手:",author,"下载地址:",url)i=i+1def DownLoad(data,mname,Number): try:url=data['data'][Number-1]['url']singer=data['data'][Number-1]['author']base="G:/3.Google网页下载文件存放处/音乐/歌曲/周杰伦/"MusicName=singer+" - "+mname+".mp3"filepath=base+MusicNameurllib.request.urlretrieve(url,filepath)#添加新歌global SongNameSongName.append(MusicName)SongPath.append(filepath)filepathprint("下载完成") return Trueexcept:print("下载失败")return False#---------------------------------------------------------------------------------------------
import tkinter as tk
from tkinter import *import os
import random
import pygame
from mutagen.mp3 import MP3import time
import threading
from threading import *import tkinter.filedialog
import tkinter.messagebox
import tkinter.scrolledtext#----------------------一、音乐文本读取--------------------
filePath = 'G:\\3.Google网页下载文件存放处\音乐\歌曲\周杰伦\\'
SongName=os.listdir(filePath)
SongPath =[filePath+i for i in SongName]Number=0
volume=0.3Switch=True#----------------------二、功能区--------------------------------------#--------------------------1.基本的功能----------------------------#4.增大音量
def fun4():global volumevolume+=0.1if volume>1:volume=1pygame.mixer.music.set_volume(volume)#5.降低音量
def fun5():global volumevolume-=0.1if volume<0:volume=0pygame.mixer.music.set_volume(volume) #1.上一曲
def fun1():if model_value%3==2:random_play()else:global NumberNumber=Number-1if Number<0:Number=len(SongPath)-1pygame.mixer.music.load(SongPath[Number]) pygame.mixer.music.play(0)entry_var.set(SongName[Number])pass#2.播放/暂停
def fun2():global Numberglobal Switchpygame.mixer.music.set_volume(volume) if Switch==True:pygame.mixer.music.pause()condition.set("播放")Switch=Falseelse:pygame.mixer.music.unpause() condition.set("暂停")Switch=True pass#3.下一曲
def fun3():if model_value%3==2:random_play()else:global NumberNumber=Number+1if Number>len(SongPath)-1:Number=0pygame.mixer.music.load(SongPath[Number])pygame.mixer.music.play(0)entry_var.set(SongName[Number])pass #----------------------------------2.下载功能-------------------------------------- #1.搜索
def Search():txtCon.delete(0.0,tk.END) mname=en3.get()if mname!="":data=search_Music(mname)i=1for n in data['data']: author = n['author'] content="编号:"+str(i)+"歌手:"+author+"\n"txtCon.insert(tkinter.INSERT,content)i=i+1#2.下载
def DownLoad_music():mname=en3.get()Number=int(en4.get())data=search_Music(mname)ShowList(data)boolean=DownLoad(data,mname,Number)if boolean==True: #2.验证tk.messagebox.showinfo(message="下载成功")#弹出提示框else:tk.messagebox.showerror(message="下载失败")#弹出错误框#---------------------------3.播放模式---------------------------------#---------------一.界面变化------------
def play_model_set():global model_valuemodel_value=model_value+1if model_value%3==0:model.set("顺序")elif model_value%3==1:model.set("单曲") elif model_value%3==2:model.set("随机") #--------------二、功能变换----------------#---------1.播放模式-----------------------
def sequential_play():global NumberNumber=Number+1if Number>len(SongPath)-1:Number=0pygame.mixer.music.load(SongPath[Number])entry_var.set(SongName[Number])pygame.mixer.music.play(0)passdef cycle_play():global Numberpygame.mixer.music.load(SongPath[Number])entry_var.set(SongName[Number])pygame.mixer.music.play(0)passdef random_play():global NumberNumber=random.randint(0,len(SongPath)-1)pygame.mixer.music.load(SongPath[Number])entry_var.set(SongName[Number])pygame.mixer.music.play(0)pass#-----------2.模式切换------------------
def play_model():global model_valueif model_value%3==0:sequential_play()elif model_value%3==1:cycle_play() elif model_value%3==2:random_play() #----------3.播放类------------------------------------
class Play_Model(threading.Thread):def __init__(self):threading.Thread.__init__(self)passdef run(self):while 1:state=pygame.mixer.music.get_busy() if state==0:play_model()time.sleep(1)#--------------------------3,音乐播放滑条-------------------------------------------------- def os(time) :if time<10:return "0"+str(time)else:return str(time)def clock(seconds):if seconds>=60:minutes=seconds//60seconds=seconds-minutes*60return os(minutes)+":"+os(seconds)else:return "00:"+os(seconds)
#------------------------------------------------------------------------------------------------ set_time=0
Inter_executeCount=0
Outer_executeCount=0class Music_PlaySlide(threading.Thread):def __init__(self):threading.Thread.__init__(self)passdef run(self):global Inter_executeCountglobal Outer_executeCountglobal set_time global Get_timeLastChange_time=0audio = MP3(SongPath[Number]) Song_length=audio.info.length//1 while 1: if Inter_executeCount!=Outer_executeCount:LastChange_time=Get_timeInter_executeCount=Outer_executeCountGet_time=pygame.mixer.music.get_pos()//1000if Get_time==0:audio = MP3(SongPath[Number]) Song_length=audio.info.length//1 LastChange_time=0set_time=0print("当前时间",Get_time) Current_time1=Get_time+set_time-LastChange_timeseconds=int(Current_time1)current_time=clock(seconds)entry_var1.set(current_time) print("获取时间",Current_time1)rate=(Current_time1/Song_length)Current_option=100*rate value.set(str(Current_option))time.sleep(1)#-----------------------三、面板区----------------------------------------- #---------------一、窗口---------------------
root=tk.Tk()
root.title('音乐播放器')
#root["height"]=400
#root["width"]=300
root['bg'] = 'DimGray'
root.geometry('480x400')
root.resizable(0,0)#1.文本框
#lal=tk.Label(root,text="欢迎使用音乐播放器")
#lal.place(x=80,y=30,width=140,height=15) #---------------二、显示正在播放的歌曲--------------------------entry_var = tk.StringVar()
entry_var.set(SongName[Number])
en1=tk.Entry(root,textvariable=entry_var,justify=CENTER,state=NORMAL)
en1.place(x=50,y=70,width=210,height=15) entry_var1 = tk.StringVar()
entry_var1.set('00:00')
en2=tk.Entry(root,textvariable=entry_var1,justify=CENTER)
en2.place(x=5,y=30,width=70,height=15) #---------------三、音量调节----------------------------b3=tk.Button(root,text="+",command=fun4)
b3.place(x=50,y=90)b3=tk.Button(root,text="-",command=fun5)
b3.place(x=65,y=90)#---------------四、切换歌曲|暂停播放----------------------------------
#1.上一曲按钮
b1=tk.Button(root,text="上一曲",command=fun1)
b1.place(x=80,y=90)#2.播放按钮
condition = tk.StringVar()
condition.set("暂停")b1=tk.Button(root,textvariable=condition,command=fun2) #定义:按钮名称+按钮功能
b1.place(x=130,y=90) #定义:按钮大小+按钮位置#3.下一曲按钮
b3=tk.Button(root,text="下一曲",command=fun3)
b3.place(x=167,y=90)#4.播放模式
model = tk.StringVar()
model.set("顺序")
model_value=0
b4=tk.Button(root,textvariable=model,command=play_model_set)
b4.place(x=225,y=90)#--------------五、下载功能------------------------------#1.搜索
en3=tk.Entry(root,justify=CENTER,state=NORMAL)
en3.place(x=50,y=150,width=80,height=30) b1=tk.Button(root,text="搜索",command=Search)
b1.place(x=135,y=150)#---------------------------------------------------------#2.下载
en4=tk.Entry(root,justify=CENTER,state=NORMAL)
en4.place(x=180,y=150,width=35,height=30) b1=tk.Button(root,text="下载",command=DownLoad_music)
b1.place(x=225,y=150)#3显示下载内容
txtCon=tk.scrolledtext.ScrolledText(root,wrap=tk.WORD)
#txtCon.pack(fill=tk.BOTH)
txtCon.place(x=50,y=200,width=210,height=180)#------------------------------六、定义滑动条-------------------------def slide(text):global set_timeglobal Outer_executeCountaudio = MP3(SongPath[Number]) Song_length=audio.info.length//1Get_Length=int(float(value.get()))rate=Get_Length/100;set_time=Song_length*ratepygame.mixer.music.rewind()pygame.mixer.music.set_pos(set_time)Outer_executeCount+=1print("当前时间",pygame.mixer.music.get_pos()//1000)value = StringVar()
value.set("0")
Scale(root,from_=0,to=100,orient=HORIZONTAL,length=480,show=0,variable=value,resolution=0.01,command=slide).pack()#-----------------------------------七、定义音乐列表----------------------------------------------#1.界面-------------------------
scrollbar1 = Scrollbar(root)
scrollbar1.pack(side=RIGHT, fill=Y)listbox1 = Listbox(root,height=20,width=22)
listbox1["yscrollcommand"] = scrollbar1.setlistbox1.pack(side=RIGHT)
scrollbar1["command"] = listbox1.yview#2.功能--------------------------def Select(event):global Numbersongname=listbox1.get(listbox1.curselection()) Number=int(songname.split(".")[0])-1print(Number)pygame.mixer.music.load(SongPath[Number]) pygame.mixer.music.play(0)entry_var.set(SongName[Number])def listbox_Show():num=1 for i in SongName:Num=str(num)+"."listbox1.insert(END,Num+i)num+=1 listbox1.bind('<Double-Button-1>',Select)
listbox_Show()#------------------------------------------------------------------#1.初始播放------------------------------
def init_play():pygame.mixer.init()pygame.mixer.music.load(SongPath[Number]) pygame.mixer.music.play(0)play_model()init_play()
#--------------线程区--------------------------#播放模式
t1=Play_Model()
t1.start()#2.播放进度条
t2=Music_PlaySlide()
t2.start()#3.界面主线程
root.mainloop()
#---------------------------------------
pygame.mixer.music.stop()
python制作简易的音乐播放器(5.改进:添加歌单列表)相关推荐
- Android制作简易的音乐播放器和视频播放器
文章目录 制作简易的音乐播放器和视频播放器 播放多媒体文件 播放音频 MediaPlayer的工作流程 项目示例 播放视频 项目示例 制作简易的音乐播放器和视频播放器 播放多媒体文件 Android在 ...
- 【脚本项目源码】Python制作多功能音乐播放器,打造专属你的音乐播放器
前言 本文给大家分享的是如何通过利用Python实现多功能音乐播放器,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: os模块 sys模块 time模块 random模块 PyQ ...
- web音乐播放器+后台歌曲,歌单管理
项目地址 https://github.com/sevenyoungairye/web_music_palyer 技术点 - 基于h5, css3, js, bootstarp, jquery,- 后 ...
- python如何自制音乐软件_70行python代码制作一款简易的音乐播放器!
今天整理了以前的python作业代码,发现了一些有趣的小东西,比如下面这个,大概70行代码制作一款简易的音乐播放器. install some packages pip install pygame ...
- 使用python加PyQt5,利用QMediaPlayer写一个简易的音乐播放器(进度条拖动,音量改变,播放停止切换,歌曲列表))
当你学习了python之后,总想着利用它去做些什么,无论是制作小工具还是小游戏,都是一种锻炼. 那么,利用python加上PyQt5写一个简单的音乐播放器,可能会是一个有趣的体验. 下面我会分享一下如 ...
- Python:通过网络爬虫实现一个简易控制台音乐播放器
hello,大家好,我是wangzirui32,今天我们来学习如何通过网络爬虫实现一个简易控制台音乐播放器,开始学习吧! 1. 项目结构及库准备 app.py为项目入口程序,download.py为音 ...
- [转]Python实现多功能音乐播放器
前言 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 import time import pygamefile ...
- Python实现多功能音乐播放器
前言 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 import time import pygamefile ...
- html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器
一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...
最新文章
- Servlet、MySQL中文乱码
- 2018年十大云宕机事故盘点:主流无一幸免!
- 手写简版spring --3--对象实例化策略
- ie6不支持png图片的解决办法
- 信号回勾产生的原因_为什么照片放大会有噪点?产生噪点的4个因素,来了解一下...
- RED-Net神经网络
- Android设备运用Clockworkmod Recovery恢复模式安装定制的Rom
- 金融分析python和r语言比较_金融领域R语言对比python
- 多线程支持断点续传的文件传输--(摘自大富翁)
- 【今日CV 计算机视觉论文速览 第133期】Wed, 19 Jun 2019
- java定义hashmap_Java用自定义的类型作为HashMap的key
- Cesium 视频融合,边缘模糊
- 中式红木装修——打造适合审美的居住空间
- 计算机原理74181芯片,利用SN74181芯片构成16位ALU及原理.ppt
- flink catalog 及dialect、数据转存分析
- C++ 头文件系列(set)
- 量子物理史话 第三章 火流星
- SiWave安装问题
- python项目分析报告_实战 | Python自动生成PPT分析报告
- GPC凝胶色谱理论和应用(二)