Files
2026-03-01 21:36:54 +08:00

42 lines
938 B
Python

import io
import json
import gzip
from ..objects import Animation
def parse_tgs_json(file):
"""!
Reads both tgs and lottie files, returns the json structure
"""
return open_maybe_gzipped(file, json.load)
def open_maybe_gzipped(file, on_open):
if isinstance(file, str):
with open(file, "r") as fileobj:
return open_maybe_gzipped(fileobj, on_open)
if isinstance(file, io.TextIOBase):
binfile = file.buffer
else:
binfile = file
mn = binfile.read(2)
binfile.seek(0)
if mn == b'\x1f\x8b': # gzip magic number
final_file = gzip.open(binfile, "rb")
elif isinstance(file, io.TextIOBase):
final_file = file
else:
final_file = io.TextIOWrapper(file)
return on_open(final_file)
def parse_tgs(filename):
"""!
Reads both tgs and lottie files
"""
lottie = parse_tgs_json(filename)
return Animation.load(lottie)