YoutubeDL-Material

Tzahi12345MIT更新放缓

自托管的 YouTube 视频下载器,基于 Material Design 提供清爽的网页界面,方便在个人服务器上批量保存视频和音频。

Self-hosted YouTube downloader built on Material Design

v4.3.2发布于 2023-05-26 02:23 UTC3,200star +1 / 7 天332fork同步于 2026-11-10 23:42 UTC

怎么上手

由 README 提炼,执行前请确认
curl -L https://github.com/Tzahi12345/YoutubeDL-Material/releases/latest/download/docker-compose.yml -o docker-compose.yml
docker-compose pull
docker-compose up
硬件要求按 README 说明

README 未说明 GPU 或显存要求;依赖 Node.js 16 与 Python,可运行在普通 CPU 服务器或 NAS 上(README 提到 Synology、unRAID、树莓派 4 有专门说明)。

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

项目说明

由 README 自动翻译提炼

自托管的 YouTube 下载器,用 Material Design 界面包装 youtube-dl,把命令行下载变成可点选的网页

自托管的 YouTube 视频下载器,基于 Material Design 提供清爽的网页界面,方便在个人服务器上批量保存视频和音频。

核心能力

  • Angular 15 前端 + Node.js 后端,提供 Material Design 网页界面
  • 基于 youtube-dl 执行实际下载,支持粘贴链接直接下载
  • 可选用 MongoDB 作为后端数据库,改善上万条视频时的性能
  • 内置公开 API,在设置中启用并生成 apiKey 后可调用
  • 提供 iOS 快捷指令,两三次点击即可发起下载

容易踩的坑

非 Docker 安装需先装 Node.js 16、Python、youtube-dl 和 ffmpeg,缺一不可;Docker 默认对外端口是 8998,而容器内部端口是 17443,别连错;默认用 json 文件存数据,数据量大时需自行切换 MongoDB 后端;嵌入缩略图需额外安装 AtomicParsley。

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

最近发版

