Files

84 lines
2.7 KiB
Python
Raw Permalink Normal View History

"""配置:按《插件配置文件标准》注册到统一 Web 管理台。
3 个配置项来源都是本模块常量:Web 保存后由 register_config_items 的
setter(setattr 本模块)热更新、立即生效;重启后按 plugin_config.json
已存值回退(读取一律走本模块 helper,不要在别处缓存值)。
"""
from __future__ import annotations
import sys as _sys
from typing import Any
from hexi.web_hub.config_standard import register_config_items
from hexi.web_hub.web_config import get_effective_value
_PLUGIN_ID = __package__ or __name__.rsplit(".", 1)[0]
# —— 可配置常量(来源为本模块) ——
# 加密前超过该像素数则等比缩小(并在回复里提示已压缩)
MAX_PIXELS = 8_000_000
# 解混淆硬上限:解密不能缩放(缩了就永远解不出),超过直接拒绝
DECRYPT_MAX_PIXELS = 16_000_000
# 输出 JPEG 质量(1-95,网页版固定最高档 95)
JPEG_QUALITY = 95
def _as_int(key: str, default: int) -> int:
value: Any = get_effective_value(_PLUGIN_ID, key, default)
if value in (None, ""):
return default
try:
return int(value)
except (TypeError, ValueError):
return default
def max_pixels() -> int:
"""加密缩放阈值(像素数)。"""
return _as_int("MAX_PIXELS", MAX_PIXELS)
def decrypt_max_pixels() -> int:
"""解混淆硬上限(像素数)。"""
return _as_int("DECRYPT_MAX_PIXELS", DECRYPT_MAX_PIXELS)
def jpeg_quality() -> int:
"""输出 JPEG 质量。"""
return _as_int("JPEG_QUALITY", JPEG_QUALITY)
def register_config() -> None:
register_config_items(
_PLUGIN_ID,
[
{
"key": "MAX_PIXELS",
"label": "加密最大像素数",
"type": "int",
"default": MAX_PIXELS,
"description": (
"混淆前超过该像素数则等比缩小(回复里会提示已压缩)。"
"默认 8000000(8MP)"
),
},
{
"key": "DECRYPT_MAX_PIXELS",
"label": "解混淆像素上限",
"type": "int",
"default": DECRYPT_MAX_PIXELS,
"description": (
"解混淆不能缩放,超过该像素数直接拒绝。默认 16000000(16MP)"
),
},
{
"key": "JPEG_QUALITY",
"label": "输出 JPEG 质量",
"type": "int",
"default": JPEG_QUALITY,
"description": "1-95,默认 95(与网页版一致的最高档)。",
},
],
store=_sys.modules[__name__],
)