Added script to update timestamps.
This commit is contained in:
		
							parent
							
								
									d4a3358f3c
								
							
						
					
					
						commit
						fbf4b17312
					
				
							
								
								
									
										50
									
								
								scripts/update-subs.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								scripts/update-subs.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | 
 | ||||||
|  | import re | ||||||
|  | import sys | ||||||
|  | import argparse | ||||||
|  | 
 | ||||||
|  | def offset_timestamp(timestamp, offset): | ||||||
|  |     hours, minutes, seconds, microseconds = map(float, re.split('[:.]', timestamp)) | ||||||
|  |     total_seconds = hours * 3600 \ | ||||||
|  |         + minutes * 60 \ | ||||||
|  |         + seconds  \ | ||||||
|  |         + (microseconds * 0.001) \ | ||||||
|  |         + offset | ||||||
|  |     new_hours = int(total_seconds // 3600) | ||||||
|  |     new_minutes = int((total_seconds % 3600) // 60) | ||||||
|  |     new_seconds = total_seconds % 60 | ||||||
|  |     return f"{new_hours:02}:{new_minutes:02}:{new_seconds:.3f}" | ||||||
|  | 
 | ||||||
|  | def update_webvtt(file_path, offset): | ||||||
|  |     with open(file_path, 'r', encoding='utf-8') as file: | ||||||
|  |         lines = file.readlines() | ||||||
|  | 
 | ||||||
|  |     updated_lines = [] | ||||||
|  |     for line in lines: | ||||||
|  |         ts = line[:line.find("align")] | ||||||
|  |         if '-->' in ts: | ||||||
|  |             start, end = ts.split(' --> ') | ||||||
|  |             updated_start = offset_timestamp(start.strip(), offset) | ||||||
|  |             updated_end = offset_timestamp(end.strip(), offset) | ||||||
|  |             updated_lines.append(f"{updated_start} --> {updated_end}\n") | ||||||
|  |         else: | ||||||
|  |             updated_lines.append(line) | ||||||
|  | 
 | ||||||
|  |     with open('updated_' + file_path, 'w', encoding='utf-8') as file: | ||||||
|  |         file.writelines(updated_lines) | ||||||
|  | 
 | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     parser = argparse.ArgumentParser() | ||||||
|  |     parser.add_argument('input_file', type=str, help='The input file name') | ||||||
|  |     parser.add_argument('time_offset', type=str, help='The output file name') | ||||||
|  |     args = parser.parse_args() | ||||||
|  | 
 | ||||||
|  |     vtt = args.input_file | ||||||
|  |     t   = args.time_offset | ||||||
|  |      | ||||||
|  |     minutes, seconds = map(float, re.split('[:.]', t)) | ||||||
|  |     offset = minutes * 60 + seconds | ||||||
|  | 
 | ||||||
|  |     print("bumping timestamps in file %s by %f seconds" % (vtt,  offset)) | ||||||
|  |     update_webvtt(vtt, -offset)  # Use -40 to offset back by 40 seconds | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user