Stash: 强大的 NSFW 内容管理与元数据刮削工具
⚠️ 本文涉及成人话题,未成年人请勿继续阅读。
文中虽然没有直接的 NSFW 画面,但可能仍不适合在某些场合下浏览,请自行确认身处环境并承担相关风险。
为什么需要媒体刮削器?
通常从网络上下载的各种影音文件的命名杂乱,缺少相关元数据,这导致我们浏览和管理媒体库都十分麻烦。
此时媒体刮削器 (Media Scraper) 就能派上用场了,它能自动从网络上抓取元数据并关联到文件,包括:
- 📝 媒体信息:标题、简介、导演、演员、评分等
- 🖼️ 封面海报:封面图、海报、背景图等
- 🏷️ 分类标签:类型、年份、语言等
- 💬 技术参数:分辨率、音轨、字幕等
使用刮削器,我们能够把影音文件整理成一个信息丰富和整洁的媒体库,还拥有美观的海报墙。
主流刮削工具
名称 | 特点 | 🔗 |
---|---|---|
tinyMediaManager | 多个数据源,电影、剧集管理 | 官网 |
FileBot | 文件刮削整理、批量重命名 | 官网 |
Plex | 媒体服务器,内置刮削 | 官网 |
Emby | 媒体服务器,内置刮削 | 官网 |
Infuse | 播放器,内置刮削 | 官网 |
以上工具大多接入 IMDb, TMDB, TheTVDB 等数据源,它们都有一个共同的局限:几乎没有直接对成人内容的支持。
而这正是专注于成人内容的 Stash
的特长,它既提供了强大的刮削和管理工具,也拥有丰富的数据源。
此 Stash 非彼 Stash
⚠️ 本文中介绍的 Stash 与那款网络代理工具没有任何关系,是一个完全不同的项目。
Stash is a self-hosted webapp written in Go which organizes and serves your porn.
Stash (Github) 是一个基于 Go 语言开发的开源自托管 Web 应用,专门用于组织和管理成人内容库。
它的特点:
智能识别
数据丰富
- 支持多个专业数据源
- 元数据覆盖面广
- 支持自定义数据
功能完善
- 强大的搜索和过滤系统
- 支持标签、演员、工作室等多维度管理
- 内置视频播放器
Perceptual hashes (pHashes) are one of the main reasons why we recommend using StashDB with Stash. pHashes are used to match your video files with scene entries on StashDB. Even files of differing resolutions, encodes, or download sources will often be similar enough to still match with StashDB. In other words, your files and their hashes don’t have to be exact matches with the fingerprints on StashDB. Stash will be able to find matches as long as your video looks just similar enough to somebody else’s fingerprint submission. This level of fuzzy matching makes our system much more reliable, flexible, and versatile than alternative approaches. pHashes can also be used in Stash to detect duplicate files in your library, using the “Scene Duplicate Checker” in the “Tools” tab of the Settings page.
译:感知哈希 (pHashes) 是我们推荐将 StashDB 与 Stash 一起使用的主要原因之一。pHashes 用于将您的视频文件与 StashDB 上的场景条目进行匹配。即使是分辨率、编码或下载来源不同的文件,通常也足够相似以便仍然可以与 StashDB 匹配。换句话说,您的文件及其哈希值不必与 StashDB 上的指纹完全匹配。只要您的视频看起来与其他人的指纹提交足够相似,Stash 就能够找到匹配项。这种模糊匹配的程度使我们的系统比其他方法更可靠、更灵活和多功能。pHashes 还可以在 Stash 中用于检测您库中的重复文件,使用设置页面“工具”选项卡中的“场景重复检查器”。
部署 Stash
本文以群晖 NAS 上使用 docker compose
(推荐) 部署为例,其他安装方式可参考官方安装指导。
环境准备
- 在群晖
套件中心
中安装Container Manager
- 准备好媒体文件目录
Docker Compose
安装 Container Manager
套件后会自动生成一个 docker
文件夹。
以下是个人管理 docker
的目录结构,部署前需要提前创建 stash_db/
文件夹以及几个子文件夹:
/docker/
├── stash/
│ ├── stash_db/
│ │ ├── blobs/
│ │ ├── cache/
│ │ ├── config/
│ │ ├── generated/
│ │ └── metadata/
│ └── docker-compose.yml
接下来,创建 docker-compose.yml
:
services:
stash:
image: stashapp/stash:latest
container_name: stash
volumes:
- ./stash_db/config:/root/.stash
- ./stash_db/metadata:/metadata
- ./stash_db/generated:/generated
- ./stash_db/blobs:/blobs
- ./stash_db/cache:/cache
- /volume1/媒体库目录:/data
environment:
- STASH_STASH=/data/
- STASH_METADATA=/metadata/
- STASH_GENERATED=/generated/
- STASH_CACHE=/cache/
- STASH_PORT=6969
- TZ=Asia/Hong_Kong
ports:
- 6969:6969
restart: unless-stopped
logging:
driver: "json-file"
options:
max-file: "10"
max-size: "2m"
如果你的设置和以上目录不一致,需要根据实际来调整以下几个目录映射:
volumes: ## 配置,刮削器和插件存储目录 - ./stash_db/config:/root/.stash ## metadata 存储目录 - ./stash_db/metadata:/metadata ## 生成内容 (截图、预览、转码、雪碧) 存储目录 - ./stash_db/generated:/generated ## blob 数据 (场景封面,图片) 存储目录 - ./stash_db/blobs:/blobs ## cache 存储目录 - ./stash_db/cache:/cache
重要:
/data
是媒体库映射目录,前面部分请替换为自己实际媒体库的目录volumes: - /volume1/媒体库目录:/data
如果媒体库目录不在一个父目录中,可以按以下方式映射:
volumes: - /volume1/媒体库目录1:/data/folder1 - /volume1/媒体库目录2:/data/folder2 - /volume1/媒体库目录3:/data/folder3
environment:
STASH_PORT
设置Stash
运行的端口,官方文档用的9999
。TZ
设置时区参数,写法参照:List of tz database time zones
部署服务
打开 Container Manager
,选择 Project
,选择 Create
新建项目:
选择 Set Path
,并选择 /docker/stash
目录,在弹窗处选择使用现有 docker-compose.yml
创建新项目:
填写 Project name
项目名称后下一步,不用勾选设置 web portal:
确认相关设置正确,底下勾选创建项目后就运行,点击 Done
后开始部署,稍等片刻部署完成。
访问 Web 界面
- 打开浏览器,访问
http://ip:6969
首次访问会进入
Stash
配置向导
配置 Stash
初始化设置
跟随配置向导点击 Next
开始设置:
Add Directory
添加媒体库目录,在弹出框里输入/data
(docker-compose.yml
中映射的目录名称) 并确认- 多个目录需依次添加:
/data/folder1
,/data/folder2
,/data/folder3
Video
和Images
表示该目录包含的媒体类型,后续也可在⚙️
里更改Database
和Database Binary Data
相关说明见截图翻译,自行按需调整,也可以保持默认
设置后继续点击 Next
进入下一步。
在该页面再次确认设置内容后点击 Confirm
确认即完成初始化设置。
⚠️ 重要提醒 ⚠️
本文流程演示均基于本地运行。
由于通过 Stash
托管的内容高度隐私,并且其初始化设置中不包括账户和密码的设置。
如果你通过公网直接初始化访问,或者没有设置访问密码就通过公网访问,将会遇到以下错误提示并被限制访问:
Stash is exposed to the public internet without authentication, and is not serving any more content to protect your privacy. More information and fixes are available at https://docs.stashapp.cc/networking/authentication-required-when-accessing-stash-from-the-internet
译:Stash 在未经身份验证的情况下暴露在公共互联网上,不再提供任何内容以保护您的隐私。更多信息和修复方法请访问 https://docs.stashapp.cc/networking/authentication-required-when-accessing-stash-from-the-internet
此时要恢复访问,需更改 /stash/config/config.yml
配置文件临时解除访问限制:
# 删除这一行
security_tripwire_accessed_from_public_internet={ip}
# 更改值为 `true`
dangerous_allow_public_without_auth=true
保存 config.yml
后重启 Stash
容器即可恢复访问。
⚠️ 如果你不希望你的 xp 暴露在网络上,请务必设置至少一种访问验证方式!
⚠️ 如果你不希望你的 xp 暴露在网络上,请务必设置至少一种访问验证方式!
⚠️ 如果你不希望你的 xp 暴露在网络上,请务必设置至少一种访问验证方式!
以下有三种验证方法:
Stash
提供了基本的密码验证,通过⚙️
-安全性
-账户凭证
设置,强烈建议强密码:Cloudflare Zero Trust
-Access
-Applications
设置访问控制,参考文档。- 通过
VPN
访问内网,例如 Tailscale, Zerotier, Wireguard 等。
基础设置
以上确认后就进入到 Stash
主界面。
设置按钮在主界面右上角 ⚙️
,以下再介绍一些基础设置:
语言设置
⚙️
- 界面
- 基础设置
- 语言
任务设置
⚙️
-任务
-收藏库
-扫描
设置可参照下图,此处启用的项将在Stash
扫描文件时生成。其中:确保启用
感知识别码
(Perceptual Hash
/pHash
),它是Stash
与数据源查找匹配的主要方式。⚙️
-任务
-生成的内容
-生成
可以根据需要启用上面扫描
中未启用的项或者一些耗时较长的项,在扫描
任务后手动运行,可以减少扫描的时间。
收藏库设置
⚙️
- 收藏库
影音目录可以在此处管理或者新增加:
如果想排除某目录,可以在
不包括
下设置,完全排除需在视频
和图片/图库
下都添加,支持正则:
数据源设置
数据源简介
以下数据源均不提供任何文件内容或其下载方式。
要使刮削功能正常运行,还必须给 Stash
添加 数据源
(官方介绍)。
Stash-box
(Github): 由Stash
开源开发。Stash-box is an open-source video indexing and metadata API server for porn developed by Stash App.
译:Stash-box 是一个由 Stash App 开发的开源视频索引和元数据 API 服务器,专为成人内容而设计。
大多数数据由社区用户提交维护,官方介绍了 5 个实例:
名称 | 特点 | 🔗 |
---|---|---|
StashDB | 1. Stash 官方数据源实例,用户活跃,数据丰富2. 仅支持有数字版售卖的内容,不支持 OF, Patreon 等内容 3. 官方有维护数据源的规范,元数据信息丰富整洁 4. 截止撰文时收录有 833,854 个场景,90,733 名演员,11,134 家厂牌 | 链接 |
ThePornDB | 1. 拥有相当大的数据源 2. 大多数据依赖于自动化爬虫获取 3. 相比 StashDB 格式和信息会少些规范 | 链接 |
JAVStash | 专注日本内容 | 链接 |
FansDB | 1. 支持 OF, FansDB 等平台 2. 但目前数据量较小 | 链接 |
PMV Stash | 1. 专注粉丝向/二次元混合重制成人音视频内容 2. 但目前数据量较小 | 链接 |
Scrapers
: 在⚙️
-元数据提供者
-可用刮削器
下安装。- 这些刮削器基本都针对厂牌网站直接开发,即可以直接从官方网站爬取相关元数据。
默认已有一个
Community (stable)
刮削器源,可以在此处浏览列表,看上哪个勾选安装即可。
StashDB 数据源
以 StashDB
为例,注册步骤 (官方文档):
- 访问 https://stashdb.org/register
- 使用有效的电子邮箱注册
Invite Key
不定时会更换,访问此处自行获取以
Stash-box
运行的实例大多需要Invite Key
才可以注册,一般可在对应网站的支持文档中查找到。ThePornDB
可以直接注册账户;FansDB
略麻烦,需在网站填写表单等待管理员审核后发送。- 从邮箱点击激活链接
- 设置
用户名
和密码
确认后即可登录
注册
StashDB
账户后默认只有READ
权限。要拥有提交新场景/编辑现有/投票等权限,需遵从此处指导,加入 Discord 频道后申请。
⚠️ 请仔细阅读并理解社区规则后再申请,获得批准后务必遵守,否则账户可能被 ban。
添加数据源入口
登录 StashDB
账户,点击右上角的个人用户名获取 API key
。
回到 Stash
,点击 ⚙️
- 元数据提供者
- Stash-box 入口
- 新增
:
名称填入 StashDB
或者自定,API key
填写上面从 StashDB
个人用户名处获取到的 key,GraphQL 入口
填写 https://stashdb.org/graphql
点击 Test Credentials
验证一下,通过后点击 确认
即可成功添加数据源。
建议添加多个数据源,后续可以在多个数据源中切换匹配。
ThePornDB
另外有两个分类入口:
电影专门入口:https://theporndb.net/graphql?type=Movie
JAV 专门入口:https://theporndb.net/graphql?type=JAV
使用指南
至此,准备工作就完成了。
开始下一步前请先点击 ⚙️
- 任务
- 收藏库
- 扫描
,将你的收藏们添加到 Stash
媒体库中。
扫描过程中Stash
会生成视频封面,预览图等,并分析计算每个文件的PHash
值,如果收藏库庞大,初次扫描可能耗时较长 - 相当长,需耐心等待扫描任务完成,后续添加新内容只做增量扫描。
用 Tagger
刮削
初次扫描完成后,点击顶部 短片
,即可看到还没刮削的媒体库了。
现在点击这个 标签工具
(Tagger
):
右边点击 ⚙️
可以进行一些刮削设置,建议勾选 保存时标记为已整理
,此选项可以使匹配到元数据的内容在保存后自动标记为 已整理
,方便后续管理和筛选。
点击 挖掘所有
,即可开始匹配刮削全部内容,也可点击 以部分名称刮削
匹配单个内容。
以下是刮削后的示例:
如果没有匹配到也可以在搜索框尝试文件名匹配,但该功能对关键词的要求比较模糊,不一定好使。
如果是来自日本的厂商,可以尝试仅搜索
车牌号
,StashDB
社区规范要求 JP 相关资源把车牌号
放在标题首位。还可以切换不同的
Stash-box
实例,在不同数据源中尝试匹配/搜索:
如果最后都没有匹配到,也可以自己在本地整理编辑元数据,保存后还可以选择提交到
Stash-box
,为社区作贡献~⚠️ 不同社区对支持的内容、格式规范等有不同的要求,提交前务必仔细阅读并遵守相关规则。
推荐插件
除了本身的丰富功能和设置外,Stash
社区中还拥有十分丰富的插件,可以扩展更多功能。
- 服务中自带
Community (stable)
插件源,展开后可以浏览插件列表或者直接在搜索框中搜索。 - 有些插件托管在个人仓库中,列表在此,把
Source URL
中的链接添加到源,展开旁边的>
即可查看和安装该插件。
插件安装目录在:/docker/stash/config/plugins
,安装插件后点击 ⚙️
- 插件
- 插件
- 重载插件
即可加载。
以下推荐几个自用的插件:
FileMonitor
功能:监控媒体库目录,有变动时自动扫描
mcMetadata
功能:生成 Emby
,Jellyfin
等支持的 .nfo
元数据文件,支持自动重命名文件,自动移动文件,非常好用的插件。
使用该插件需先在该插件目录中配置 settings.ini
,具体可参考 Github 文档,作者已经有详细的说明。
提醒一个地方,如果启用 enable_actor_images: true
,需要提前映射媒体服务器的演员图片存储目录:
Emby
中的目录是<embyConfigDir>/metadata/people/
Jellyfin
中的目录是<jellyfinConfigDir>/data/metadata/People/
以群晖中运行 Emby
为例,需在 docker-compose.yml
中添加该目录映射:
volumes:
# 通过群晖套件中心安装的 `Emby`
- /volume1/@appdata/EmbyServer/metadata/people:/mc
同时,修改 mcMetadata
的配置文件 settings.ini
:
# 启用演员图片复制到媒体服务器
enable_actor_images: true
# 设置 metadata 目录
actor_metadata_path: /mc
QuickRating
功能:评分
Qx Scene Card
功能:优化界面卡片设计
更多扩展
除了插件,Stash
还支持更多扩展方式:
功能 | 🔗 |
---|---|
Themes | 社区链接 |
CSS snippets | 社区链接 |
Userscripts | 社区链接 |
Scripts | 社区链接 |
Utilities | 社区链接 |
Integrations | 社区链接 |
常见问题
O-Count
:这个统计数字记录你为这个收藏贡献“烟花”的次数个人使用英语系统,写此文缘故切换到中文下才发现该词直接翻译成
,相比英语也是过于直接高潮次数
Stash
不支持同时运行多任务,但支持任务队列,在⚙️
-任务
-任务队列
查看⚙️
-日志
中可以设置日志等级,查看各个任务和插件的运行日志,以及报错信息- 记得打开
⚙️
-高级模式
的开关 - 其他想起来再补充
总结
Stash
拥有丰富的刮削和管理功能,并且提供了广泛的自定义选项,部署设置和基本功能就介绍到此,其他由各位“老司机”自行探索了。
以上,有问题欢迎在评论区提出。
标题:Stash: 强大的 NSFW 内容管理与元数据刮削工具
日期:2025-02-17
链接:https://logs.do/logs/stash-nsfw-content-scraper-and-organizer.html
许可:© CC BY 4.0 · 转载请保留原文链接及作者
感谢教程,佬知道怎么进javstash吗?似乎没有邀请码,而且discord群也进不了
JAVStash Invite Code:
32addee3-9604-4e0f-a41c-7d8507342540
TPDB
也有个专门对 JAV 内容的入口:https://theporndb.net/graphql?type=JAV