Spaces:
Running
Running
import re | |
def timeformat_srt(time): | |
hours = time//3600 | |
minutes = (time - hours*3600)//60 | |
seconds = time - hours*3600 - minutes*60 | |
milliseconds = (time - int(time))*1000 | |
return f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d},{int(milliseconds):03d}" | |
def timeformat_vtt(time): | |
hours = time//3600 | |
minutes = (time - hours*3600)//60 | |
seconds = time - hours*3600 - minutes*60 | |
milliseconds = (time - int(time))*1000 | |
return f"{int(hours):02d}:{int(minutes):02d}:{int(seconds):02d}.{int(milliseconds):03d}" | |
def write_srt(subtitle,output_file): | |
with open(output_file, 'w', encoding='utf-8') as f: | |
f.write(subtitle) | |
def write_vtt(subtitle,output_file): | |
with open(output_file, 'w', encoding='utf-8') as f: | |
f.write(subtitle) | |
def get_srt(segments): | |
output = "" | |
for i, segment in enumerate(segments): | |
output += f"{i+1}\n" | |
output += f"{timeformat_srt(segment['start'])} --> {timeformat_srt(segment['end'])}\n" | |
output += f"{segment['text']}\n\n" | |
return output | |
def get_vtt(segments): | |
output = "WebVTT\n\n" | |
for i, segment in enumerate(segments): | |
output += f"{i+1}\n" | |
output += f"{timeformat_vtt(segment['start'])} --> {timeformat_vtt(segment['end'])}\n" | |
output += f"{segment['text']}\n\n" | |
return output | |
def safe_filename(name): | |
INVALID_FILENAME_CHARS = r'[<>:"/\\|?*\x00-\x1f]' | |
return re.sub(INVALID_FILENAME_CHARS, '_', name) |