Use a proxy for youtube-dl to avoid travis errors
authorChocobozzz <me@florianbigard.com>
Tue, 21 Jan 2020 14:59:57 +0000 (15:59 +0100)
committerChocobozzz <me@florianbigard.com>
Tue, 21 Jan 2020 15:46:59 +0000 (16:46 +0100)
config/default.yaml
config/production.yaml.example
config/test.yaml
scripts/ci.sh
server/helpers/youtube-dl.ts
server/initializers/config.ts

index ce2b20c75a8a698c0f0f3d075e0eb5f5424df3af..3260c62fc6c42939d0fe8977e2a7b03d932ef1a9 100644 (file)
@@ -234,6 +234,10 @@ import:
   videos:
     http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
       enabled: false
+      # You can use an HTTP/HTTPS/SOCKS proxy with youtube-dl
+      proxy:
+        enabled: false
+        url: ""
     torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
       enabled: false
 
index 52892acfb4e82ac92caa75990602dfb4f9c3ae22..30cd2ffe0090c469022eb772b67fd1bf3f77d7c8 100644 (file)
@@ -248,6 +248,10 @@ import:
   videos:
     http: # Classic HTTP or all sites supported by youtube-dl https://rg3.github.io/youtube-dl/supportedsites.html
       enabled: false
+      # You can use an HTTP/HTTPS/SOCKS proxy with youtube-dl
+      proxy:
+        enabled: false
+        url: ""
     torrent: # Magnet URI or torrent file (use classic TCP/UDP/WebSeed to download the file)
       enabled: false
 
index 3ab391504d0e14ebb1a592e5ecca1106d71d211b..5d98b41c40bc2ae3ab6a3efc67ecf714c63498f0 100644 (file)
@@ -86,6 +86,9 @@ import:
   videos:
     http:
       enabled: true
+    proxy:
+      enabled: false
+      url: ""
     torrent:
       enabled: true
 
index 270a2b5bc026d8d72033756095b66d99474ead5d..7b5c3f2bbdca15c404859d7bb7f3ca1313223eb9 100755 (executable)
@@ -9,6 +9,8 @@ fi
 
 killall -q peertube || true
 
+perl -0777 -i  -pe 's#(proxy:\n\s+enabled: false\n\s+)url: ""#$1url: "'"$PROXY_URL"'"#' config/test.yaml
+
 if [ "$1" = "misc" ]; then
     npm run build -- --light-fr
     mocha --timeout 5000 --exit --require ts-node/register --require tsconfig-paths/register --bail server/tests/client.ts \
@@ -40,3 +42,5 @@ elif [ "$1" = "lint" ]; then
       npm run lint
     )
 fi
+
+git checkout -- config/test.yaml
index 87a0d0584e174ed73ee7c0da721893e60904f38e..d17c9d554d9f373290b53c07a2a3b4085d4ff205 100644 (file)
@@ -6,6 +6,7 @@ import { peertubeTruncate, root } from './core-utils'
 import { ensureDir, remove, writeFile } from 'fs-extra'
 import * as request from 'request'
 import { createWriteStream } from 'fs'
+import { CONFIG } from '@server/initializers/config'
 
 export type YoutubeDLInfo = {
   name?: string
@@ -45,11 +46,16 @@ function downloadYoutubeDLVideo (url: string, timeout: number) {
 
   logger.info('Importing youtubeDL video %s', url)
 
-  const options = [ '-f', 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best', '-o', path ]
+  let options = [ '-f', 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best', '-o', path ]
+
+  if (CONFIG.IMPORT.VIDEOS.HTTP.PROXY.ENABLED) {
+    logger.debug('Using proxy for YoutubeDL')
+
+    options = [ '--proxy', CONFIG.IMPORT.VIDEOS.HTTP.PROXY.URL ].concat(options)
+  }
 
   if (process.env.FFMPEG_PATH) {
-    options.push('--ffmpeg-location')
-    options.push(process.env.FFMPEG_PATH)
+    options = options.concat([ '--ffmpeg-location', process.env.FFMPEG_PATH ])
   }
 
   return new Promise<string>(async (res, rej) => {
index 95b069533a9de6fce7a278c8ad1328fe229aeb2b..7fd77f3e83983b7d326f5e0cdb37daff5a213e27 100644 (file)
@@ -191,7 +191,11 @@ const CONFIG = {
   IMPORT: {
     VIDEOS: {
       HTTP: {
-        get ENABLED () { return config.get<boolean>('import.videos.http.enabled') }
+        get ENABLED () { return config.get<boolean>('import.videos.http.enabled') },
+        PROXY: {
+          get ENABLED () { return config.get<boolean>('import.videos.http.proxy.enabled') },
+          get URL () { return config.get<string>('import.videos.http.proxy.url') }
+        }
       },
       TORRENT: {
         get ENABLED () { return config.get<boolean>('import.videos.torrent.enabled') }