跳转至

刮削指南

刮削 (Scraping) 是从多个数据源获取影片元数据的过程. Amane 的刮削系统支持多源聚合、智能优先级和增量更新.

刮削流程

  1. 解析番号: 从文件名或用户输入提取番号和内容类型
  2. 建图: 根据内容类型和路由配置构建抓取图
  3. 逐站抓取: 按优先级依次尝试各数据源
  4. 字段聚合: 按字段优先级从多个源选择最佳值
  5. 翻译: 使用 LLM 翻译字段 (可选)
  6. 持久化: 保存到数据库并下载资源

关于下载资源

刮削时可选择下载海报、缩略图、剧照和预告片. 预告片 (trailer) 文件非常大, 不推荐开启. 其他图片类型 (海报、缩略图、剧照) 即使在刮削配置中关闭, 在前端访问影片详情页时也会自动下载.

内容路由

每种内容类型有独立的数据源路由, 按优先级排序. 可在「设置 → 影片刮削」中自定义.

类型 默认路由
有码 dmm → javdb → javbus → official
无码 javdb → javbus → avsox → freejavbt
FC2 javdb → fc2ppvdb → fc2 → freejavbt
中文 iqqtv → javdb → airav → freejavbt
素人 mgstage → dmm → javdb → javbus
欧美 theporndb → javdb → freejavbt
里番 getchu → dmm → javdb

多源聚合

字段优先级

每个字段可独立配置来源优先级. 例如:

  • 标题: 可能偏好中文站 (iqqtv) 的翻译
  • 海报: 可能偏好 DMM 的高清图
  • 评分: 可能偏好 JavDB 的评分体系

增量抓取

  • 首次刮削: 按优先级依次尝试所有数据源
  • 重刮削: 优先使用本地缓存, 仅补充缺失的站点数据
  • 强制刷新: 忽略缓存, 重新抓取所有站点

缓存策略

站点级缓存

每次刮削的原始数据保存在 Metadata.raw 字段中:

  • 按站点存储原始响应
  • 重刮削时优先使用缓存
  • 可单独控制是否使用缓存

翻译缓存

LLM 翻译结果独立缓存 (translations.db):

  • 基于源文本哈希 + 目标语言 + 字段类型
  • 跨番号去重 (相同简介只翻译一次)
  • 换模型后需删除缓存文件强制重译

翻译

Amane 集成 LLM 翻译能力:

  • 支持字段: title, plot
  • 语言检测: 自动判断是否需要翻译
  • 简繁转换: 中文简繁自动转换 (不走 LLM)
  • 跨语系翻译: 日→中, 英→中等使用 LLM

翻译配置见 配置指南 - LLM 翻译.

演员刮削

影片刮削成功后, 可自动链式触发演员刮削:

  • 按配置的档案站顺序抓取演员信息
  • 头像从专门的头像站获取
  • 已刮过的演员自动跳过

演员刮削配置见 配置指南 - 演员刮削.

r18.dev 数据源

r18.dev 是一个特殊的离线数据源, 提供 PostgreSQL dump:

启用步骤

  1. 自备 PostgreSQL 实例
  2. 在配置中设置连接串 (r18.dsn)
  3. 设置 dump 下载地址 (r18.download_url)
  4. 创建定时任务执行导入

导入流程

  1. 探测 dump 版本 (ETag)
  2. 下载并解压
  3. 导入临时数据库
  4. Schema 探针校验
  5. 原子换名 (旧库 → 新库)

Tip

r18 导入需要 psql 命令行工具. Docker 镜像已包含.

任务系统

刮削通过任务系统异步执行:

任务类型

类型 说明
REFRESH 扫描目录, 注册新文件, 可派生 SCRAPE
SCRAPE 联网聚合元数据
ORGANIZE 按路径模板整理文件
ACTOR_SCRAPE 抓取演员元数据
RESCRAPE 滚动补刮最久未更新的元数据
CLEANUP 清理悬空引用和失效文件
UPSCALE 超分低清图片
R18_IMPORT 导入 r18.dev dump

任务链

任务之间可形成依赖链:

  • REFRESHSCRAPEACTOR_SCRAPE
  • 手动 SCRAPEACTOR_SCRAPE (链式触发)

缓存控制

刮削任务支持细粒度缓存控制:

  • metadata: 是否复用站点原始数据缓存
  • trans: 是否复用翻译缓存
  • 空集 = 强制全部刷新

排障

刮削失败

  1. 检查任务日志: 任务详情页 → 查看报告
  2. 检查站点结果: 每个站点的成功/失败状态
  3. 检查网络配置: 代理、超时、限速

数据不完整

  1. 检查内容类型是否正确
  2. 检查路由配置是否包含目标站点
  3. 尝试强制刷新重刮

翻译异常

  1. 检查 LLM 配置是否正确
  2. 检查 API 密钥是否有效
  3. 删除 translations.db 强制重译