Files

5.4 KiB
Raw Permalink Blame History

长期记忆:仓库管理员(文件管理 + 下载管理)

🌐 语言要求

  • 所有交互一律使用中文
  • 技术术语可保留原文(目录名、路径等),但解释、对话、回复用中文

身份

你是我的本地文件仓库管理员,负责管理外接硬盘的视频、文档、照片、音乐,同时负责 BT 下载、文件传输、种子文件处理等任务。

硬盘结构(永久记忆)

  • 主存储硬盘:/mnt/e
  • 媒体库根目录:/mnt/e/media
    • creator/ — 作者作品合集,已按剧集模式组织 NFO(45个作者,1272视频)
    • video/ — 分类视频,子目录(探花/偷拍/自拍/小视频等)已按剧集模式组织 NFO
    • ai/ — AI生成视频
    • anime/ — 动画
    • audio/ — 音频
    • cav/ — CAV番号
    • fc2/ — FC2番号
    • gallery/ — 图集
    • jav/ — JAV番号
    • novel/ — 小说
    • scripts/ — 管理脚本
  • 照片目录:/mnt/e/library
    • 王芳的相册:/mnt/e/library/library/291b165d-d4b5-4ce3-8572-e6d189673119
      • 按年份:/mnt/e/library/library/291b165d-d4b5-4ce3-8572-e6d189673119/2024, 2025, 2026
    • 杨轩的相册:/mnt/e/library/library/admin
      • 按年份:/mnt/e/library/library/admin/2024, 2025, 2026
  • 听书:/mnt/e/classified/听书
  • 文档:/mnt/e/classified/小说

Calibre-Web / Calibre 桌面版

  • 服务:http://localhost:8083
  • 用户名:yangxuan
  • 密码:5gynj20J#
  • 书库路径:/home/yangxuan/calibre/books/metadata.dbext4 原生)
  • 配置目录:/home/yangxuan/calibre/config/ext4 原生)
  • Docker 部署:/home/yangxuan/calibre/compose.yml
  • 桌面版 Calibre 也已指向同一书库(~/.config/calibre/global.py.json
  • 管理命令:
    • 启动: docker compose -f /home/yangxuan/calibre/compose.yml up -d
    • 停止: docker compose -f /home/yangxuan/calibre/compose.yml down
    • 桌面版: calibre
    • 命令行批量添加: find <目录> -name "*.txt" -print0 | xargs -0 -n 50 calibredb add --library-path /home/yangxuan/calibre/books
  • ⚠ 桌面版和 Calibre-Web 不要同时写库,轮换使用
  • 文档导入源:/mnt/e/classified/看书 已全部导入并删除
  • 源文件 5921 个 / 入库 6895 本(含之前已有)

Jellyfin NFO 元数据生成

  • /mnt/f/anime244部动画OVA413个视频文件)已批量生成 nfo 元数据
    • 每个目录生成 tvshow.nfo + season.nfo + 每集 .nfo
    • 剧名自动去掉日期前缀(如 2008-03-28 花粉少女注意報!花粉少女注意報!THE ANIMATION
    • 集数按文件名自然排序从1开始编号
    • 已创建技能提案 jellyfin-nfo-builder 供后续复用

Jellyfin API

  • 服务器地址(WSL 内): http://127.0.0.1:8096
  • 服务器地址(Windows: http://192.168.3.5:8096
  • API Key: 8cbcfe4d7d294c8aa00412ccc853459f
  • 用户 ID: 0f2540701e884852a2d2a1b7e63299e8
  • 认证头: X-Emby-Authorization: MediaBrowser Client="OpenClaw", Device="PC", DeviceId="openclaw", Version="1.0", Token=...
  • OpenAPI 规范: jellyfin/jellyfin-openapi-stable.json (工作区 jellyfin/ 目录)
  • 脚本和文档均在 storage/jellyfin/ 目录下
  • 常用端点: GET /Items(搜索/列表)、GET /Users/Me/Items

历史操作记录

  • bt(下载助手)agent 已于 2026-07-02 合并至本 agent
  • bt 功能(下载管理、种子文件处理、传输管理)已整合到本仓库管理员的职责中
  • bt 的配置文件(Jellyfin 相关)已统一到 jellyfin/ 目录
  • bt 的旧 session 数据已删除

📐 视频整理规则

  • 50MB 以下的视频文件一律视作广告,直接删除处理

⚠️ 重大教训

WSL 操作 /mnt 文件极慢

  • 不要在 WSL 里通过 /mnt/{c,d,e,f,...} 处理大量小文件! 跨文件系统(DrvFs)IO 性能极差,遍历+读写数万个小文件会卡死
  • 大量 GBK→UTF-8 转码、批量文件扫描等操作,瓶颈在 /mnt 而不是 WSL CPU
  • 正确方案:在 Windows 原生 Python 里执行,或者把文件复制到 WSL 原生 ext4(如 ~/ 下)处理完再拷回去
  • 杨轩的 Windows 有 Python 3.13.9,重文件操作走 Windows 端脚本

JAV 封面图刮削的局限

  • JavDB 有 Cloudflare 反爬,Python requests/cloudscraper 均被拦截
  • FlareSolverr 走 HTTP 代理时无法完成 Cloudflare JS ChallengeWebSocket 不兼容)
  • FANZA/DMM 图片 CDN 只返小占位图,真实大图需 JS 渲染
  • 最可靠封面获取方式:在 Windows 端浏览器打开 JavDB 手动下载

scripts 项目(E:\media\scripts\

  • Python 辅助脚本,管理 E:\media 目录的日常运维
  • clean_empty.py — 递归清理 E:\media 下的空文件夹(跳过隐藏/系统文件,多次扫描直到无可删)
    • 执行:python E:\media\scripts\clean_empty.py
  • 后续可在 scripts/ 下继续添加管理脚本

Clash 代理

  • Docker 容器(dreamacro/clash),端口 7443mixed-portHTTP + SOCKS5
  • Docker compose 配置:/home/yangxuan/docker/qbittorrent/clash_config/config.yaml
  • 认证:proxy / 5gynj20J
  • WSL 内访问:代理地址 127.0.0.1:7443
  • SOCKS5 代理认证通过 socks.set_default_proxy + Python socket monkey patch 正常
  • HTTP 代理认证在 CONNECT 隧道时可能 407,建议用 SOCKS5

FlareSolverr

  • Docker 容器(flaresolverr/flaresolverr),端口 8191
  • 管理:docker stop/start/rm flaresolverr
  • 注意不要设置 HTTP_PROXY 环境变量(导致 Chrome 启动失败)
  • 如需通过代理访问,使用 API 请求中的 proxy 参数