48 lines
2.2 KiB
Python
48 lines
2.2 KiB
Python
from argparse import Namespace, ArgumentParser
|
|
from dataclasses import dataclass
|
|
from sysconfig import get_path
|
|
from typing import Any
|
|
import tomllib
|
|
import os
|
|
|
|
|
|
@dataclass
|
|
class Config:
|
|
|
|
config: dict[str, Any]
|
|
args: Namespace
|
|
|
|
@classmethod
|
|
def setup_config(cls):
|
|
default_config = os.path.join(get_path('purelib'), "vnrecode", "vnrecode.toml")
|
|
parser = ArgumentParser(prog="vnrecode",
|
|
description="Python utility to compress Visual Novel Resources"
|
|
)
|
|
parser.add_argument("source", help="SourceDir")
|
|
parser.add_argument("-c", "--config", default=default_config, help="ConfigFile")
|
|
parser.add_argument("-u", action="store_true", help="CopyUnprocessed")
|
|
parser.add_argument("-f", "--force", action="store_true", help="ForceCompress")
|
|
parser.add_argument("-m", "--mimic", action="store_true", help="MimicMode")
|
|
parser.add_argument("-s", "--silent", action="store_true", help="HideErrors")
|
|
parser.add_argument("--webprgba", action="store_true", help="WebpRGBA")
|
|
parser.add_argument("-j", "--jobs", type=int, help="Workers")
|
|
parser.add_argument("-ae", "--aext", help="Audio Extension")
|
|
parser.add_argument("-ab", "--abit", help="Audio Bitrate")
|
|
parser.add_argument("-id", "--idown", type=int, help="Image Downscale")
|
|
parser.add_argument("-ie", "--iext", help="Image Extension")
|
|
parser.add_argument("-ife", "--ifallext", help="Image Fallback Extension")
|
|
parser.add_argument("-il", "--ilossless", action="store_true", help="Image Lossless")
|
|
parser.add_argument("-iq", "--iquality", help="Image Quality")
|
|
parser.add_argument("--vcrf", help="Video CRF")
|
|
parser.add_argument("-vs", "--vskip", help="Video Skip")
|
|
parser.add_argument("-ve", "--vext", help="Video Extension")
|
|
parser.add_argument("-vc", "--vcodec", help="Video Codec")
|
|
|
|
args = parser.parse_args()
|
|
if os.path.isfile(args.config):
|
|
with open(args.config, "rb") as cfile:
|
|
config = tomllib.load(cfile)
|
|
else:
|
|
print("Failed to find config. Check `vnrecode -h` to more info")
|
|
exit(255)
|
|
return cls(config=config, args=args)
|