45 lines
No EOL
1.5 KiB
Python
45 lines
No EOL
1.5 KiB
Python
import json
|
|
import logging
|
|
import argparse
|
|
import sys
|
|
|
|
logger = logging.getLogger("svganim.fixer")
|
|
argParser = argparse.ArgumentParser(
|
|
description="Helper tool to fix timings after glitch"
|
|
)
|
|
argParser.add_argument(
|
|
"--input", type=str, help="Filename to run on (.json_appendable)"
|
|
)
|
|
args = argParser.parse_args()
|
|
|
|
|
|
with open(args.input, "r") as fp:
|
|
events = json.loads("[" + fp.read() + "]")
|
|
time_offset = 0
|
|
for i, event in enumerate(events):
|
|
if type(event) is list:
|
|
pass
|
|
elif event['event'] == "offset":
|
|
time_offset += event['offset']
|
|
# print a reverseable event that is ignored by this script
|
|
event = {
|
|
'event': 'added_offset',
|
|
'offset': event['offset']
|
|
}
|
|
elif event['event'] == 'added_offset':
|
|
logger.warning('ignore existing offset')
|
|
continue
|
|
|
|
elif event["event"] == "viewbox":
|
|
for key, box in enumerate(event['viewboxes']):
|
|
event['viewboxes'][key]['t'] += time_offset
|
|
elif event["event"] == "stroke":
|
|
event['points'] = [[p[0], p[1], p[2], p[3] + time_offset]
|
|
for p in event['points']]
|
|
|
|
if i>0:
|
|
sys.stdout.write(",\n")
|
|
sys.stdout.write(json.dumps(event))
|
|
|
|
if time_offset == 0:
|
|
logger.warning('\n\nNo offset defined in file, please do so by adding {"event":"offset", "offset": miliseconds} at the line from which the offset should be added.') |