X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fyoutube-dl%2Fyoutube-dl-cli.ts;h=30fd1c97d02307802e75c303a5e554edc0cfd19a;hb=350b866fdda6fe239b8dc94245eddda4098ad6b1;hp=559f92984ff58784002ad7cce80fcab779686cc6;hpb=b2ad0090c182c7f2a8cba1cced3987d408a4b159;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/youtube-dl/youtube-dl-cli.ts b/server/helpers/youtube-dl/youtube-dl-cli.ts index 559f92984..30fd1c97d 100644 --- a/server/helpers/youtube-dl/youtube-dl-cli.ts +++ b/server/helpers/youtube-dl/youtube-dl-cli.ts @@ -90,11 +90,13 @@ export class YoutubeDLCLI { format: string output: string processOptions: execa.NodeOptions + timeout?: number additionalYoutubeDLArgs?: string[] }) { return this.run({ url: options.url, processOptions: options.processOptions, + timeout: options.timeout, args: (options.additionalYoutubeDLArgs || []).concat([ '-f', options.format, '-o', options.output ]) }) } @@ -145,15 +147,23 @@ export class YoutubeDLCLI { private async run (options: { url: string args: string[] + timeout?: number processOptions: execa.NodeOptions }) { - const { url, args, processOptions } = options + const { url, args, timeout, processOptions } = options let completeArgs = this.wrapWithProxyOptions(args) 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 subProcess = execa(PYTHON_PATH, [ youtubeDLBinaryPath, ...completeArgs, url ], processOptions) + + if (timeout) { + setTimeout(() => subProcess.cancel(), timeout) + } + + const output = await subProcess logger.debug('Runned youtube-dl command.', { command: output.command, ...lTags() })