diff --git a/.vscode/settings.json b/.vscode/settings.json index ff695099..07a04ce6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,6 +19,8 @@ "arrowless", "attl", "autonumber", + "bgutil", + "brainicism", "brotlicffi", "consoletitle", "cookiesfrombrowser", diff --git a/FAQ.md b/FAQ.md index 5e5b4efe..e7dbade4 100644 --- a/FAQ.md +++ b/FAQ.md @@ -46,6 +46,44 @@ You can force specific version of `yt-dlp` by setting the `YTP_YTDLP_VERSION` en ```env YTP_YTDLP_VERSION=2025.07.21 or master or nightly +``` Then restart the container to apply the changes. +# How to generate POT tokens? + +You need to start up a pot provider server we already have extractor `bgutil-ytdlp-pot-provider` pre-installed in the container. +You can simply do the following to enable the support for it. + +```yaml +services: + ytptube: + user: "${UID:-1000}:${UID:-1000}" # change this to your user id and group id, for example: "1000:1000" + image: ghcr.io/arabcoders/ytptube:latest + container_name: ytptube + restart: unless-stopped + ports: + - "8081:8081" + volumes: + - ./config:/config:rw + - ./downloads:/downloads:rw + tmpfs: + - /tmp + depends_on: + - bgutil_provider + bgutil_provider: + init: true + image: brainicism/bgutil-ytdlp-pot-provider:latest + container_name: bgutil_provider + restart: unless-stopped + ports: + - "127.0.0.1:4416:4416" +``` + +Then simply create a new preset, and in the `Command options for yt-dlp` field set the following: + +```bash +--extractor-args "youtubepot-bgutilhttp:base_url=http://bgutil_provider:4416;disable_innertube=1" +--extractor-args "youtube:player-client=default,tv,mweb;formats=incomplete" +``` +For more information please visit [bgutil-ytdlp-pot-provider](https://github.com/Brainicism/bgutil-ytdlp-pot-provider) project. diff --git a/README.md b/README.md index 17176919..df6589b9 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ postprocessing, permissions, other `yt-dlp options` configurations which seem no concerns the workings of the underlying yt-dlp library, need not be opened on the YTPTube project. In order to debug and troubleshoot them, it's advised to try using the yt-dlp binary directly first, bypassing the UI, -and once that is working, importing the options that worked for you into a new `preset` or `ytdlp.cli` file. +and once that is working, importing the options that worked for you into a new `preset`. ## Via HTTP @@ -186,20 +186,6 @@ yt-dlp .... Once there, you can use the yt-dlp command freely. -# ytdlp.cli file - -The `config/ytdlp.cli`, is a command line options file for `yt-dlp` it will be globally applied to all downloads. - -We strongly recommend not use this file for options that aren't **truly global**, everything that can be done via the -file can also be done via the presets which is dynamic can be altered per download. Example of good global options -are to be used for all downloads are: - -```bash ---continue --windows-filenames --live-from-start -``` - -Everything else can be done via the presets, and it's more flexible and easier to manage. - # Authentication To enable basic authentication, set the `YTP_AUTH_USERNAME` and `YTP_AUTH_PASSWORD` environment variables. And restart diff --git a/pyproject.toml b/pyproject.toml index 48a2205c..27e9433d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,7 @@ dependencies = [ "defusedxml>=0.7.1", "zipstream-ng>=1.8.0", "apprise>=1.9.3", + "bgutil-ytdlp-pot-provider>=1.2.1", ] [tool.ruff] diff --git a/uv.lock b/uv.lock index 78052cb1..2244d049 100644 --- a/uv.lock +++ b/uv.lock @@ -164,6 +164,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] +[[package]] +name = "bgutil-ytdlp-pot-provider" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/3f/62fc3c3668a0518cc6a0dab159362bf2c213c0baf7631d15899a98b83176/bgutil_ytdlp_pot_provider-1.2.1.tar.gz", hash = "sha256:771173df631451046c982dcac27482cc89b300ce0aedc487043f80e45774b9f6", size = 8889 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/37/c66e32bdb34b84581b8a794bdc86775b1161208f915f103e39bd1ad665d3/bgutil_ytdlp_pot_provider-1.2.1-py3-none-any.whl", hash = "sha256:ddf9fee9857fb64c7fdfb4db96db81ca5864a6004fff5549a2043693776184ef", size = 9473 }, +] + [[package]] name = "bidict" version = "0.23.1" @@ -1575,6 +1584,7 @@ dependencies = [ { name = "anyio" }, { name = "apprise" }, { name = "async-timeout" }, + { name = "bgutil-ytdlp-pot-provider" }, { name = "brotli" }, { name = "brotlicffi" }, { name = "caribou" }, @@ -1615,6 +1625,7 @@ requires-dist = [ { name = "anyio" }, { name = "apprise", specifier = ">=1.9.3" }, { name = "async-timeout" }, + { name = "bgutil-ytdlp-pot-provider", specifier = ">=1.2.1" }, { name = "brotli" }, { name = "brotlicffi" }, { name = "caribou", specifier = ">=0.3.0" },