84 lines
2.7 KiB
Python
84 lines
2.7 KiB
Python
"""配置:按《插件配置文件标准》注册到统一 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__],
|
|||
|
|
)
|