GithubHelp home page GithubHelp logo

pachi23 / yt-dlp-web-ui Goto Github PK

View Code? Open in Web Editor NEW

This project forked from marcopeocchi/yt-dlp-web-ui

0.0 0.0 0.0 12.42 MB

A terrible web ui for yt-dlp ๐Ÿ™„. Designed to be self-hosted.

License: Mozilla Public License 2.0

Go 27.53% TypeScript 70.89% Makefile 0.50% HTML 0.38% Dockerfile 0.70%

yt-dlp-web-ui's Introduction

yt-dlp Web UI

A not so terrible web ui for yt-dlp.
Created for the only purpose of fetching videos from my server/nas.

Intended to be used with docker and in standalone mode. ๐Ÿ˜Ž๐Ÿ‘

Developed to be as lightweight as possible (because my server is basically an intel atom sbc).

The bottleneck remains yt-dlp startup time.

Docker images are available on Docker Hub or ghcr.io.

docker pull marcobaobao/yt-dlp-webui
# latest stable
docker pull ghcr.io/marcopeocchi/yt-dlp-web-ui:latest
# latest dev version
docker pull ghcr.io/marcopeocchi/yt-dlp-web-ui:master

Integrated File browser

Stream or download your content, easily.

Changelog

05/03/22: Korean translation by kimpig

03/03/22: cut-down image size by switching to Alpine linux based container

01/03/22: Chinese translation by deluxghost

03/02/22: i18n enabled! I need help with the translations :/

27/01/22: Multidownload implemented!

26/01/22: Multiple downloads are being implemented. Maybe by next release they will be there.
Refactoring and JSDoc.

04/01/22: Background jobs now are retrieved!! It's still rudimentary but it leverages on yt-dlp resume feature.

05/05/22: Material UI update.

03/06/22: The most requested feature finally implemented: Format Selection!!

08/06/22: ARM builds.

28/06/22: Reworked resume download feature. Now it's pratically instantaneous. It no longer stops and restarts each process, references to each process are saved in memory.

12/01/23: Switched from TypeScript to Golang on the backend. It was a great effort but it was worth it.

Settings

The currently avaible settings are:

  • Server address
  • Switch theme
  • Extract audio
  • Switch language
  • Optional format selection
  • Override the output filename
  • Override the output path
  • Pass custom yt-dlp arguments safely

Format selection

fs1

This feature is disabled by default as this intended to be used to retrieve the best quality automatically.

To enable it just go to the settings page and enable the Enable video/audio formats selection flag!

Future releases will have:

  • Multi download done
  • Exctract audio done
  • Format selection done
  • Download archive
  • ARM Build done available through ghcr.io

Troubleshooting

  • It says that it isn't connected/ip in the header is not defined.
    • You must set the server ip address in the settings section (gear icon).
  • The download doesn't start.
    • As before server address is not specified or simply yt-dlp process takes a lot of time to fire up. (Forking yt-dlp isn't fast especially if you have a lower-end/low-power NAS/server/desktop where the server is running)

Docker installation

# recomended for ARM and x86 devices 
docker pull marcobaobao/yt-dlp-webui
docker run -d -p 3033:3033 -v <your dir>:/downloads marcobaobao/yt-dlp-webui

Or with docker but building the container manually.

docker build -t yt-dlp-webui .
docker run -d -p 3033:3033 -v <your dir>:/downloads yt-dlp-webui

Prebuilt binaries installation

# download the latest release from the releases page
mv yt-dlp-webui_linux-[your_system_arch] /usr/local/bin/yt-dlp-webui

# /home/user/downloads as an example and yt-dlp in $PATH
yt-dlp-webui --out /home/user/downloads

# specifying yt-dlp path
yt-dlp-webui --out /home/user/downloads --driver /opt/soemdir/yt-dlp

# specifying using a config file
yt-dlp-webui --conf /home/user/.config/yt-dlp-webui.conf

Config file

By running yt-dlp-webui in standalone mode you have the ability to also specify a config file. The config file will overwrite what have been passed as cli argument.

# Simple configuration file for yt-dlp webui

---
port: 8989
downloadPath: /home/ren/archive
downloaderPath: /usr/local/bin/yt-dlp

Systemd integration

By defining a service file in /etc/systemd/system/yt-dlp-webui.service yt-dlp webui can be launched as in background.

[Unit]
Description=yt-dlp-webui service file
After=network.target

[Service]
User=some_user
ExecStart=/usr/local/bin/yt-dlp-webui --out /mnt/share/downloads --port 8100

[Install]
WantedBy=multi-user.target
systemctl enable yt-dlp-webui
systemctl start yt-dlp-webui

Manual installation

# the dependencies are: python3, ffmpeg, nodejs, psmisc, go.

cd frontend
npm i
npm run build

go build -o yt-dlp-webui main.go

Extendable

You dont'like the Material feel? Want to build your own frontend? We got you covered ๐Ÿค 

yt-dlp-webui now exposes a nice JSON-RPC 1.0 interface through Websockets and HTTP-POST It is planned to also expose a gRPC server.

Just as an overview, these are the available methods:

  • Service.Exec
  • Service.Progress
  • Service.Formats
  • Service.Pending
  • Service.Running
  • Service.Kill
  • Service.KillAll
  • Service.Clear

For more information open an issue on GitHub and I will provide more info ASAP.

FAQ

  • Will it availabe for Raspberry Pi/ generic ARM devices?
    • Yes, it's cross platform :) If you plan to use it on a Raspberry Pi ensure to have fast and durable storage.
  • Why the docker image is so heavy?
    • Originally it was 1.8GB circa, now it has been slimmed to ~340MB compressed. This is due to the fact that it encapsule a basic Alpine linux image + FFmpeg + Node.js + Python3 + yt-dlp.
    • Update: Since Golang migration and Multi-Stage builds the Docker image is now 75MB circa. A reduction of over 400% in size :D.

What yt-dlp-webui is not

yt-dlp-webui isn't your ordinary website where to download stuff from the internet, so don't try asking for links of where this is hosted. It's a self hosted platform for a Linux NAS.

yt-dlp-web-ui's People

Contributors

marcopeocchi avatar tohoenjoyer2000 avatar mimaburao avatar pachi23 avatar deluxghost avatar skyr avatar kimpig avatar cnbeining avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.