5 个版本v4.3.2
  1. v4.3.2最新正式版2023-05-26 · 2023-05-26 02:23 UTC

    Very small update :) Mainly to fix some permissions issues some users were seeing in Docker. Excited to introduce a new Task that will help rebuild your database if it ever breaks. Also for those using armv7, this update reintroduces it.

    New features

    • Reintroduced armv7 support
    • Added task for rebuilding the database

    Minor additions

    • Improved mobile UI for downloads (home screen & downloads manager)
    • Translations updates

    Bug fixes

    • Fixed issue related to docker UID/GID permissions
    • Fixed issue where temp archives would get generated for subscriptions even if none were present

    Full Changelog: https://github.com/Tzahi12345/YoutubeDL-Material/compare/v4.3.1...v4.3.2

    Special thanks to @martadinata666 for helping introduce some of these key fixes.

  2. v4.3.12023-05-07 · 2023-05-07 03:40 UTC
    查看更新说明

    Hi all! Got a bigger update than I originally intended, but I doubt anyone will complain :)

    Before I get to what's new, one thing I want to mention is Node.js v16 is now required for those not using Docker. So many people helped make this update possible, between translations, pull requests, feature suggestions, and bug reports. I really do appreciate the support.


    Features

    • Notifications (#440)
      • Supports third party services
        • Discord
        • Telegram
        • Slack
        • ntfy
        • Gotify
        • You can also use a generic webhook URL to connect with Zapier-like services
    • Download archive now (mostly) handled in DB rather than text files (#809)
      • Should prevent file lock errors from occurring. New archive viewer is now available with ability to import/export archives
      • Even with youtube-dl archive setting disabled, subscription videos can be permanently deleted
    • UI refresh
    • Added ability to favorite/unfavorite videos
    • Added RSS feed for downloads (#388)
    • Added task to delete old files (#358)

    Minor improvements

    • Removed allow_autoplay setting and replaced it with force_autoplay (#695)
    • Updated to Angular 15
    • Node.js v16 is now required
    • Expected file size now visible from UI in the quality select menu (#838)
    • Added settings for tasks
    • For non-YT videos, available resolutions will now be shown rather than presenting maximum desired values

    Bug fixes

    • Fixed broken Twitch VOD chat downloads (#859)
    • Fixed an issue where subscriptions would only show 10 downloads (#715)
    • Fixed an issue where encrypted streams could not be decoded (#819)
    • Fixed an issue where download progress was not displayed (#774)
    • Fixed an issue related to duplicate subscription names (#801)
    • Fixed an issue preventing custom args with values from being used (#745)
    • Switched default mongo version to v4 due to AVX incompatibility issues (#733)
    • Fixed an issue where videos would still download for a subscription after unsubscribing (#689)
    • Fixed an issue where task scheduling wasn't considering the container time-zone (#810)
    • Fixed an issue where role/user permissions could not be changed
    • Fixed an issue where the simulated output in Advanced download mode would only appear once changes were made to args

    One thing I've had in the works is trying to get an electron app (desktop version) functional. I'm ~95% of the way there, but the last bit will be tough. I'll keep everyone posted on that here: https://github.com/Tzahi12345/YoutubeDL-Material/discussions/409

  3. v4.32022-06-27 · 2022-06-27 04:51 UTC
    查看更新说明

    Hi everyone! It's been about a year and a half since the last update, so we've been due for one to say the least. If you're on the nightly tag, most of these you'll have already seen. If not, then you're in for a lot of improvements!

    Features

    • MongoDB support!
      • MongoDB is now preferred over the default, local DB. It's much quicker and at scales, leads to a much smoother experience
      • You can transfer your local DB to MongoDB using the Database tab in the settings menu
      • No more corrupt DBs! Regardless, please back up your DB regularly
    • New download manager
      • Downloads can now be tracked and managed through a new interface. Downloads can be paused, restarted, and errors can be viewed.
      • Subscriptions now use the new download manager, preventing subs from getting locked up checking for new downloads and streamlining the download process
    • New tasks & maintenance page
      • Added ability to run or schedule specific tasks
        • Backup/Restore DB
          • MongoDB backups can be done through MongoDB, we simply store it into a JSON file locally
        • Check for DB records with missing files
        • Import missing DB records
        • Fix duplicate files in DB
        • Update youtube-dl (or whatever repo you use)
    • Concurrent streams
      • You can now watch your videos simultaneously with friends! Click here for a demo.
    • File metadata can now be modified from the UI
      • Just click the info button on files and you'll see a new edit button on the top right of the dialog!
    • Much faster downloads with yt-dlp as the new default downloader!

    Minor improvements

    UI

    • Dedicated settings page
      • Settings dialog has been converted into a page for ease-of-use
      • Added option to rate-limit downloads
    • Added pagination to files on the home screen
    • Home screen files can now be filtered by type (audio or video)
    • Version and commit info can now be viewed from the About dialog
    • Updated subscription pages to use the new file cards (icons) from the home page
    • Hovering over a file card will now show a preview of that video
    • Fonts and bootstrap are now hosted locally (Thanks @firstdorsal for the PR!)
    • Added ability to crop files prior to downloading
    • New translations. We now support:
      • English
      • Spanish
      • Chinese
      • Dutch
      • French
      • German
      • Italian
      • Czech
      • Norwegian
      • Finnish
      • Korean
      • Macedonian
      • Portuguese
      • Russian
      • Telugu
      • Indonesian
      • Some of these are only partial translations. If you'd like to help out click here!. Special thanks to everyone who's helped out so far!

    Backend

    • Added args overriding support
      • E.g. global custom args will override default args, per-subscription args will override all other args
    • File sharing should work a lot more reliably
    • Improved arg simulation (it now occurs on the backend)

    Dependencies/Integrations

    • Added Kodi .nfo file generation support
    • Helm chart added (Thanks @benashby for the PR!)
    • Heroku deployments now use Docker
    • Angular updated to v13
    • PM2 is now used instead of nodemon to enable server restarts
    • Updated Twitch VOD chat downloading to use new Twitch API
      • Twitch-Chat-Downloader is now required, and a client secret must be set along with a client ID
      • Benefit is chat downloads are much faster!
    • SponsorBlock integration! Enable it in the settings and all supported videos will show a "skip ad" button where appropriate

    Behind-the-scenes

    • API docs now automated
    • Much improved wiki (Thanks to @GlassedSilver for the support!)
    • Tons of new automation using GitHub Actions
    • Added unit tests (coverage will be a long-term WIP)

    Bug fixes

    • Way too many to name! Sorry if this section excites you,
  4. v4.22020-12-24 · 2020-12-24 08:35 UTC
    查看更新说明

    Merry Christmas! We got a huge update incoming, with major feature additions, optimizations, and a ton of bug fixes. The community has been integral in helping track these down, so if I forgot to give a shoutout, this is my way of thanking you all. Between the PRs, the suggestions, and the bug fixes, the support from you guys has been incredible.

    NOTE: This update has breaking changes so if you'd like to revert, you can rename the backed up database files in the appdata folder to their original name and get back to the old setup.

    Features

    • Homepage redesign
      • The home page has been redesigned with new file "cards", you can customize their size in the "about" dialog
      • "My videos" shows both subscription and regular downloads in one (paged) list, which can now be filtered and ordered to your choosing
        • Paging the files means much better performance for users with a high number of videos
        • Video duration and download date is shown
      • "Custom playlists" replaces the old playlist section
    • Subscriptions
      • Added ability to edit subscriptions
        • Added ability to "pause" a subscription, set a maximum quality, and custom file output
      • Added ability to redownload "fresh" downloads (thanks @GlassedSilver for suggesting this!)
        • TL;DR is that newly uploaded videos will get redownloaded on the next day to avoid the issue where a video is downloaded before a higher quality version is processed
      • You can now add subscriptions with the same URL (caveat: the name has to be different)
      • You can directly access subscriptions from the hamburger menu
      • Added a loading bar to the subscription view when a subscription is checking/downloading videos
    • Video player improvements
      • Video description is now included if available
      • Updated save and share icons styling and location so that it doesn't hide important content anymore
    • Categories (thanks @GlassedSilver for this feature request!)
      • You can now create rule-based "categories" in the settings menu where videos can be organized and searched based on the given category
      • Automatic (uneditable) playlists are created from categories
    • Twitch chat support (thanks @GlassedSilver for this great suggestion!)
      • You can now download and view Twitch chats in the video player. You can add a Twitch API key in the settings menu and on Twitch VODs a "chat" icon will pop up in the player
      • These can be automatically downloaded as well

    Minor improvements

    • Downloading
      • Max quality will always download the max quality (instead of the best mp4)
      • Progress bar is now visible for all videos
      • Downloading in general is a lot more stable, and you can now choose to download with either youtube-dl or youtube-dlc
      • Thumbnails are now downloaded automatically
      • You can opt not to download the JSON metadata as well, though it's recommended you keep it as in future updates we may draw more information from it
      • Added a "Kill all downloads" button in the settings
    • Backend
      • Simplified database structure to allow for less code reuse (this is a breaking change)
      • Files that have been downloaded but not registered in the database will now be automatically added on startup
      • Bcrypt.js is now used to avoid security vulnerabilities with bcrypt
      • Improved performance by using async functions in key areas (thanks @NotWoods for doing this!)
    • Docker
      • ARM builds now use the normal Docker tags and autobuild without issue (it is now done through GitHub rather than Dockerhub, thanks @diveflo for implementing this!)
    • Misc
      • Added ability to login using LDAP
      • Added French, Chinese, and Norweigan support
      • Use encryption option is now deprecated, if you would like to use encryption please use a reverse-proxy (instructions here)
      • Tab title in browser now matches the top title set in the settings
      • Ctrl-clicking files opens them in a new tab, right clicking files lets you simply open it or open it in a
  5. v4.1YoutubeDL-Material v4.12020-07-04 · 2020-07-04 16:23 UTC
    查看更新说明

    New update inbound! This one is focused on bug fixes and accessibility improvements. Subscriptions got its third iterative update as well, so we hope you enjoy those features as well. Since the last update, our Docker pulls have grown almost 600%, we're almost at 1 million now! Thank you everyone for your support, suggestions, bug fixes, and PR's. It's been amazing!

    New features

    • Subscriptions v3!
      • You can now use custom args and file outputs for subscriptions
      • Added ability to make subscription audio-only - thanks @Code-Slave for this suggestion!
      • Subscription videos are now stored in the DB, meaning the list of videos should load quicker and additional features like subscription video sharing can be added in the future
    • You can now input and use your YouTube cookies in YoutubeDL-Material using the new cookies uploader in the settings
      • This allows you to download private videos and playlists
      • It may prevent 429 errors from occuring for some users
    • New playlist modification dialog
      • Change the playlist name, the videos in the playlist, and their order. Thanks @bodzio4749 for inspiring this!
    • Docker build now runs as non-root by default, adding an extra layer of security
      • Grateful to @SuperSandro2000 and @Wonderfall for getting this implemented, thank you both!
    • Support for the German language
      • You can now select Deutsch in addition to English and Spanish in the language select in the settings
      • Thanks to @UnlimitedCookies, @SuperSandro2000, and @GlassedSilver for their organized efforts!

    Minor additions

    • Added Safe download override checkbox in the settings which will force the backend to use the safer downloading option
      • If you enable this override, you will lose the ability to see download progress
    • Added ability to clear all downloads from a session in the downloads manager
    • The ID for videos in the file manager will now by default use the youtube ID, rather than the file name - thanks @CountParadox for suggesting this!
    • Pressing enter in the URL input will now trigger a download
    • If you delete a video that was downloaded with a thumbnail, the thumbnail will autodelete as well - Thanks @GlassedSilver for recommending this!

    Bug fixes

    • Fixed bug that prevented sharing videos with non-users if multi-user mode was enabled
    • Fixed bug that caused the server to crash when attempting to update youtube-dl
    • Fixed bug where updating a user's password would update the admin's password instead - thanks @UnlimitedCookies for finding this one!
    • @web-connect fixed a typo in the logger section of the settings, thank you!
    • Fixed several bugs preventing non-YT videos from download - thanks @CountParadox for submitting bug reports on this front!

    That's all for this update (hope I didn't miss anything). In the next update, we'll hopefully see a redesign of the home screen with a unified view of subscription and non-subscription downloads, focusing on providing a much stronger user experience. If you'd like to read more or provide input, you can see the issue here. Cheers!

用户点评

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

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

    README 原文

    未翻译

    YoutubeDL-Material

    Docker pulls badge Docker image size badge Heroku deploy badge GitHub issues badge License badge

    YoutubeDL-Material is a Material Design frontend for youtube-dl. It's coded using Angular 15 for the frontend, and Node.js on the backend.

    Now with Docker support!

    Getting Started

    Check out the prerequisites, and go to the installation section. Easy as pie!

    Here's an image of what it'll look like once you're done:

    Dark mode:

    Prerequisites

    NOTE: If you would like to use Docker, you can skip down to the Docker section for a setup guide.

    Required dependencies:

    • Node.js 16
    • Python

    Optional dependencies:

    • AtomicParsley (for embedding thumbnails, package name atomicparsley)
    • Twitch Downloader CLI (for downloading Twitch VOD chats)
    curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
    sudo apt-get install nodejs youtube-dl ffmpeg unzip python npm
    
    sudo yum install epel-release
    sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
    sudo yum install centos-release-scl-rh
    sudo yum install rh-nodejs12
    scl enable rh-nodejs12 bash
    curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
    sudo yum install nodejs youtube-dl ffmpeg ffmpeg-devel
    

    Installing

    If you are using Docker, skip to the Docker section. Otherwise, continue:

    1. First, download the latest release!

    2. Drag the youtubedl-material directory to an easily accessible directory. Navigate to the appdata folder and edit the default.json file.

    NOTE: If you are intending to use a reverse proxy, this next step is not necessary

    1. Port forward the port listed in default.json, which defaults to 17442.

    2. Once the configuration is done, run npm install to install all the backend dependencies. Once that is finished, type npm start. This will run the backend server, which serves the frontend as well. On your browser, navigate to to the server (url with the specified port). Try putting in a youtube link to see if it works. If it does, viola! YoutubeDL-Material is now up and running.

    If you experience problems, know that it's usually caused by a configuration problem. The first thing you should do is check the console. To get there, right click anywhere on the page and click "Inspect element." Then on the menu that pops up, click console. Look at the error there, and try to investigate.

    Build it yourself

    If you'd like to install YoutubeDL-Material, go to the Installation section. If you want to build it yourself and/or develop the repository, then this section is for you.

    To deploy, simply clone the repository, and go into the youtubedl-material directory. Type npm install and all the dependencies will install. Then type cd backend and again type npm install to install the dependencies for the backend.

    Once you do that, you're almost up and running. All you need to do is edit the configuration in youtubedl-material/appdata, go back into the youtubedl-material directory, and type npm run build. This will build the app, and put the output files in the youtubedl-material/backend/public folder.

    Lastly, type npm -g install pm2 to install pm2 globally.

    The frontend is now complete. The backend is much easier. Just go into the backend folder, and type npm start.

    Finally, if you want your instance to be available from outside your network, you can set up a reverse proxy.

    Alternatively, you can port forward the port specified in the config (defaults to 17442) and point it to the server's IP address. Make sure the port is also allowed through the server's firewall.

    Docker

    Host-specific instructions

    If you're on a Synology NAS, unRAID, Raspberry Pi 4 or any other possible special case you can check if there's known issues or instructions both in the issue tracker and in the Wiki!

    Setup

    If you are looking to setup YoutubeDL-Material with Docker, this section is for you. And you're in luck! Docker setup is quite simple.

    1. Run curl -L https://github.com/Tzahi12345/YoutubeDL-Material/releases/latest/download/docker-compose.yml -o docker-compose.yml to download the latest Docker Compose, or go to the releases page to grab the version you'd like.
    2. Run docker-compose pull. This will download the official YoutubeDL-Material docker image.
    3. Run docker-compose up to start it up. If successful, it should say "HTTP(S): Started on port 17443" or something similar. This tells you the container-internal port of the application. Please check your docker-compose.yml file for the external port. If you downloaded the file as described above, it defaults to 8998.
    4. Make sure you can connect to the specified URL + external port, and if so, you are done!

    Custom UID/GID

    By default, the Docker container runs as non-root with UID=1000 and GID=1000. To set this to your own UID/GID, simply update the environment section in your docker-compose.yml like so:

    environment:
        UID: YOUR_UID
        GID: YOUR_GID
    

    MongoDB

    For much better scaling with large datasets please run your YoutubeDL-Material instance with MongoDB backend rather than the json file-based default. It will fix a lot of performance problems (especially with datasets in the tens of thousands videos/audios)!

    Tutorial.

    API

    API Docs

    To get started, go to the settings menu and enable the public API from the Extra tab. You can generate an API key if one is missing.

    Once you have enabled the API and have the key, you can start sending requests by adding the query param apiKey=API_KEY. Replace API_KEY with your actual API key, and you should be good to go! Nearly all of the backend should be at your disposal. View available endpoints in the link above.

    iOS Shortcut

    If you are using iOS, try YoutubeDL-Material more conveniently with a Shortcut. With this Shortcut, you can easily start downloading YouTube video with just two taps! (Or maybe three?)

    You can download Shortcut here.

    Contributing

    If you're interested in contributing, first: awesome! Second, please refer to the guidelines/setup information located in the Contributing wiki page, it's a helpful way to get you on your feet and coding away.

    Pull requests are always appreciated! If you're a bit rusty with coding, that's no problem: we can always help you learn. And if that's too scary, that's OK too! You can create issues for features you'd like to see or bugs you encounter, it all helps this project grow.

    If you're interested in translating the app into a new language, check out the Translate wiki page.

    Authors

    • Isaac Grynsztein (me!) - Initial work

    Official translators:

    • Spanish - tzahi12345
    • German - UnlimitedCookies
    • Chinese - TyRoyal

    See also the list of contributors who participated in this project.

    License

    This project is licensed under the MIT License - see the LICENSE.md file for details

    Legal Disclaimer

    This project is in no way affiliated with Google LLC, Alphabet Inc. or YouTube (or their subsidiaries) nor endorsed by them.

    Acknowledgments

    • youtube-dl
    • AllTube (for the inspiration)