]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/youtube-dl.ts
Translated using Weblate (Chinese (Traditional))
[github/Chocobozzz/PeerTube.git] / server / helpers / youtube-dl.ts
index f0944b94f85967a7236ae6094df5726efb670fc0..302b2e206bee857848da85177962eaee09121ad0 100644 (file)
@@ -34,6 +34,11 @@ const processOptions = {
 function getYoutubeDLInfo (url: string, opts?: string[]): Promise<YoutubeDLInfo> {
   return new Promise<YoutubeDLInfo>((res, rej) => {
     let args = opts || [ '-j', '--flat-playlist' ]
+
+    if (CONFIG.IMPORT.VIDEOS.HTTP.FORCE_IPV4) {
+      args.push('--force-ipv4')
+    }
+
     args = wrapWithProxyOptions(args)
 
     safeGetYoutubeDL()
@@ -61,22 +66,22 @@ function getYoutubeDLSubs (url: string, opts?: object): Promise<YoutubeDLSubs> {
       .then(youtubeDL => {
         youtubeDL.getSubs(url, options, (err, files) => {
           if (err) return rej(err)
+          if (!files) return []
 
           logger.debug('Get subtitles from youtube dl.', { url, files })
 
           const subtitles = files.reduce((acc, filename) => {
             const matched = filename.match(/\.([a-z]{2})\.(vtt|ttml)/i)
-
-            if (matched[1]) {
-              return [
-                ...acc,
-                {
-                  language: matched[1],
-                  path: join(cwd, filename),
-                  filename
-                }
-              ]
-            }
+            if (!matched || !matched[1]) return acc
+
+            return [
+              ...acc,
+              {
+                language: matched[1],
+                path: join(cwd, filename),
+                filename
+              }
+            ]
           }, [])
 
           return res(subtitles)
@@ -138,7 +143,7 @@ async function updateYoutubeDLBinary () {
   const binDirectory = join(root(), 'node_modules', 'youtube-dl', 'bin')
   const bin = join(binDirectory, 'youtube-dl')
   const detailsPath = join(binDirectory, 'details')
-  const url = 'https://yt-dl.org/downloads/latest/youtube-dl'
+  const url = process.env.YOUTUBE_DL_DOWNLOAD_HOST || 'https://yt-dl.org/downloads/latest/youtube-dl'
 
   await ensureDir(binDirectory)