ytptube

arabcodersMIT活跃维护

基于 yt-dlp 的自托管媒体下载管理器,提供并发下载、自动化接口和媒体库整理,适合批量抓取 YouTube 等站点视频。

Media download manager, automation interface, and media library preparation layer for yt-dlp

v2.7.7发布于 2026-11-08 07:57 UTC1,063star +3 / 7 天41fork同步于 2026-11-10 17:53 UTC

怎么上手

由 README 提炼,执行前请确认
mkdir -p ./{config,downloads/{files,tmp}}
docker compose up -d
硬件要求按 README 说明

README 未说明具体硬件要求;提供 Docker、Podman、Unraid 及 Windows/macOS/Linux 原生构建,compose 示例含硬件加速注释但未列型号。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自托管的 yt-dlp 下载管理器,用网页界面统一处理下载、定时任务和媒体库整理

基于 yt-dlp 的自托管媒体下载管理器,提供并发下载、自动化接口和媒体库整理,适合批量抓取 YouTube 等站点视频。

核心能力

  • 用 Tasks 定时检查频道、播放列表和订阅源
  • 用 Presets 复用 yt-dlp 选项、输出模板和 Cookie
  • 按 yt-dlp 元数据用 Conditions 匹配并套用选项
  • 生成 Kodi 风格 NFO、.info.json 和封面图
  • 内置文件浏览器、播放器和 HTTP API

容易踩的坑

