以音乐文件为例,对文件进行操作以及批量写入数据库
import pymysql
import re
import os
import librosa
class Music(object):
def __init__(self, path):
self.path = path
# 返回歌曲节拍总数 beats_time
def beats(self):
y, sr = librosa.load(self.path)
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
return tempo
# 得出歌曲时长times 获取到的时长单位为秒
def times(self):
long = librosa.get_duration(filename=self.path)
return int(long)
# 计算歌曲的bpm
def bpm(self):
beats_times = self.beats() / self.times() * 60
beats_times = int(beats_times * 4)
return beats_times
# 计算每拍的时间间隔
def interval(self):
times = 60 / self.bpm()
return times
# 获取音乐文件地址
def getfiles(path):
name = []
for dirpath, dirname, filenames in os.walk(path):
for i in range(len(filenames)):
filepath = os.path.join(dirpat