Files
re-xxm/config.example.jsonc
bot-ci 8e7ead1669 feat: switch config to JSONC + split secrets.json
Load business config as JSONC (comments + trailing commas) via an
in-repo stripper then stdlib json — no new deps. Default path prefers
config.jsonc, falls back to legacy config.json. Auth write-back targets
only sibling secrets.json so JSONC comments are never wiped; secrets
overlay merges on load. Examples, compose, Docker, docs, favsort and
tools all share the same loader. Phase A only — no DB settings migration.
2026-11-02 12:58:20 +08:00

128 lines
3.1 KiB
JSON

// 业务配置(可含注释与尾逗号)。复制为 config.jsonc 后按需修改。
// 敏感凭据请放同目录 secrets.json(见 secrets.example.json);
// `python app.py auth` 只回写 secrets.json,不会冲掉本文件注释。
//
// 兼容:仍可读旧版单一 config.json(凭据可内嵌);若存在 secrets.json 则凭据以它为准。
{
// 可选:自定义凭据路径(相对本文件目录或绝对路径)。默认 secrets.json
// "secrets_path": "secrets.json",
// favsort 代发归属等(非密钥)
"overrides": {},
"sleep": {
"min": 2.5,
"max": 7.5,
"long_every_min": 20,
"long_every_max": 40,
"long_min": 30,
"long_max": 90,
"retry_wait": 45,
},
"telegram": {
"enabled": false,
// bot_token / chat_id 建议写在 secrets.json
},
"web": {
"host": "127.0.0.1",
"port": 8080,
// auth_token 建议写在 secrets.json
"public_base_url": "",
"track": {
"enabled": true,
"header_order": ["X-Real-IP", "X-Forwarded-For"],
"trusted_proxies": [
"127.0.0.0/8",
"::1/128",
"10.0.0.0/8",
"172.16.0.0/12",
"192.168.0.0/16",
"169.254.0.0/16",
"fc00::/7",
"fe80::/10",
],
"count_bots": false,
"flush_seconds": 60,
"keep_days": 180,
"max_hits_per_ip_path_per_day": 0,
},
},
"storage": {
"database_path": "data/app.db",
"backup_dir": "data/backup",
"backup_keep_days": 14,
},
"folders": [
{ "year": 2025, "media_id": 4451053851, "title": "咻咻满-reaction-2025" },
{ "year": 2026, "media_id": 3700023351, "title": "咻咻满 reaction 合集" },
],
"track_fans": [37754047],
"up_blacklist_seed": [
261052419,
1908537643,
1701121088,
542262,
376316958,
145178393,
66389997,
293976264,
3026109,
],
// 日更默认 23:15 落盘;午夜 seed_at 用昨收盘克隆当日壳(不推进 completed)
"schedule": {
"discover_minutes": 60,
"snapshot_at": "23:15",
"seed_at": "00:00",
"candidate_ttl_days": 7,
"recent_snapshot_minutes": 60,
"recent_video_days": 2,
},
"discover": {
"keywords": ["咻咻满"],
"pages": 3,
"window_days": 7,
"candidate_min_score": 4,
},
"notify": {
"min_score": 4,
"max_items_per_message": 10,
},
"classify": {
"require_title": "咻咻满",
"self_mid": 37754047,
"reaction": ["re", "reaction", "反应"],
"charge": ["加急", "特急", "充电", "专场"],
"weak_positive": ["双人", "路人", "第一次", "首次"],
"negative": ["歌切", "切片", "搬运", "完整版", "录播", "录像"],
"date_negative": true,
"duration_boost": { "gt_30min": 1, "gt_60min": 2 },
},
"heat_weights": {
"view": 0.3,
"like": 0.2,
"coin": 0.2,
"favorite": 0.15,
"share": 0.1,
"reply": 0.03,
"danmaku": 0.02,
},
"analytics": {
"min_duration_seconds": 600,
"maturity_days": 2,
"min_view_for_ranking": 2000,
"video_shrink_minutes": 60,
"shrink_minutes": null,
// "auto" = 7 日有数据用 7,否则 1
"home_growth_days": "auto",
},
}