YouTube video import error

After updating to 8.0.1, I get an error importing videos from YouTube.

angeltales.angellive.ru/videos/publish\" \"Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0\"","label":"angeltales.angellive.ru:443","timestamp":"2025-12-16T22:10:49.627Z"}
{"level":"error","message":"An error occurred while importing the video https://youtu.be/xGRXNMhaSrA. ","label":"angeltales.angellive.ru:443","err":{"stack":"ExecaError: Command failed with exit code 2: /usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f 'bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' 'https://youtu.be/xGRXNMhaSrA'\n\n\nUsage: yt-dlp [OPTIONS] URL [URL...]\n\nyt-dlp: error: no such option: --js-runtimes\n    at getFinalError (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/final-error.js:6:9)\n    at makeError (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/result.js:108:16)\n    at getAsyncResult (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/methods/main-async.js:168:4)\n    at handlePromise (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/methods/main-async.js:151:17)\n    at async YoutubeDLCLI.run (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-cli.js:149:24)\n    at async YoutubeDLCLI.getInfo (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-cli.js:93:22)\n    at async YoutubeDLWrapper.getInfoForDownload (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-wrapper.js:26:22)\n    at async buildYoutubeDLImport (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/lib/video-pre-import.js:115:25)\n    at async handleYoutubeDlImport (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/controllers/api/videos/import.js:121:38)","message":"Cannot fetch information from import for URL https://youtu.be/xGRXNMhaSrA","code":0,"cause":{"stack":"ExecaError: Command failed with exit code 2: /usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f 'bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' 'https://youtu.be/xGRXNMhaSrA'\n\n\nUsage: yt-dlp [OPTIONS] URL [URL...]\n\nyt-dlp: error: no such option: --js-runtimes\n    at getFinalError (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/final-error.js:6:9)\n    at makeError (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/result.js:108:16)\n    at getAsyncResult (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/methods/main-async.js:168:4)\n    at handlePromise (file:///var/www/peertube/versions/peertube-v8.0.1/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/methods/main-async.js:151:17)\n    at async YoutubeDLCLI.run (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-cli.js:149:24)\n    at async YoutubeDLCLI.getInfo (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-cli.js:93:22)\n    at async YoutubeDLWrapper.getInfoForDownload (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/helpers/youtube-dl/youtube-dl-wrapper.js:26:22)\n    at async buildYoutubeDLImport (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/lib/video-pre-import.js:115:25)\n    at async handleYoutubeDlImport (file:///var/www/peertube/versions/peertube-v8.0.1/dist/core/controllers/api/videos/import.js:121:38)","message":"Command failed with exit code 2: /usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f 'bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' 'https://youtu.be/xGRXNMhaSrA'\n\n\nUsage: yt-dlp [OPTIONS] URL [URL...]\n\nyt-dlp: error: no such option: --js-runtimes","shortMessage":"Command failed with exit code 2: /usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f 'bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' 'https://youtu.be/xGRXNMhaSrA'","command":"/usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best https://youtu.be/xGRXNMhaSrA","escapedCommand":"/usr/bin/python3 /var/www/peertube/storage/bin/yt-dlp --js-runtimes node --dump-json -f 'bestvideo[vcodec^=avc1][height=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2][height=720]+bestaudio/bestvideo[vcodec^=avc1][height<=720]+bestaudio[ext=m4a]/bestvideo[vcodec!*=av01][vcodec!*=vp9.2]+bestaudio/best[vcodec!*=av01][vcodec!*=vp9.2]/bestvideo[ext=mp4]+bestaudio[ext=m4a]/best' 'https://youtu.be/xGRXNMhaSrA'","cwd":"/var/www/peertube/versions/peertube-v8.0.1","durationMs":442.430952,"failed":true,"timedOut":false,"isCanceled":false,"isGracefullyCanceled":false,"isTerminated":false,"isMaxBuffer":false,"isForcefullyTerminated":false,"exitCode":2,"stdout":"","stderr":"\nUsage: yt-dlp [OPTIONS] URL [URL...]\n\nyt-dlp: error: no such option: --js-runtimes","stdio":[null,"","\nUsage: yt-dlp [OPTIONS] URL [URL...]\n\nyt-dlp: error: no such option: --js-runtimes"],"ipcOutput":[],"pipedFrom":[]}},"timestamp":"2025-12-16T22:10:58.263Z"}
{"tags":["http"],"level":"info","message":"213.108.0.0 - - [16/Dec/2025:22:10:58 +0000] \"POST /api/v1/videos/imports/ HTTP/1.0\" 400 185 \"https://angeltales.angellive.ru/videos/publish\" \"Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0\"","label":"angeltales.angellive.ru:443","timestamp":"2025-12-16T22:10:58.266Z"}
{"tags":["client"],"username":"angellive","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0","meta":"{\"url\":\"https://angeltales.angellive.ru/api/v1/videos/imports/\"}","url":"https://angeltales.angellive.ru/videos/publish#import-url","level":"error","message":"Client log: Backend returned code 400, errorMessage is: Cannot fetch information from import for URL https://youtu.be/xGRXNMhaSrA","label":"angeltales.angellive.ru:443","timestamp":"2025-12-16T22:10:58.323Z"}
{"tags":["http"],"level":"info","message":"213.108.0.0 - - [16/Dec/2025:22:10:58 +0000] \"POST /api/v1/server/logs/client HTTP/1.0\" 204 - \"https://angeltales.angellive.ru/videos/publish\" \"Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0\"","label":"angeltales.angellive.ru:443","timestamp":"2025-12-16T22:10:58.324Z"}
{"tags":["client"],"username":"angellive","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:146.0) Gecko/20100101 Firefox/146.0","url":"https://angeltales.angellive.ru/videos/publish#import-url","level":"error","message":"Client log: Ошибка: Cannot fetch information from import for URL https://youtu.be/xGRXNMhaSrA","label":"angeltales.angellive.ru:443","timestamp":"2025-12-16T22:10:58.326Z"}

The decision to update

# Go to the folder where it is located yt-dlp cd /var/www/peertube/storage/bin/  # (Recommended) Make a backup copy of the old file mv yt-dlp yt-dlp.old  # Download the latest stable version yt-dlp с GitHub sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O yt-dlp

# Give the file execution permissions
sudo chmod a+rx yt-dlp

You can restart sudo systemctl restart peertube

Check now the import is going fine.

How should it update itself or always manually?

If you receive the error message ‹ yt-dlp: error: no such option: --js-runtimes ›, it means that your yt-dlp binary is too old. This is strange, as the binary should be upgraded automatically every 24 hours by PeerTube.

If you want to force the upgrade, you can rm /var/www/peertube/storage/bin/yt-dlp binary so PeerTube re-downloads it.

1 Like