完整实例项目:使用python自制音乐播放器~

今天使用python的pygame等模块制作了一个简单的音乐播放器,实现了很多好玩的功能,在这里和大家一起分享!这是笔者的第二篇博客,也是正式的完成一个小项目,希望获得大家的支持~

播放器可以实现的功能:

暂停、继续播放、调整声音大小、上一曲&下一曲调整、无限制追加音乐(但需要下载音乐文件到本地)、直接根据曲库展示的歌曲序号进行点歌

项目python代码:

from time import sleep # 这里可以不用,sleep表示先不执行代码段的时间
import pygame
import os
#导入pygame模块
import time
#导入时间模块
pygame.mixer.init()
#初始化音频部分
def musiclujing():
#将曲目的路径存放在列表中
    path = []
    name = []
    musicfolderpath = r"../happy_birthday/资源/music"  #文件夹目录
    files= os.listdir(musicfolderpath)  #得到文件夹下的所有文件名称
    for file in files: #遍历文件夹
        if not os.path.isdir(file): #判断是否是文件夹,不是文件夹才打开
            temppath = musicfolderpath + "/" + file
            path.append(temppath)
            name.append(file)
    return path,name

def welcome():
    print('''
            ************************************************
            *       欢迎来到微笑的萝卜出品的专属音乐播放器    *
            *                lly出品,必属精品              *
            ************************************************
    ''')
    sleep(3)
    pygame.mixer.music.load(musicpath[0])  #载入待播放的音乐文件,需要提前下载到本地文件
    pygame.mixer.music.play(loops=2)           #开始播放音乐流,默认无操作下循环次数为2次
    pygame.mixer.music.set_volume(0.3)

def musicselect(path, name):
    i = 0
    j = 0.3
    while 1:
        print('''
        ************************************************
        *   从键盘上键入以下字符可以执行对应命令,大小写均可:   *
                      A/a:暂停     Q/q:播放                
                      S/s:下一曲   W/w:上一曲           
                     E/e:增大音量  D/d:减少音量          
                          空格:退出程序                 
        *        直接输入数字: 直接播放对应序号的歌曲        *
        ------------------------------------------------               
        ''')
        print("                    曲库的歌曲列表为:")
        for r in range(len(name)):
            print("                    ",end = "")
            print(str(r) + ":" + name[r])
        print("        ************************************************")

        print("当前正在播放的是:",name[i])
        n = input('请输入下一步操作哦:')
        if n == "q" or n == "Q":
            print('继续播放音乐')
            #使用文件名作为参数载入音乐 ,音乐可以是ogg、mp3等格式。载入的音乐不会全部放到内容中,而是以流的形式播放的,即在播放的时候才会一点点从文件中读取。
            #播放载入的音乐。该函数立即返回,音乐播放在后台进行。
            pygame.mixer.music.unpause()
        elif n == "a" or n == "A":
            #暂停播放
            pygame.mixer.music.pause()
        elif n == "s" or n == "S":
            i += 1
            pygame.mixer.music.load(path[i])
            pygame.mixer.music.set_endevent(pygame.constants.USEREVENT)  # 音乐结束事件:可供大家继续编辑,本文中没有用到哦
            pygame.mixer.music.play(loops=2)
        elif n == "w" or n == "W":
            i -= 1
            pygame.mixer.music.load(path[i])
            pygame.mixer.music.set_endevent(pygame.constants.USEREVENT)  # 音乐结束事件
            pygame.mixer.music.play(loops = 2)
        elif n == "e" or n == "E":
            j += 0.1
            pygame.mixer.music.set_volume(j)
        elif n == "d" or n == "D":
            j -= 0.1
            pygame.mixer.music.set_volume(j)
        elif n == " ":
            print("程序结束!")
            return 1
        else:
            try:
                n = int(n)
                i = n
                pygame.mixer.music.load(path[i])
                pygame.mixer.music.set_endevent(pygame.constants.USEREVENT)  # 音乐结束事件
                pygame.mixer.music.play(loops=2)
            except:
                print("输入的指令无效,请重新输入!若要退出,请输入空格后确定")
                continue
    # -------- 主循环 -----------
    #设置这里以保证如果音乐播放完毕,则自动播放下一首音乐


musicpath, musicname = musiclujing()
welcome()
musicselect(musicpath, musicname)

注释:

# pygame.mixer.music.set_endevent 这一语句本文中并无实际意义,目的是想为那些在此音乐播放器上继续改进的同学提供参考的使用位置,可忽略不写~

项目运行效果截图:

笔者把此项目单独打包成了exe(用了pyinstaller库~),执行效果如下:

大功告成!

猜你喜欢

转载自blog.csdn.net/weixin_46970693/article/details/126443389
今日推荐