Commit Graph

4 Commits

Author SHA1 Message Date
nianzhibai 7e5e67697e feat: add GuangYaPan drive support
Implement a new GuangYaPan cloud drive integration across the backend, admin UI, playback proxy, and Spider91 migration flow.

Backend changes:\n- Add a GuangYaPan drive driver with token refresh, QR/device login support, directory listing, stream link resolution, directory creation, rename/delete operations, OSS multipart upload, and upload task polling.\n- Register GuangYaPan as a supported storage kind in configuration, catalog normalization, admin APIs, public drive labels, and 302 playback redirects.\n- Allow Spider91 crawler uploads to target GuangYaPan through a dedicated migration adapter.\n- Add scan, thumbnail, preview, and fingerprint cooldown handling for GuangYaPan based on explicit HTTP status codes, Retry-After values, and structured provider codes instead of natural-language message matching.\n- Tighten existing provider cooldown detectors so OneDrive, Google Drive, 115, PikPak, 123pan, Wopan, and media workers avoid treating arbitrary response text as a rate-limit signal.\n- Keep large videos eligible for preview generation unless the user disables preview generation.

Admin and tooling changes:\n- Add GuangYaPan as a selectable drive type with QR login UI and token/root-path credential fields.\n- Add crawler upload target support for GuangYaPan in the admin UI.\n- Add drive branding, labels, metadata display, and docs/config examples for GuangYaPan.\n- Include a standalone GuangYaPan QR login helper script for manual credential acquisition.

Tests:\n- Add GuangYaPan driver, QR login, proxy, admin API, crawler upload target, fingerprint, cooldown, and form coverage.\n- Update rate-limit tests to assert that message-only throttling text no longer starts cooldowns.\n- Cover explicit HTTP status parsing through shared drive helper tests.
2026-06-14 15:44:50 +08:00
nianzhibai 53327c9b8e fix: cool down p115 transient stream errors 2026-06-03 20:04:49 +08:00
nianzhibai ebd6943a10 feat(spider91,drives): 支持上传 115 + 每盘 Teaser 开关
* spider91 → 云盘迁移目标从仅 PikPak 扩展到 PikPak ∪ 115:
  - 115 driver 新增 UploadAndReportSha1(buffer 到 tmp 文件 + sha1 +
    SDK RapidUploadOrByMultipart + 父目录按 sha1 找 fileID)和 Rename
  - migrator 引入 uploadTarget 接口 + pikpakAdapter / p115Adapter,
    按 drive Kind() 路由;catalog 改写 / 本地清理 / 失败冷却 / backfill
    file_name 行为对两种目标盘统一。captcha 冷却仍只对 PikPak 4002/9 生效
  - App.Spider91UploadDriveID 校验放宽到 pikpak ∪ p115,自动选取在两类
    候选并存时拒绝(要求显式选定)
  - admin DrivesPage 在 spider91 表单里加"上传目标"下拉,文案按系统中
    实际挂载的盘 kind 自适应(只挂 PikPak 不会显示 115 字样,反之亦然)

* 全局 teaser 开关下沉为每盘 toggle 按钮:
  - drives 表加 teaser_enabled INTEGER NOT NULL DEFAULT 1
  - 删除 App.PreviewEnabled / SetPreviewEnabled / loadPreviewEnabled
    和 settings.previewEnabled 字段;前端删除 PreviewToggle 组件
  - 新增 catalog.SetDriveTeaserEnabled + POST /admin/api/drives/{id}/teaser-enabled
    接口;AdminServer 加 OnTeaserEnabledChanged hook,从关到开时立刻
    enqueueDriveGeneration 补扫 pending teaser
  - 网盘列表"操作"列加 Power / PowerOff toggle 按钮,乐观更新 + 失败回滚
  - 一次性迁移 resetDriveTeaserEnabledToDefaultOnce:把现存 drive 强制
    重置为开启,marker setting 记号防止重复(兼容短暂存在过的、把全局
    preview.enabled=0 同步成 per-drive=0 的中间版本)
  - 封面 worker 仍始终入队,开关只控制 teaser,避免越权

测试:go test ./... 全绿;npx tsc --noEmit / npm run build 通过。
2026-05-27 12:07:41 +08:00
Codex 04caed2c6b Improve 115 scan and media generation status 2026-05-16 22:40:45 +08:00