mirror of
https://github.com/OpenVGLab/OmniLottie.git
synced 2026-09-17 15:46:26 +00:00
83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
import os
|
|||
|
|
import sys
|
||
|
|
import argparse
|
||
|
|
import inspect
|
||
|
|
from ..exporters import exporters
|
||
|
|
from .stripper import float_strip
|
||
|
|
|
||
|
|
|
||
|
|
def _get_caller():
|
||
|
|
return inspect.getmodule(inspect.currentframe().f_back.f_back)
|
||
|
|
|
||
|
|
|
||
|
|
def _get_parser(caller, basename, path, formats, verbosity):
|
||
|
|
if basename is None:
|
||
|
|
basename = os.path.splitext(os.path.basename(caller.__file__))[0]
|
||
|
|
|
||
|
|
parser = argparse.ArgumentParser(
|
||
|
|
conflict_handler='resolve'
|
||
|
|
)
|
||
|
|
|
||
|
|
parser.add_argument(
|
||
|
|
"--name",
|
||
|
|
"-n",
|
||
|
|
default=basename,
|
||
|
|
help="Output basename",
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"--path",
|
||
|
|
default=path,
|
||
|
|
help="Output path",
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"--formats", "-f",
|
||
|
|
nargs="+",
|
||
|
|
choices=list(sum((e.extensions for e in exporters), [])),
|
||
|
|
default=formats,
|
||
|
|
help="Formates to render",
|
||
|
|
metavar="format"
|
||
|
|
)
|
||
|
|
parser.add_argument(
|
||
|
|
"--verbosity",
|
||
|
|
type=int,
|
||
|
|
default=int(verbosity)
|
||
|
|
)
|
||
|
|
from .. import __version__
|
||
|
|
parser.add_argument(
|
||
|
|
"--version", "-v",
|
||
|
|
action="version",
|
||
|
|
version="%(prog)s - python-lottie script " + __version__
|
||
|
|
)
|
||
|
|
exporters.set_options(parser)
|
||
|
|
|
||
|
|
return parser
|
||
|
|
|
||
|
|
|
||
|
|
def get_parser(basename=None, path="/tmp", formats=["html"], verbosity=1):
|
||
|
|
caller = _get_caller()
|
||
|
|
return _get_parser(caller, basename, path, formats, verbosity)
|
||
|
|
|
||
|
|
|
||
|
|
def run(animation, ns):
|
||
|
|
for fmt in ns.formats:
|
||
|
|
if ns.path == "" and ns.name == "-":
|
||
|
|
outfile = sys.stdout
|
||
|
|
else:
|
||
|
|
absname = os.path.abspath(os.path.join(ns.path, ns.name + "." + fmt))
|
||
|
|
if ns.verbosity:
|
||
|
|
sys.stderr.write("file://%s\n" % absname)
|
||
|
|
outfile = absname
|
||
|
|
exporter = exporters.get_from_extension(fmt)
|
||
|
|
exporter.process(animation, outfile, **exporter.argparse_options(ns))
|
||
|
|
|
||
|
|
|
||
|
|
def script_main(animation, basename=None, path="/tmp", formats=["html"], verbosity=1, strip=float_strip):
|
||
|
|
"""
|
||
|
|
Sets up a script to output an animation into various formats
|
||
|
|
"""
|
||
|
|
caller = _get_caller()
|
||
|
|
if caller and caller.__name__ == "__main__":
|
||
|
|
parser = _get_parser(caller, basename, path, formats, verbosity)
|
||
|
|
strip(animation)
|
||
|
|
run(animation, parser.parse_args())
|