99 lines
3.2 KiB
Markdown
99 lines
3.2 KiB
Markdown
# I cant download anything
|
|
|
|
If you are receiving errors like:
|
|
- "OSError: [Errno 5] I/O error"
|
|
- "OSError: [Errno 18] Cross-device link: '/tmp/random_id/name.webm' -> '/downloads/name.webm'
|
|
- "Operation not permitted: '/downloads/name.webm'
|
|
|
|
This indicates an error with your mounts and how they interact with the container. So, the basic solution is to do the following:
|
|
|
|
```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
|
|
environment:
|
|
- YTP_TEMP_PATH=/downloads/tmp
|
|
- YTP_DOWNLOAD_PATH=/downloads/files
|
|
ports:
|
|
- "8081:8081"
|
|
volumes:
|
|
- ./config:/config:rw
|
|
- ./downloads:/downloads:rw
|
|
```
|
|
|
|
Then run the following command to create the necessary directories and start the container:
|
|
|
|
```bash
|
|
mkdir -p ./config && mkdir -p ./downloads/{tmp,files} && docker compose -f compose.yaml up -d
|
|
```
|
|
|
|
Reference: [Issue #363](https://github.com/arabcoders/ytptube/issues/363)
|
|
|
|
# I want to use link with playlist but only download the video not all the videos in the playlist?
|
|
|
|
Simply create a preset, and in the `Command options for yt-dlp` field set `--no-playlist`. Then select the preset
|
|
whenever the link includes a playlist id.
|
|
|
|
> [!NOTE]
|
|
> You can also do the same via advanced options `Command options for yt-dlp` field, but presets are more convenient.
|
|
|
|
# Install specific yt-dlp version?
|
|
|
|
You can force specific version of `yt-dlp` by setting the `YTP_YTDLP_VERSION` environment variable for example
|
|
|
|
```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"
|
|
--extractor-args "youtube:player-client=default,tv,mweb;formats=incomplete"
|
|
```
|
|
|
|
you and also enable the fallback by using the follow extractor args
|
|
|
|
```bash
|
|
--extractor-args "youtubepot-bgutilhttp:base_url=http://bgutil_provider:4416;disable_innertube=1"
|
|
--extractor-args "youtube:player-client=default,tv,mweb;formats=incomplete"
|
|
```
|
|
|
|
Use this settings in case the extractor fails to get the pot tokens from the bgutil provider server.
|
|
|
|
For more information please visit [bgutil-ytdlp-pot-provider](https://github.com/Brainicism/bgutil-ytdlp-pot-provider) project.
|