diff --git a/config/default.yaml b/config/default.yaml index e254c2c28..2b0419535 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -446,6 +446,9 @@ import: # yt-dlp is also supported name: 'youtube-dl' + # Path to the python binary to execute for youtube-dl or yt-dlp + python_path: '/usr/bin/python3' + # IPv6 is very strongly rate-limited on most sites supported by youtube-dl force_ipv4: false diff --git a/config/production.yaml.example b/config/production.yaml.example index 0ce0b9d0e..893ccc33e 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -454,6 +454,9 @@ import: # yt-dlp is also supported name: 'youtube-dl' + # Path to the python binary to execute for youtube-dl or yt-dlp + python_path: '/usr/bin/python3' + # IPv6 is very strongly rate-limited on most sites supported by youtube-dl force_ipv4: false diff --git a/server/helpers/youtube-dl/youtube-dl-cli.ts b/server/helpers/youtube-dl/youtube-dl-cli.ts index 559f92984..293acff43 100644 --- a/server/helpers/youtube-dl/youtube-dl-cli.ts +++ b/server/helpers/youtube-dl/youtube-dl-cli.ts @@ -153,7 +153,8 @@ export class YoutubeDLCLI { completeArgs = this.wrapWithIPOptions(completeArgs) completeArgs = this.wrapWithFFmpegOptions(completeArgs) - const output = await execa('python', [ youtubeDLBinaryPath, ...completeArgs, url ], processOptions) + const { PYTHON_PATH } = CONFIG.IMPORT.VIDEOS.HTTP.YOUTUBE_DL_RELEASE + const output = await execa(PYTHON_PATH, [ youtubeDLBinaryPath, ...completeArgs, url ], processOptions) logger.debug('Runned youtube-dl command.', { command: output.command, ...lTags() }) diff --git a/server/initializers/config.ts b/server/initializers/config.ts index f2e9f7088..fb6f7ae62 100644 --- a/server/initializers/config.ts +++ b/server/initializers/config.ts @@ -333,7 +333,8 @@ const CONFIG = { YOUTUBE_DL_RELEASE: { get URL () { return config.get('import.videos.http.youtube_dl_release.url') }, - get NAME () { return config.get('import.videos.http.youtube_dl_release.name') } + get NAME () { return config.get('import.videos.http.youtube_dl_release.name') }, + get PYTHON_PATH () { return config.get('import.videos.http.youtube_dl_release.python_path') } }, get FORCE_IPV4 () { return config.get('import.videos.http.force_ipv4') }