scripto
This commit is contained in:
parent
2347a998c5
commit
dccdc96146
79
json2srt.py
Executable file
79
json2srt.py
Executable file
|
@ -0,0 +1,79 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# by Bomboclat
|
||||
|
||||
# for great justice!
|
||||
|
||||
import sys
|
||||
import json
|
||||
import argparse
|
||||
from datetime import timedelta
|
||||
|
||||
|
||||
def convert(seconds):
|
||||
sec_to_convert = seconds
|
||||
converted_sec = timedelta(seconds = sec_to_convert)
|
||||
dot = str(converted_sec).find('.')
|
||||
if dot != -1:
|
||||
timestamp = str(converted_sec)[:-3].replace('.',',')
|
||||
else:
|
||||
timestamp = str(converted_sec).replace('.',',')
|
||||
|
||||
return timestamp
|
||||
|
||||
|
||||
def write_file(srt, outfile):
|
||||
for d in srt:
|
||||
with open(outfile, 'a') as f:
|
||||
for value in d.values():
|
||||
f.write('%s\n' % (str(value)))
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def json_to_srt(f):
|
||||
'''
|
||||
SRT file format:
|
||||
|
||||
sequence number
|
||||
two-hash arrow to separate beginning and ending timecodes
|
||||
caption
|
||||
empty line
|
||||
|
||||
example:
|
||||
1
|
||||
00:00:00,000 --> 00:00:04,440
|
||||
here the subtitle caption string
|
||||
|
||||
2
|
||||
-8<--snip!--
|
||||
'''
|
||||
srt = []
|
||||
for d in f:
|
||||
sequence_number = f.index(d) + 1
|
||||
startstop = convert(float(d['start'])) + " --> " + convert(float(d['end']))
|
||||
#print(startstop)
|
||||
new_sub = { 'seq': sequence_number, 'startstop': startstop, 'caption': d['content'], 'newline': '' }
|
||||
srt.append(new_sub)
|
||||
|
||||
return srt
|
||||
|
||||
|
||||
def main():
|
||||
# parse command line options
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-i', '--infile', help='input file in json format', type=argparse.FileType('r'))
|
||||
parser.add_argument('-o', '--outfile', action='store', dest='outfile', help="Directs the output to a name of your choice")
|
||||
args = parser.parse_args()
|
||||
|
||||
# loads a list of dicts
|
||||
f = json.load(args.infile)
|
||||
outfile = args.outfile
|
||||
srt = json_to_srt(f)
|
||||
write_file(srt, outfile)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
Loading…
Reference in New Issue
Block a user