python如何加载背景音乐,python音乐播放器
主要思想是用python播放音乐,监控鼠标操作得到每一句歌词对应的时间信息,最后得到带有时间轴信息的歌词文件。有道笔记这个工具主要是用来从无法选择文字复制内容的网站快速获取歌词。这部分应该换成爬虫。
简介及安装
1.获取音乐歌词文件
由于我从oricon获得歌词,例如乃木坂46第三初级中学的《》,歌曲发布后可以在这个网站上找到歌词。以这首歌为例。歌词的地址是1保存为lrc.txt以备后用:
2.用python播放音乐,点击时间轴
在这里,python的pygame库用于播放音乐。播放音乐时,监控鼠标的点击。一旦鼠标点击,则认为此时出现了新的歌词,并在时间轴上做了标记。
具体代码如下。如果要使用,请替换相应的文件。
# -*-编码:utf-8 -*-
filename=skydiving.mp3
bg1=ikoma.jpg
bg2=reika.jpg
Bg3=诚实的羽毛. jpg
b=C.jpg
导入系统
导入操作系统
导入pygame
从pygame.locals导入*
定义格式时间(t):
如果t/10==0:
返回“0”字符串(t)
否则:
返回字符串(t)
定义MS2时间(t):
m=t/60000
t=t`000
s=t/1000
t=t00
min sec=format time(m): format time(s)。str(t)
返回minsec
def播放音乐():
rect=(0,0)
n=0
m=3
pygame.init()
screen=py game . display . set _ mode((300,360),0,32)
#创建了一个窗口
pygame . display . Set _ caption( Nogizaka 46 )#设置窗口标题
background=py game . transform . scale(py game . image . load(bg1),(300,360))
icon=pygame.image.load(b)
pygame.display.set_icon(icon)
#pygame.mixer.init()
pygame.mixer.music.load(文件名)
pygame.mixer.music.play()
为真时:#主循环sds
对于pygame.event.get()中的事件:
如果event.type==QUIT:
pygame.quit()
sys.exit()
pressed _ keys=py game . key . get _ pressed()
if event.type==pygame。鼠标按钮按下:
n=1
如果n%m==0:
background=py game . transform . scale(py game . image . load(bg1),(300,360))
rect=background.get_rect()
screen=py game . display . set _ mode((rect . width,rect.height))
如果n%m==1:
background=py game . transform . scale(py game . image . load(bg2),(300,360))
rect=background.get_rect()
screen=py game . display . set _ mode((rect . width,rect.height))
如果n%m==2:
background=py game . transform . scale(py game . image . load(bg3),(300,360))
rect=background.get_rect()
screen=py game . display . set _ mode((rect . width,rect.height))
t=py game . mixer . music . get _ pos()# return ms
minsec=ms2time(t)
用open(time.txt , a )作为f:
f.write([ minsec ] \n )
screen.blit(背景,矩形)
pygame.display.update()
if _ _ name _ _== _ _ honest feather n _ _ :
播放音乐()
运行时,显示的窗口会显示图片,对应代码中bg1、bg2、bg3变量指向的图片。播放界面如下图,音乐开始播放。
在界面中点击鼠标,在代码
if event.type==pygame。鼠标按下
会监控并记录点击时间对应的音乐的播放时间,并记录在time.txt文件中。每次点击后,小姐姐玩界面的画面都会改变~
音乐播放后,记录下每首歌词对应的时间。根据歌词的分段对time.txt做一个简单的修改。修改后的两个文件如下图,左右线一一对应。3.合并歌词和时间文件。
这个比较简单。逐行读取两个txt文件,并写入一个新文件。因为文件中的行数是未知的,所以这里使用的方法是先获取行数,然后依次读取。当然,因为这部分比较简单,所以不用这种方式也能实现。
f1=打开( lrc.txt , r )
linenum=len(f1.readlines())
f1.close()
f1=打开( lrc.txt , r )
f2=打开( time.txt , r )
对于范围内的I(linenum):
尝试:
lrc=f1.readline()
time=f2.readline()
line=time.strip() lrc
用open(final.txt , a )作为f:
f .写(行)
除了:
破裂
f1.close()
f2.close()
F.close()最后就可以得到带时间轴的歌词文件了。
虽然有些玩家好像也有自己类似的功能,但是写一些python来实现这些小功能还是挺有意思的。
4.有点怀疑
歌词做好之后校对的时候有一个问题:比如3分20秒有一句歌词A,从头开始放。它出现在音乐中3分20秒。但是,如果在播放时跳到3分10秒,而不是从头开始,歌词A就会出现在3分25秒。不知道是什么原因。如果有大神知道,希望大家给点意见。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。