]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tools/peertube-import-videos.ts
Add tests for video downscale framerate matching
[github/Chocobozzz/PeerTube.git] / server / tools / peertube-import-videos.ts
index 3c41a6c0c097393d445c45c8d0d641a8dbf40d03..c7e85b570bc677257a9b8279406152d3b675b5dd 100644 (file)
@@ -1,9 +1,6 @@
 import { registerTSPaths } from '../helpers/register-ts-paths'
 registerTSPaths()
 
-// FIXME: https://github.com/nodejs/node/pull/16853
-require('tls').DEFAULT_ECDH_CURVE = 'auto'
-
 import * as program from 'commander'
 import { join } from 'path'
 import { doRequestAndSaveToFile } from '../helpers/requests'
@@ -57,8 +54,8 @@ getServerCredentials(command)
       exitError('--tmpdir %s: directory does not exist or is not accessible', program[ 'tmpdir' ])
     }
 
-    url = removeEndSlashes(url)
-    program[ 'targetUrl' ] = removeEndSlashes(program[ 'targetUrl' ])
+    url = normalizeTargetUrl(url)
+    program[ 'targetUrl' ] = normalizeTargetUrl(program[ 'targetUrl' ])
 
     const user = { username, password }
 
@@ -84,11 +81,11 @@ async function run (url: string, user: UserInfo) {
     let infoArray: any[]
 
     // Normalize utf8 fields
-    infoArray = [].concat(info);
+    infoArray = [].concat(info)
     if (program[ 'first' ]) {
       infoArray = infoArray.slice(0, program[ 'first' ])
     } else if (program[ 'last' ]) {
-      infoArray = infoArray.slice(- program[ 'last' ])
+      infoArray = infoArray.slice(-program[ 'last' ])
     }
     infoArray = infoArray.map(i => normalizeObject(i))
 
@@ -125,15 +122,15 @@ function processVideo (parameters: {
     if (program[ 'since' ]) {
       if (buildOriginallyPublishedAt(videoInfo).getTime() < program[ 'since' ].getTime()) {
         log.info('Video "%s" has been published before "%s", don\'t upload it.\n',
-          videoInfo.title, formatDate(program[ 'since' ]));
-        return res();
+          videoInfo.title, formatDate(program[ 'since' ]))
+        return res()
       }
     }
     if (program[ 'until' ]) {
       if (buildOriginallyPublishedAt(videoInfo).getTime() > program[ 'until' ].getTime()) {
         log.info('Video "%s" has been published after "%s", don\'t upload it.\n',
-          videoInfo.title, formatDate(program[ 'until' ]));
-        return res();
+          videoInfo.title, formatDate(program[ 'until' ]))
+        return res()
       }
     }
 
@@ -329,8 +326,14 @@ function isNSFW (info: any) {
   return info.age_limit && info.age_limit >= 16
 }
 
-function removeEndSlashes (url: string) {
-  return url.replace(/\/+$/, '')
+function normalizeTargetUrl (url: string) {
+  let normalizedUrl = url.replace(/\/+$/, '')
+
+  if (!normalizedUrl.startsWith('http://') && !normalizedUrl.startsWith('https://')) {
+    normalizedUrl = 'https://' + normalizedUrl
+  }
+
+  return normalizedUrl
 }
 
 async function promptPassword () {
@@ -370,20 +373,21 @@ async function getAccessTokenOrDie (url: string, user: UserInfo) {
 
 function parseDate (dateAsStr: string): Date {
   if (!/\d{4}-\d{2}-\d{2}/.test(dateAsStr)) {
-    exitError(`Invalid date passed: ${dateAsStr}. Expected format: YYYY-MM-DD. See help for usage.`);
+    exitError(`Invalid date passed: ${dateAsStr}. Expected format: YYYY-MM-DD. See help for usage.`)
   }
-  const date = new Date(dateAsStr);
+  const date = new Date(dateAsStr)
+  date.setHours(0, 0, 0)
   if (isNaN(date.getTime())) {
-    exitError(`Invalid date passed: ${dateAsStr}. See help for usage.`);
+    exitError(`Invalid date passed: ${dateAsStr}. See help for usage.`)
   }
-  return date;
+  return date
 }
 
 function formatDate (date: Date): string {
-  return date.toISOString().split('T')[0];
+  return date.toISOString().split('T')[ 0 ]
 }
 
-function exitError (message:string, ...meta: any[]) {
+function exitError (message: string, ...meta: any[]) {
   // use console.error instead of log.error here
   console.error(message, ...meta)
   process.exit(-1)