keep fcp and premier version
This commit is contained in:
parent
03101d00dd
commit
b43e9f64e3
2 changed files with 75 additions and 32 deletions
54
fcp2srt.py
54
fcp2srt.py
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/python3
|
||||
#!/usr/bin/env python
|
||||
from __future__ import division
|
||||
|
||||
import lxml
|
||||
import lxml.etree
|
||||
|
@ -12,42 +13,31 @@ target = '%s.srt' % os.path.splitext(source)[0]
|
|||
fps = 25
|
||||
data = []
|
||||
tree = lxml.etree.parse(source)
|
||||
'''
|
||||
for g in tree.xpath('//clipitem//effect'):
|
||||
if g.findall('effectid')[0].text == "GraphicAndType":
|
||||
print (g.findall('name')[0].text)
|
||||
'''
|
||||
|
||||
for g in tree.xpath('//clipitem'):
|
||||
if g.findall('name')[0].text != 'Graphic':
|
||||
continue
|
||||
for g in tree.xpath('//generatoritem'):
|
||||
#start/end = relative position of the clip in the parent sequence.
|
||||
#in/out indicate the portion of the source media file to reference.
|
||||
_in = int(g.findall('in')[0].text)
|
||||
_out = int(g.findall('out')[0].text)
|
||||
_out = int(g.findall('out')[0].text)
|
||||
_start = int(g.findall('start')[0].text)
|
||||
_end = int(g.findall('end')[0].text)
|
||||
effect = g.findall('effect')
|
||||
assert len(effect) == 1
|
||||
for parameter in effect[0].findall('parameter'):
|
||||
if parameter.findall('parameterid')[0].text == 'str':
|
||||
value = parameter.findall('value')[0].text
|
||||
|
||||
for efilter in g.findall('filter'):
|
||||
value = None
|
||||
for effect in efilter.findall('effect'):
|
||||
if effect.findall('effectid')[0].text == 'GraphicAndType':
|
||||
value = effect.findall('name')[0].text
|
||||
if not value:
|
||||
print(lxml.etree.tostring(effect).decode())
|
||||
print(value)
|
||||
if _start == -1 and _end == -1:
|
||||
_start = _in
|
||||
_end = _out
|
||||
if _start == -1:
|
||||
_start = 0
|
||||
if value:
|
||||
print('i', _in, 'o', _out, '-> s', _start, 'e', _end, 'v', value)
|
||||
value = '\n'.join([v.strip() for v in value.strip().split('\r')])
|
||||
data.append({
|
||||
'in': _start/fps,
|
||||
'out': (_end-1)/fps,
|
||||
'value': value
|
||||
})
|
||||
with open(target, 'wb') as f:
|
||||
if _start == -1 and _end == -1:
|
||||
_start = _in
|
||||
_end = _out
|
||||
if _start == -1:
|
||||
_start = 0
|
||||
#print _in, _out, _start, _end, value
|
||||
value = '\n'.join([v.strip() for v in value.strip().split('\r')])
|
||||
value = value.replace('\n\n', '<br><br>\n')
|
||||
data.append({
|
||||
'in': _start/fps, 'out': (_end-1)/fps, 'value': value
|
||||
})
|
||||
|
||||
with open(target, 'w') as f:
|
||||
f.write(ox.srt.encode(data))
|
||||
|
|
53
fcp_premier2srt.py
Executable file
53
fcp_premier2srt.py
Executable file
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import lxml
|
||||
import lxml.etree
|
||||
import ox
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
|
||||
source = sys.argv[1]
|
||||
target = '%s.srt' % os.path.splitext(source)[0]
|
||||
fps = 25
|
||||
data = []
|
||||
tree = lxml.etree.parse(source)
|
||||
'''
|
||||
for g in tree.xpath('//clipitem//effect'):
|
||||
if g.findall('effectid')[0].text == "GraphicAndType":
|
||||
print (g.findall('name')[0].text)
|
||||
'''
|
||||
|
||||
for g in tree.xpath('//clipitem'):
|
||||
if g.findall('name')[0].text != 'Graphic':
|
||||
continue
|
||||
#start/end = relative position of the clip in the parent sequence.
|
||||
#in/out indicate the portion of the source media file to reference.
|
||||
_in = int(g.findall('in')[0].text)
|
||||
_out = int(g.findall('out')[0].text)
|
||||
_start = int(g.findall('start')[0].text)
|
||||
_end = int(g.findall('end')[0].text)
|
||||
|
||||
for efilter in g.findall('filter'):
|
||||
value = None
|
||||
for effect in efilter.findall('effect'):
|
||||
if effect.findall('effectid')[0].text == 'GraphicAndType':
|
||||
value = effect.findall('name')[0].text
|
||||
if not value:
|
||||
print(lxml.etree.tostring(effect).decode())
|
||||
print(value)
|
||||
if _start == -1 and _end == -1:
|
||||
_start = _in
|
||||
_end = _out
|
||||
if _start == -1:
|
||||
_start = 0
|
||||
if value:
|
||||
print('i', _in, 'o', _out, '-> s', _start, 'e', _end, 'v', value)
|
||||
value = '\n'.join([v.strip() for v in value.strip().split('\r')])
|
||||
data.append({
|
||||
'in': _start/fps,
|
||||
'out': (_end-1)/fps,
|
||||
'value': value
|
||||
})
|
||||
with open(target, 'wb') as f:
|
||||
f.write(ox.srt.encode(data))
|
Loading…
Reference in a new issue