#下载区
# 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.改进:添加歌单列表)相关推荐

  1. Android制作简易的音乐播放器和视频播放器

    文章目录 制作简易的音乐播放器和视频播放器 播放多媒体文件 播放音频 MediaPlayer的工作流程 项目示例 播放视频 项目示例 制作简易的音乐播放器和视频播放器 播放多媒体文件 Android在 ...

  2. 【脚本项目源码】Python制作多功能音乐播放器,打造专属你的音乐播放器

    前言 本文给大家分享的是如何通过利用Python实现多功能音乐播放器,废话不多直接开整~ 开发工具 Python版本: 3.6 相关模块: os模块 sys模块 time模块 random模块 PyQ ...

  3. web音乐播放器+后台歌曲,歌单管理

    项目地址 https://github.com/sevenyoungairye/web_music_palyer 技术点 - 基于h5, css3, js, bootstarp, jquery,- 后 ...

  4. python如何自制音乐软件_70行python代码制作一款简易的音乐播放器!

    今天整理了以前的python作业代码,发现了一些有趣的小东西,比如下面这个,大概70行代码制作一款简易的音乐播放器. install some packages pip install pygame ...

  5. 使用python加PyQt5,利用QMediaPlayer写一个简易的音乐播放器(进度条拖动,音量改变,播放停止切换,歌曲列表))

    当你学习了python之后,总想着利用它去做些什么,无论是制作小工具还是小游戏,都是一种锻炼. 那么,利用python加上PyQt5写一个简单的音乐播放器,可能会是一个有趣的体验. 下面我会分享一下如 ...

  6. Python:通过网络爬虫实现一个简易控制台音乐播放器

    hello,大家好,我是wangzirui32,今天我们来学习如何通过网络爬虫实现一个简易控制台音乐播放器,开始学习吧! 1. 项目结构及库准备 app.py为项目入口程序,download.py为音 ...

  7. [转]Python实现多功能音乐播放器

    前言 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 import time import pygamefile ...

  8. Python实现多功能音乐播放器

    前言 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 import time import pygamefile ...

  9. html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器

    一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...

最新文章

  1. Servlet、MySQL中文乱码
  2. 2018年十大云宕机事故盘点:主流无一幸免!
  3. 手写简版spring --3--对象实例化策略
  4. ie6不支持png图片的解决办法
  5. 信号回勾产生的原因_为什么照片放大会有噪点?产生噪点的4个因素,来了解一下...
  6. RED-Net神经网络
  7. Android设备运用Clockworkmod Recovery恢复模式安装定制的Rom
  8. 金融分析python和r语言比较_金融领域R语言对比python
  9. 多线程支持断点续传的文件传输--(摘自大富翁)
  10. 【今日CV 计算机视觉论文速览 第133期】Wed, 19 Jun 2019
  11. java定义hashmap_Java用自定义的类型作为HashMap的key
  12. Cesium 视频融合,边缘模糊
  13. 中式红木装修——打造适合审美的居住空间
  14. 计算机原理74181芯片,利用SN74181芯片构成16位ALU及原理.ppt
  15. flink catalog 及dialect、数据转存分析
  16. C++ 头文件系列(set)
  17. 量子物理史话 第三章 火流星
  18. SiWave安装问题
  19. python项目分析报告_实战 | Python自动生成PPT分析报告
  20. GPC凝胶色谱理论和应用(二)

热门文章

  1. 给你30s,如何跟面试官讲清楚跳表
  2. C语言程序中的精度问题,c语言中float精度问题
  3. 数学建模学习笔记(7):相关系数
  4. Java jre的安装与卸载
  5. 少一些计较多_少一些计较多一些包容的说说
  6. 微信小程序遇到的问题
  7. 《Web实战指南》00:万维网之父:蒂姆·伯纳斯·李
  8. HDU 1011(星河战队 树形DP)
  9. android 外挂字幕接口
  10. FindBugs使用