Files
main_plugin_farm/scripts/preview_help.py
T

59 lines
2.1 KiB
Python
Raw Normal View History

2026-10-26 11:34:00 +08:00
"""从当前命令注册表离线生成帮助菜单图片,不访问玩家数据库。"""
import argparse
from pathlib import Path
import sys
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / 'src'))
from ci_font import choose_font
from farm_core.commands import command_specs
from farm_render import FarmRenderer
from farm_render.help import render_help
PLATFORMS = ('zhenxun', 'nonebot', 'astrbot')
def main(argv=None):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
'--platform', choices=(*PLATFORMS, 'all'), default='all',
help='目标平台;默认一次生成三个平台的菜单。',
)
parser.add_argument(
'--output', type=Path, default=ROOT / 'images',
help='图片输出目录;默认主仓库 images。',
)
parser.add_argument('--font', type=Path, help='中文字体文件路径。')
parser.add_argument(
'--format', choices=('PNG', 'JPEG', 'WEBP'), default='PNG',
type=str.upper, help='默认PNG无损图片。',
)
parser.add_argument('--quality', type=int, default=75,
help='JPEG/WebP质量,1~95;PNG不受影响。')
args = parser.parse_args(argv)
if not 1 <= args.quality <= 95:
parser.error('--quality 必须为1~95的整数')
try:
renderer = FarmRenderer(str(args.font) if args.font else choose_font())
except (OSError, ValueError, RuntimeError) as error:
parser.error(f'无法加载字体或素材,请用 --font 指定中文字体:{error}')
platforms = PLATFORMS if args.platform == 'all' else (args.platform,)
extension = {'PNG': 'png', 'JPEG': 'jpg', 'WEBP': 'webp'}[args.format]
args.output.mkdir(parents=True, exist_ok=True)
for platform in platforms:
picture = render_help(
renderer, command_specs(platform), platform,
image_format=args.format, quality=args.quality,
)
target = args.output / f'help-{platform}.{extension}'
target.write_bytes(picture)
print(f'{target.resolve()} ({len(picture)} bytes)')
if __name__ == '__main__':
main()