默认监听 8081 端口,首次访问需创建本地账号;认证用户即管理员,可传执行命令的 yt-dlp 选项,勿暴露到不可信网络;原生构建需按 docs/native-builds.md 另行安装。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.7.7
  1. v2.7.7最新正式版2026-11-08 · 2026-11-08 07:57 UTC

    What's Changed

    Full Changelog: https://github.com/arabcoders/ytptube/compare/v2.7.6...v2.7.7


    Commits since v2.7.6

    • 2426f47 refactor: improve playback of fmp4 content in player.
    • f519028 Feat: add toolbox feature
    • 660b3cc dev: add --no-auto-migration flag to prevent automatic database upgrades during development.
    • d5a35b7 tests: fix flakey tests
    • 1d2ad27 Refactor: apply simple conditions on yt-dlp info requests
    • 9ca0708 refactor: update defualt presets
  2. v2.7.62026-10-27 · 2026-10-27 09:42 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/arabcoders/ytptube/compare/v2.7.5...v2.7.6


    Commits since v2.7.5

    • bc5e3c0 chore: update dependancies and fix lint issues
    • c55593c refactor: generate CHANGELOG via CI
    • 76995f7 fix: generate changelog
    • e9de187 docs: add links to related projects in README
    • 405524c chore: update external dependancies
    • 95b55ca chore: update external packages
  3. v2.7.52026-10-11 · 2026-10-11 04:11 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/arabcoders/ytptube/compare/v2.7.4...v2.7.5


    Commits since v2.7.4

    • 4e7df16 fix: incorrect args splitting on windows. Closes #684
    • 0670a76 feat: add cli interface to the API
    • 7f2f1f1 refactor(tests); remove useless tests
    • d7f742c feat: save playback position server side
    • 047cc6f fix: typechecks
    • abeff26 fix: restore packaging dependancy
    • bd7b65b refactor: make commit sha clickable
    • cbe6b98 feat: add media handlers
    • a3e30a5 fix(tests): mock ffmpeg
    • 80d9a8f refactor: update the docs to drop misleding /ytptube/ prefix in auth example
    • dfd45aa refactor: glassify some elements
    • f71bb23 refactor: improve the video player.
    • 2758dd2 refactor: pin bun to 1.4.2
    • 6e5d795 fix: nfo runtime and poster vs thumb. Closes #690
    • 6a46862 refactor: update hls segmenting
    • 13f8b29 fix: ci tests
    • 82c9bf2 refactor: remove flakey tests
    • bce2a93 fix: restore closing player automaticly if file no longer exists.
  4. v2.7.42026-09-22 · 2026-09-22 13:57 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/arabcoders/ytptube/compare/v2.7.3...v2.7.4


    Commits since v2.7.3

    • 33bb0d6 feat: support yt-dlp search query to playlist picker
    • 3130080 feat: link active history items to tasks.
    • 9d840a4 feat: improve file search functionality.
    • bcd2dd9 refactor: add fd to container
    • c00249f refactor: add direct path to browser
    • ad87e1c refactor(ci): improve gitea CI
    • f2b053d refactor: show task in item details
    • 77d75cc fix: taskSourceUrl was too strict
    • d5f46f2 fix: spacing between path/task and their value in open details
    • e2c8bc7 fix(build): bundle joserfc submodules. Closes #682
  5. v2.7.3v2.7.3: OIDC Support2026-09-17 · 2026-09-17 06:55 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/arabcoders/ytptube/compare/v2.7.2...v2.7.3


    Commits since v2.7.2

    • a3f54df refactor: reflow text batter in user account modal
    • de1e05c refactor: bundle bgutil server
    • 619110b fix: redirect from setup if auth is disabled.
    • d9c64c5 refactor: solver and generic_browser to be more resilient
    • 5a930c9 feat: auto trim filename
    • 1ad4988 refactor: cleanup tests
    • e5de247 refactor: remove dual view on feature pages, and improve rendering for limits page.
    • def2009 fix: missing thumbnail/runtime for tv maker. Closes #676
    • dca35ad chore: update dependancies
    • c9da0f2 feat: ios shortcut helper for direct download.
    • 5f438d0 chore: update external packages
    • 62e11c3 chore: add gihooks
    • 34ba935 refactor: move webext inhouse
    • 83d9e32 feat: firefox android support for webext
    • e0ae460 feat: the ability to ignore conditions in tasks.
    • 483d375 chore: packages update
    • c1ec09f feat: add oidc support.
    • 48e1597 feat: update get_channel_images to prefer landscape for fanart. Closes #679

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    YTPTube

    Build Status MIT License Docker Pulls GHCR Pulls

    YTPTube is a self-hosted download manager, automation interface, and media library preparation layer for yt-dlp. It handles one-off downloads, recurring sources, metadata-based rules, concurrent queues, and organized output from the same web interface.

    YTPTube's automation tools can be used separately or together:

    • Tasks check channels, playlists, feeds, and supported custom sources on a schedule.
    • Presets store reusable yt-dlp options, output templates, paths, cookies, and post-processing settings.
    • Conditions optionally inspect metadata returned by yt-dlp and apply matching options.

    See Features for the full workflow.

    If you like my work, you might also like my other projects:

    • WatchState: Sync your media servers without relying on 3rd parties.
    • Millwright: Automation interface for FFmpeg.
    • DCompose: Manage your servers/nodes compose stacks from one WebUI.

    Screenshots

    Standard interface:

    Standard interface

    Simple mode:

    Simple mode

    The interface is available in English, العربية, Français, 中文, and 日本語. See the language FAQ.

    What It Handles

    • Individual URLs, playlists, channels, live streams, and upcoming streams
    • Concurrent downloads with global and per-extractor limits
    • Scheduled Tasks for recurring sources and sites without RSS feeds
    • Reusable default presets, including NFO Maker and media-server presets
    • Conditions that apply yt-dlp options from extracted metadata
    • Notifications for selected events through Apprise or direct HTTP webhooks
    • Browser extension (source) for Firefox desktop and Android and Chrome/Chromium
    • iOS Shortcuts, a bookmarklet, and an HTTP API
    • A file browser and built-in player with external sidecar subtitle support and optional file action controls
    • Kodi-style TV and movie NFO sidecars, .info.json metadata, artwork, and media library naming
    • curl-cffi impersonation and a bundled PO-token provider
    • An optional browser extraction over existing Chrome instance
    • Optional direct yt-dlp control through the terminal interface
    • Optional integration with FlareSolverr or Trawl to allow yt-dlp to bypass some WAF protection.
    • Queue and archive controls, live logs, diagnostics, and optional resource monitoring
    • Docker, Podman, Unraid, and native builds for Windows, macOS, and Linux

    Read Features for details and links to the relevant configuration guides.

    Media Libraries

    YTPTube NFO Maker integration turns yt-dlp metadata into Kodi-style TV or movie .nfo sidecars, cleans descriptions for library use, creates stable IDs, and keeps each NFO beside its media file. NFO files can be generated during the download or later from history.

    Scheduled Tasks can separately create collection metadata like tvshow.nfo, .info.json, and artwork images when the source provides them. A separate info-reader Preset writes predictable channel and season layouts with yt-dlp metadata for compatible Jellyfin, Emby, Plex, and WatchState workflows.

    See Media Servers and NFO Maker for the three workflows and their limits.

    Quick Start

    The included compose.yaml runs YTPTube with the bundled POT provider, Chromium browser extraction, and FlareSolverr support. It also contains commented host-specific examples for hardware acceleration and NFS/SMB storage. See the environment variable reference for additional application settings.

    Create the directories and start the container:

    mkdir -p ./{config,downloads/{files,tmp}}
    docker compose up -d
    

    Open http://localhost:8081 and create the first local account.

    The container runs as your user and group IDs so downloaded files remain accessible to the host account. Podman users can replace the user line with userns_mode: keep-id and run podman-compose up -d.

    mkdir -p ./{config,downloads/{files,tmp}} && docker run -itd --rm \
      --user "$(id -u):$(id -g)" \
      --name ytptube \
      -e YTP_TEMP_PATH=/downloads/tmp \
      -e YTP_DOWNLOAD_PATH=/downloads/files \
      -p 8081:8081 \
      -v ./config:/config:rw \
      -v ./downloads:/downloads:rw \
      ghcr.io/arabcoders/ytptube:latest
    
    mkdir -p ./{config,downloads/{files,tmp}} && podman run -itd --rm \
      --userns=keep-id \
      --name ytptube \
      -e YTP_TEMP_PATH=/downloads/tmp \
      -e YTP_DOWNLOAD_PATH=/downloads/files \
      -p 8081:8081 \
      -v ./config:/config:rw \
      -v ./downloads:/downloads:rw \
      ghcr.io/arabcoders/ytptube:latest
    

    Other Installations

    Unraid

    Install the Community Applications plugin, search for ytptube, and use the pre-configured template.

    Native Builds

    Download the Windows, macOS, or Linux archive from GitHub Releases. Read the native-build guide for installation and usage instructions.

    Security

    [!IMPORTANT] Do not expose YTPTube to an untrusted network without authentication. Authenticated users are instance administrators and can pass yt-dlp options, including options that execute commands.

    Server installations require local account setup. Only disable authentication when a trusted reverse proxy controls access or the instance is restricted to a private network. Read the security recommendations before exposing an instance and use security advisories to report vulnerabilities.

    Documentation

    Project Policy

    YTPTube is a personal-first project. Contributions are welcome ONLY after approval from the maintainer following prior discussion. Any unsolicited pull requests will be declined. Read CONTRIBUTING.md before starting any work to not waste your and the maintainer's time.

    AI-assisted tools have been used in this project and will continue to be used where I find them useful. This project is built for my own needs and use cases, and I maintain it according to my own preferences.

    You are welcome to use it if it works for you, but I will not change the project's development approach to accommodate your objections. I believe these tools can be genuinely useful when used appropriately. If the use of AI-assisted tools is a deal-breaker for you, this project may not be the right fit for you. Feel free to build your own.

    YTPTube is not affiliated with yt-dlp or any supported service. It is intended for downloading content you are permitted to access, not for piracy or unlawful use.

    Community

    For short questions, join the Discord server. YTPTube is maintained as a solo project, so replies may take some time.

    If you want to support the work financially, please donate to a children's charity such as Make-A-Wish International instead.