logo 由 @hernandito 设计
您的下一代YouTube媒体管理器
目录:
功能介绍
Pinchflat是一个基于yt-dlp构建的自托管YouTube内容下载应用。它设计得轻量、自包含且易于使用。您可以设置规则来下载YouTube频道或播放列表的内容,它会自动完成剩下的工作,定期检查新内容。它非常适合想要下载内容用于媒体中心应用(如Plex、Jellyfin、Kodi)的人,或者想要存档媒体的人!
虽然您可以下载单个视频,但Pinchflat最适合从频道或播放列表下载内容。它也不是用于在应用内消费内容的 - Pinchflat将内容下载到磁盘上,然后您可以使用媒体中心应用或VLC观看。
如果它不适合您的使用场景,请提出功能请求!您也可以查看这些优秀的替代方案:Tube Archivist、ytdl-sub和TubeSync
特性
- 自包含 - 只需一个Docker容器,无需外部依赖
- 强大的命名系统,让您可以按照想要的方式和位置存储内容
- 易于使用的Web界面,预设可以让您立即开始使用
- 对Plex、Jellyfin和Kodi等媒体中心应用提供一流支持
- 支持为您喜欢的播客应用提供RSS订阅源(文档)
- 自动从频道和播放列表下载新内容
- 使用新颖的方法比其他应用更快地下载新内容
- 支持下载音频内容
- 针对YouTube Shorts和直播的自定义规则
- 支持Apprise通知
- 允许在设定的时间段后自动重新下载新媒体
- 这可以帮助提高新内容的下载质量或改善SponsorBlock标签
- 可选自动删除旧内容(文档)
- 高级选项,如设置截止日期和按标题过滤
- 可靠的免操作运行
- 可以将cookies传递给YouTube以下载您的私人播放列表(文档)
- SponsorBlock集成
- [高级] 允许自定义
yt-dlp
选项(文档) - [高级] 支持在下载/删除媒体后运行自定义脚本(alpha版 - 文档)
截图
安装
Unraid
只需在社区应用商店中搜索Pinchflat即可!
Portainer
[!重要]
请参阅下面关于在网络文件共享上存储配置的说明。如果可能的话,最好将配置存储在本地磁盘上。
Docker Compose文件:
version: '3'
services:
pinchflat:
image: ghcr.io/kieraneglin/pinchflat:latest
environment:
# 将时区设置为您的本地时区
- TZ=America/New_York
ports:
- '8945:8945'
volumes:
- /host/path/to/config:/config
- /host/path/to/downloads:/downloads
Docker
- 在您的主机上创建两个目录:一个用于存储配置,一个用于存储下载的媒体。确保运行Docker容器的用户对这两个目录都有写入权限。
- 通过以下两种方式之一准备docker镜像:
- 从GHCR获取:
docker pull ghcr.io/kieraneglin/pinchflat:latest
- 注意:也可以在Docker Hub上使用
keglin/pinchflat:latest
- 注意:也可以在Docker Hub上使用
- 本地构建:
docker build . --file docker/selfhosted.Dockerfile -t ghcr.io/kieraneglin/pinchflat:latest
- 从GHCR获取:
- 运行容器:
# 请确保将下面的 /host/path/to/config 和 /host/path/to/downloads 替换为
# 您在第1步中创建的目录路径
# 请确保将 America/New_York 替换为您的本地时区
docker run \
-e TZ=America/New_York \
-p 8945:8945 \
-v /host/path/to/config:/config \
-v /host/path/to/downloads:/downloads \
ghcr.io/kieraneglin/pinchflat:latest
重要:文件权限
您必须确保您挂载的主机目录可以被运行Docker容器的用户写入。如果遇到权限错误,请按照提示的步骤操作。更多信息请参见 #106。
[!重要] 不建议以root用户身份运行容器。这样做可能会在其他应用程序需要处理下载的媒体时造成权限问题。
[!提示] 如果需要以root身份运行任何命令,可以在容器的shell中运行
su
,因为root用户没有设置密码。
高级:在网络共享上存储Pinchflat配置目录
正如 #137 中指出的,SQLite不喜欢在网络共享上以WAL模式运行。如果您在网络共享上运行Pinchflat,可以通过将JOURNAL_MODE
环境变量设置为delete
来禁用WAL模式。这将使Pinchflat以回滚日志模式运行,性能较低但应该可以在网络共享上工作。
[!警告] 在现有的Pinchflat实例上将此设置从WAL更改为
delete
可能会导致数据丢失。只有在您知道自己在做什么、了解这一点的重要性并且可以接受可能的数据丢失或数据库损坏的情况下,才更改此设置。首先备份您的数据库!
如果您更改了此设置并且效果良好,请在 #137 上留下评论!如果效果不佳,更要留言!
环境变量
名称 | 是否必需? | 默认值 | 注释 |
---|---|---|---|
TZ | 否 | UTC | 必须遵循IANA TZ格式 |
LOG_LEVEL | 否 | debug | 可以设置为info ,但强烈建议使用debug |
BASIC_AUTH_USERNAME | 否 | 参见身份验证文档 | |
BASIC_AUTH_PASSWORD | 否 | 参见身份验证文档 | |
EXPOSE_FEED_ENDPOINTS | 否 | 参见RSS源文档 | |
JOURNAL_MODE | 否 | wal | 如果您的配置目录存储在网络共享上,请设置为delete (不推荐) |
TZ_DATA_DIR | 否 | /etc/elixir_tzdata_data | 存储时区数据库的容器路径 |
BASE_ROUTE_PATH | 否 | / | 路由生成的基本路径。在某些反向代理后运行时很有用 |
YT_DLP_WORKER_CONCURRENCY | 否 | 2 | 每个队列使用yt-dlp 的并发工作者数量。如果遇到IP限制,请设置为1,否则不要更改 |
EFF捐款
在2024年5月10日之前,所有捐款的一部分都会捐给电子前沿基金会。现在,应用程序不接受个人捐款,而是直接引导您到EFF。这里列出了一些慷慨捐款的人。
EFF捍卫您的在线自由,并在谷歌下架youtube-dl
时支持了它。
预发布免责声明
这是预发布软件,任何功能随时可能发生变化。我不对此软件的稳定性、更新的向前兼容性或完整性(无论是否与Pinchflat相关)做出任何保证。本质上,使用风险自负,并且目前可能存在一些粗糙之处。
许可证
参见LICENSE
文件