snapetech/seerrng
GitHub: snapetech/seerrng
SeerrNG 是一个自托管应用,用于扩展个人媒体库的请求管理,添加了音乐和书籍支持。
Stars: 0 | Forks: 0
### 图书
### 音乐
## 安装
### Let's list them:
主容器镜像由此仓库发布:
```
docker run -d \
--name seerrng \
-e LOG_LEVEL=info \
-e PORT=5055 \
-p 5055:5055 \
-v /path/to/seerrng/config:/app/config \
--restart unless-stopped \
ghcr.io/snapetech/seerrng:main
```
打开 `http://localhost:5055` 并完成设置。
### - SeerrNG: This might be a specific software or service. Without more context, I'll assume it's a proper noun and keep it as "SeerrNG".
```
services:
seerrng:
image: ghcr.io/snapetech/seerrng:main
container_name: seerrng
environment:
LOG_LEVEL: info
PORT: 5055
TMDB_API_KEY: ${TMDB_API_KEY}
TMDB_READ_ACCESS_TOKEN: ${TMDB_READ_ACCESS_TOKEN}
ports:
- 5055:5055
volumes:
- /path/to/seerrng/config:/app/config
restart: unless-stopped
```
### Linux 软件包
此仓库包含用于 tarball、Debian、RPM、AppImage、Flatpak、Snap、AUR、PPA 和 COPR 风格分发的工作流和打包元数据。如有可用,请使用 GitHub Releases 获取生成的构件。
## 必需配置
SeerrNG 需要与 Seerr 相同的、用于视频库的基础配置,外加用于音乐和图书的可选服务。
核心:
- 一个 Plex、Jellyfin 或 Emby 服务器。
- 用于电影自动化的 Radarr。
- 用于电视剧自动化的 Sonarr。
- 用于应用程序数据库的 SQLite 或 PostgreSQL。
音乐:
- 在 **设置 > 服务** 中配置一个 Lidarr 服务器。
- 从 Lidarr 服务设置中配置根文件夹、质量配置文件、元数据配置文件和标签。
- 如果希望用户无需每次选择服务即可请求音乐,则需要一个默认的 Lidarr 服务器。
图书:
- 在 **设置 > 服务** 中配置 Bookshelf 或其他兼容 Readarr 的服务。
- 将一个服务标记为支持电子书以处理电子书请求。
- (可选)将第二个服务标记为支持有声读物以处理有声读物请求。
- 如果希望双格式请求能正常工作,请分别为电子书和有声读物设置默认服务。
## 环境变量
常用运行时变量:
| 变量 | 用途 |
| --- | --- |
| `PORT` | HTTP 端口。默认为 `5055`。 |
| `LOG_LEVEL` | 服务器日志级别。 |
| `CONFIG_DIRECTORY` | 非容器安装的备用配置目录。 |
| `TMDB_API_KEY` | TMDB v3 API 密钥。 |
| `TMDB_READ_ACCESS_TOKEN` | TMDB v4 令牌。 |
| `SEERR_EXTERNAL_READ_ONLY` | 启用时,阻止对外部自动化 API 的变更请求。适用于测试/实验室环境。生产环境在未明确允许的情况下,启用此项将无法启动。 |
| `SEERR_ALLOW_PRODUCTION_EXTERNAL_READ_ONLY` | 允许在生产环境中使用 `SEERR_EXTERNAL_READ_ONLY` 以创建有意的只读副本。请勿在可写的 request.snape.tech 部署上设置此项。 |
使用部署密钥、`.env` 文件或容器环境变量。请勿提交私有的 TMDB、Plex、Jellyfin、Emby、Radarr、Sonarr、Lidarr、Bookshelf、SMTP 或通知凭证。
### Cypress 运行时配置
Cypress 测试数据生成使用 `cypress/config/settings.cypress.json`,这是一个仅用于测试的配置,不包含活动的 Radarr、Sonarr、Lidarr 或 Bookshelf 设置。
默认情况下,`pnpm cypress:prepare` 和 `pnpm cypress:start` 使用 `CONFIG_DIRECTORY=cypress/runtime-config`,这样测试数据生成就不会覆盖活动的 `config/settings.json`。请勿将 `CONFIG_DIRECTORY` 指向 Cypress 运行的活动 `config` 目录。如果您有意需要使用 Cypress 数据重置活动设置,请设置 `SEERR_ALLOW_LIVE_CONFIG_OVERWRITE=true`;否则准备脚本会拒绝覆盖一个已配置了自动化服务的活动配置。
## 缓存与性能
SeerrNG 拥有多层缓存。它们旨在加快重复浏览、页面刷新和标签页恢复的速度,同时保持媒体数据相对新鲜。
- **Service Worker 运行时缓存** 使可缓存的 API 响应、静态资源、头像和图片代理响应可供浏览器使用。
- **陈旧-重新验证 API 响应** 允许可缓存的页面快速加载,同时后台请求刷新数据。
- **图片代理缓存** 将支持的外部图片存储在配置缓存目录下,并返回浏览器验证器以实现高效的 `304 Not Modified` 响应。
- **可见内容优先预热** 在首屏下方内容之前,为可见标题的图片进行预热。
- **隐藏标签页抑制** 在标签页隐藏时跳过图片预热,以便返回标签页时不会因过时的任务而使应用过载。
- **主机缓存** 覆盖 TMDB、MusicBrainz、ListenBrainz、Open Library、Cover Art Archive、TheAudioDB、Radarr、Sonarr、Lidarr、Readarr/Bookshelf、DNS 以及受支持的图片元数据。
- **任务与缓存设置** 提供缓存统计信息和清除控制。
如果 SeerrNG 在反向代理后运行,请勿全面剥离缓存头或对 `/imageproxy/*`、`/avatarproxy/*`、`/sw.js`、静态资源或可缓存的 API 响应强制设置 `Cache-Control: no-store`。应用页面和敏感路由可以保持不可缓存。
## 开发
要求:
- 与仓库/工具链版本匹配的 Node.js。
- `pnpm`。
- 用于本地开发的 SQLite,或用于测试该后端的 PostgreSQL。
安装依赖项:
```
pnpm install
```
运行开发服务器:
```
pnpm dev
```
有用的命令:
```
pnpm typecheck
pnpm typecheck:client
pnpm typecheck:server
pnpm lint
pnpm test
pnpm build
pnpm --dir gen-docs build
```
API 文档由运行的本地安装提供,地址为:
```
http://localhost:5055/api-docs
```
## 测试真实集成
对于音乐和图书的更改,请尽可能针对真实服务进行测试:
- 添加一个 Lidarr 服务器,将其设为默认,请求一张专辑,批准它,扫描它,重试失败案例,然后移除它。
- 添加一个兼容 Bookshelf/Readarr 的电子书服务器,通过搜索结果和特定版本/ISBN 请求一本书,批准它,扫描它,重试它,然后移除它。
- 添加一个独立的有声读物 Bookshelf 服务,测试纯有声读物请求以及双格式请求。
- 确认请求卡片、请求详情页、通知和后端链接指向正确的 SeerrNG 和服务页面。
请参阅 [docs/using-seerr/music-and-books-alpha.md](./docs/using-seerr/music-and-books-alpha.md) 获取当前的手动测试清单。
## 法律用途
SeerrNG 旨在用于合法的个人媒体管理。本项目不提供媒体,不绕过 DRM,也不纵容盗版或侵权行为。用户有责任遵守其所在地区适用的法律、许可和服务条款。
## 支持
- Discord:https://discord.gg/2N42G4RJCU
- 问题:https://github.com/snapetech/seerrng/issues
- 讨论:https://github.com/snapetech/seerrng/discussions
当您需要了解继承的部署或视频库行为背景时,请使用上游 Seerr 文档,但请在本仓库中报告 SeerrNG 特有的音乐、图书、缓存、打包和品牌问题。
## 贡献
贡献应针对 SeerrNG 行为和本仓库当前的分支布局。在提交拉取请求之前:
- 保持分支归属信息完整。
- 避免重新引入仅上游的品牌。
- 添加或更新用于请求、验证、服务路由、缓存和扫描器行为的测试。
- 运行相关的类型检查/测试命令。
- 按 [CONTRIBUTING.md](./CONTRIBUTING.md) 要求披露 AI 辅助情况。
## 归属
SeerrNG 基于 Seerr、Jellyseerr 和 Overseerr 构建。继承的代码、文档和设计仍归功于其原始贡献者。除非另有说明,否则分支特定的更改归功于 snapetech 和 SeerrNG 贡献者。完整的归属政策请参阅 [NOTICE.md](./NOTICE.md)。标签:Emby集成, Jellyfin集成, Lidarr集成, MITM代理, MusicBrainz, Open Library, Plex集成, Radarr集成, Readarr集成, Sonarr集成, 个人媒体库, 书籍请求, 元数据获取, 内容发现, 媒体管理, 媒体请求工具, 有声书管理, 测试用例, 用户权限, 电子书管理, 自托管媒体管理, 自托管应用, 请求批准, 请求拦截, 请求配额, 通知系统, 问题报告, 音乐请求