RRRosmontis
|
9ecbbbc6d8
|
feat(jm): 新增 JM 漫画下载打包服务(9004,移植自 qqbot jm 模块)
- source/jm/jm.py:aiohttp + jmcomic,GET /jm/get_comic?id=xxx[&range=起-止]
下载至 cache/jm 隐藏暂存目录 → webp 转 jpg 打包 ZIP → HTTP 直返 → 600s 延时删除
单次上限 30 章;per-album 锁防并发;cache_sweep 兜底清理;/jm/cache_info 运维接口
- source/main.py:聚合层注册 /jm/get_comic(新增 JM_BACKEND,复用 proxy())
- systemd/jm.service:独立系统服务(Restart=always,日志 /var/log/jm.log)
- README / 部署与运维文档同步更新
|
2026-09-23 10:58:48 +08:00 |
|
RRRosmontis
|
9ba194ae97
|
fix(dufe): 修复 base64 %3D 容错与 commit 判定 fail-open
ginkgo_sign_in.py:
- 顶部新增 import urllib.parse
- _b64_decode: 先 urllib.parse.unquote 再做 空格->+ 替换
(iOS 快捷指令会把 base64 的 = 编码成 %3D,旧实现直接 binascii.Error;
顺序必须是 unquote 在 空格->+ 之前,否则 %20 会被误当成被 form-urlencoded 吃掉的 +)
- commit 判定改为 fail-closed:要求 commit_info 是 dict 且 success is True,
否则一律返回 msg="sign-in failed: <原因>";
do_commit=false 时不检查 commit 字段,msg 仍为 "ok"
- reason 取值修正:非 dict 真值(字符串/数字)不再触发 AttributeError 500,
统一回落到 "no commit result returned"
- parse_course_url 报错文案改为
"URL is not a sign-in page (missing /signin/<signInId>/<type>): <url>"
文档:README 版本要点与 docs/部署与运维.md 变更记录同步
|
2026-09-13 11:08:40 +08:00 |
|
RRRosmontis
|
371d3a3624
|
feat(dufe): 新增银杏签到码查询服务,并在聚合层注册端点
- source/dufe/ginkgostu_sign_in/ginkgo_sign_in.py: 签到码查询服务
(Flask + waitress 16 线程,监听 127.0.0.1:9005,端点 GET|POST /dufe/ginkgostu_sign_in)
- systemd/ginkgo_sign_in.service: 常驻服务单元,Restart=always,日志 /var/log/ginkgo_sign_in.log
- source/main.py: 新增 DUFE_BACKEND 与 handle_dufe_sign_in,
并新增 proxy_forward()(保留请求方法与请求体,支持 POST);
原有 proxy()(固定 GET,供 pixiv/bilibili 用)未做任何改动
|
2026-09-13 03:17:19 +08:00 |
|
RRRosmontis
|
5a43bce45d
|
fix: 补齐 99543c9 遗漏的内容改动(该提交的 git add 因 pathspec 报错未生效)
上一个 refactor 提交只落到 main.py 的重命名,端口与路径的实际改动漏掉了,此提交补齐:
- source/main.py: PIXIV_BACKEND 9088->9007, BILIBILI_BACKEND 19990->9006, port 9888->9008
- nginx/openapi.rrrosmontis.icu.conf: 3 处 proxy_pass -> 127.0.0.1:9008
- systemd/openapi.service: WorkingDirectory/ExecStart 同步为 source/
|
2026-09-13 02:26:54 +08:00 |
|
RRRosmontis
|
212adb1e25
|
perf(pixiv): 改用 waitress 线程池,缓存路径改为相对路径
- IMAGE_DIR 由硬编码 /home/pixiv/images 改为 (Path(__file__).parent/'../cache/pixiv/images').resolve()
(即 source/cache/pixiv/images),mkdir 补 parents=True
- systemd/pixiv.service: ExecStart 改为 waitress-serve --host=127.0.0.1 --port=9007 --threads=8 pixiv:app
替代 Flask 开发服务器(thread-per-request 无上限,突发流量下线程爆炸)
- __main__ 兜底加 threaded=True,手动运行时不串行
|
2026-09-13 02:26:34 +08:00 |
|
RRRosmontis
|
5400dc0a86
|
feat(bilibili): 新增 BV 本地缓存,修复视频暂存目录泄漏
- 新增 CACHE_DIR(../cache/bilibili),以 BV 号为键缓存 {BV}.mp4,命中即 FileResponse、不再调用 yt-dlp
- 未命中时下载到缓存目录内的隐藏暂存目录 .dl-XXXX,成功后 os.replace 原子落盘
- finally 中 shutil.rmtree(tmpdir):原实现只清理 cookie 临时文件,导致每次取视频都把完整视频
永久留在 /tmp(无上限磁盘泄漏)
- 淘汰策略:TTL 7 天未访问过期 + 总量超过 2 GiB 按 mtime 从最旧开始删除
- 新增运维接口 GET /bilibili/cache_info(缓存目录/上限/文件数/总量/剩余磁盘)
- 缓存 HIT/MISS/STORE 日志加 flush=True,实时可见
|
2026-09-13 02:26:34 +08:00 |
|
RRRosmontis
|
99543c9935
|
refactor: 主入口 main.py 上移到 source/,端口重排为 9008/9007/9006
- main.py: source/openapi/main.py -> source/main.py
- 端口: 聚合层 9888->9008, pixiv 后端 9088->9007, bilibili 后端 19990->9006
- nginx/openapi.rrrosmontis.icu.conf: 三处 proxy_pass 指向 127.0.0.1:9008
- systemd/openapi.service: WorkingDirectory/ExecStart 同步为 source/
|
2026-09-13 02:26:34 +08:00 |
|
RRRosmontis
|
74a90d6190
|
新增 Pixiv token 刷新守护:每 30-60 分钟随机续期,refresh_token 轮换原子落盘
- refresh_token.py:启动即刷新,random 30~60min 循环,失败 5min 重试
- 每次保存新 access_token+refresh_token(Pixiv 会轮换),chmod 600
- pixiv-token-refresh.service:常驻守护,Restart=always
- README 同步服务清单与部署说明
|
2026-09-02 18:54:19 +08:00 |
|
RRRosmontis
|
00f8678d75
|
openapi 源码 + token 模板 + nginx 统一入口配置
|
2026-08-27 21:31:10 +08:00 |
|