You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
5.8 KiB
137 lines
5.8 KiB
# -*- coding:utf-8 -*-
|
|
# python 3.10
|
|
import json,shutil,os
|
|
from pydub import AudioSegment#需要pip install pydub,并且安装ffpmeg,添加bin目录到环境变量的path里面
|
|
# 当前目录
|
|
curPath = os.getcwd()
|
|
|
|
# 定义要清空的文件夹路径
|
|
folder_path = curPath
|
|
|
|
# 删除文件夹下的所有文件
|
|
for file_name in os.listdir(folder_path):
|
|
file_path = os.path.join(folder_path, file_name)
|
|
print(file_path)
|
|
if os.path.isdir(file_path):
|
|
shutil.rmtree(file_path)
|
|
os.mkdir(file_path)
|
|
os.mkdir(file_path + '/' + 'sound')
|
|
|
|
# 文件夹下所有文件
|
|
def find_files(folder_path):
|
|
file_list = []
|
|
for filename in os.listdir(folder_path):
|
|
file_path = os.path.join(folder_path, filename)
|
|
if os.path.isfile(file_path):
|
|
file_list.append(file_path)
|
|
elif os.path.isdir(file_path):
|
|
file_list.extend(find_files(file_path))
|
|
return file_list
|
|
|
|
# 获取mp3下所有文件路径
|
|
wenJianPath = 'D:/project/xianyudefanji/remotesound/mp3'
|
|
fileAlls = find_files(wenJianPath)
|
|
print(fileAlls)
|
|
|
|
# 读取DH_1脚本文件寻找effectUrl,去匹配文件,复制文件
|
|
DH_Path = 'D:/project/xianyudefanji/assets/Scripts/DH'
|
|
DH_MaxNum = 5
|
|
for i in range(DH_MaxNum):
|
|
updated_lines = []
|
|
with open(DH_Path + '/' + 'DH_' + str(i+1) + '.ts', 'r', encoding = 'utf-8') as file:
|
|
lines = file.readlines()
|
|
for line in lines:
|
|
# 对每一行进行操作
|
|
# print(line)
|
|
# 查找语音字符串
|
|
aa = 'DH/' + 'DH_' + str(i+1) + '/sound/'
|
|
index = line.find(aa)
|
|
if index != -1:
|
|
_index = line.find(',')
|
|
findstr = line[index:_index-1]
|
|
findstr_arr = findstr.split('/')
|
|
print(findstr.split('/'))
|
|
# 查找对应语音的路径存不存在
|
|
isFind = False
|
|
_wenjian = ''
|
|
for wenjian in fileAlls:
|
|
if findstr_arr[len(findstr_arr)-1] in wenjian:
|
|
shutil.copy2(wenjian, curPath + '/' + 'DH_' + str(i+1) + '/sound/')
|
|
isFind = True
|
|
_wenjian = wenjian
|
|
break
|
|
if not isFind:
|
|
print(findstr,"未找到对应语音文件----------------")
|
|
updated_lines.append(line)
|
|
else:
|
|
# 替换音频时长
|
|
bb = 'delayTime:'
|
|
bb_index = line.find(bb)
|
|
if bb_index != -1:
|
|
_bb_index = line.find(',',bb_index)
|
|
bb_findstr = line[bb_index:_bb_index]
|
|
print(bb_findstr,"bb_findstr====")
|
|
audio = AudioSegment.from_file(_wenjian)
|
|
# 获取音频时长(毫秒)
|
|
duration_ms = len(audio)
|
|
# 转换为秒,保留两位小数
|
|
duration_sec = round(duration_ms / 1000,2)
|
|
print(f"音频时长:{duration_sec}秒")
|
|
updated_line = line.replace(bb_findstr, 'delayTime: '+ str(duration_sec))
|
|
updated_lines.append(updated_line)
|
|
else:
|
|
updated_lines.append(line)
|
|
with open(DH_Path + '/' + 'DH_' + str(i+1) + '.ts', 'w', encoding = 'utf-8') as file:
|
|
file.writelines(updated_lines)
|
|
|
|
# 读取其他脚本文件寻找effectUrl,去匹配文件,复制文件
|
|
genpath = 'D:/project/xianyudefanji/assets/Scripts/'
|
|
otherPath = [genpath + 'ZaoCanDian/ZaoCanDian.ts']
|
|
for i in range(len(otherPath)):
|
|
otherPathupdated_lines = []
|
|
with open(otherPath[i], 'r', encoding = 'utf-8') as file:
|
|
lines = file.readlines()
|
|
for line in lines:
|
|
# 对每一行进行操作
|
|
# print(line)
|
|
# 查找语音字符串
|
|
aa = 'DH/MainHall/sound/'
|
|
index = line.find(aa)
|
|
if index != -1:
|
|
_index = line.find(',')
|
|
findstr = line[index:_index-1]
|
|
findstr_arr = findstr.split('/')
|
|
print(findstr.split('/'))
|
|
# 查找对应语音的路径存不存在
|
|
isFind = False
|
|
_wenjian = ''
|
|
for wenjian in fileAlls:
|
|
if findstr_arr[len(findstr_arr)-1] in wenjian:
|
|
print(wenjian,curPath + '/' + 'MainHall/sound/')
|
|
shutil.copy2(wenjian, curPath + '/' + 'MainHall/sound/')
|
|
isFind = True
|
|
_wenjian = wenjian
|
|
break
|
|
if not isFind:
|
|
print(findstr,"未找到对应语音文件----------------")
|
|
otherPathupdated_lines.append(line)
|
|
else:
|
|
# 替换音频时长
|
|
bb = 'delayTime:'
|
|
bb_index = line.find(bb)
|
|
if bb_index != -1:
|
|
_bb_index = line.find(',',bb_index)
|
|
bb_findstr = line[bb_index:_bb_index]
|
|
print(bb_findstr,"bb_findstr====")
|
|
audio = AudioSegment.from_file(_wenjian)
|
|
# 获取音频时长(毫秒)
|
|
duration_ms = len(audio)
|
|
# 转换为秒,保留两位小数
|
|
duration_sec = round(duration_ms / 1000,2)
|
|
print(f"音频时长:{duration_sec}秒")
|
|
otherupdated_line = line.replace(bb_findstr, 'delayTime: '+ str(duration_sec))
|
|
otherPathupdated_lines.append(otherupdated_line)
|
|
else:
|
|
otherPathupdated_lines.append(line)
|
|
with open(otherPath[i], 'w', encoding = 'utf-8') as file:
|
|
file.writelines(otherPathupdated_lines) |