Fix upload from CLI script
authorChocobozzz <me@florianbigard.com>
Mon, 12 Feb 2018 11:48:58 +0000 (12:48 +0100)
committerChocobozzz <me@florianbigard.com>
Mon, 12 Feb 2018 11:48:58 +0000 (12:48 +0100)
server/tests/utils/videos/videos.ts
server/tools/import-youtube.ts
server/tools/upload-directory.ts [deleted file]
server/tools/upload.ts

index 923ca48f1a3aa5fd53e5b248eb67ab18dbfcdf2f..9105b5f13650be2492c6989b636f2d929ffc337e 100644 (file)
@@ -251,10 +251,12 @@ async function uploadVideo (url: string, accessToken: string, videoAttributesArg
               .field('name', attributes.name)
               .field('nsfw', JSON.stringify(attributes.nsfw))
               .field('commentsEnabled', JSON.stringify(attributes.commentsEnabled))
-              .field('description', attributes.description)
               .field('privacy', attributes.privacy.toString())
               .field('channelId', attributes.channelId)
 
+  if (attributes.description !== undefined) {
+    req.field('description', attributes.description)
+  }
   if (attributes.language !== undefined) {
     req.field('language', attributes.language.toString())
   }
index d57798d5b22aa770b197951c85eac792f4bde8f8..96bce29b5d2a36f3903fdf58ad8a14c629007ae3 100644 (file)
@@ -20,7 +20,8 @@ if (
   !program['password'] ||
   !program['youtubeUrl']
 ) {
-  throw new Error('All arguments are required.')
+  console.error('All arguments are required.')
+  process.exit(-1)
 }
 
 run().catch(err => console.error(err))
diff --git a/server/tools/upload-directory.ts b/server/tools/upload-directory.ts
deleted file mode 100644 (file)
index c0094f8..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-import * as program from 'commander'
-import * as Promise from 'bluebird'
-import { isAbsolute, join } from 'path'
-
-import { readdirPromise } from '../helpers/core-utils'
-import { execCLI } from '../tests/utils/index'
-
-program
-  .option('-u, --url <url>', 'Server url')
-  .option('-U, --username <username>', 'Username')
-  .option('-p, --password <token>', 'Password')
-  .option('-i, --input <directory>', 'Videos directory absolute path')
-  .option('-d, --description <description>', 'Video descriptions')
-  .option('-c, --category <category>', 'Video categories')
-  .option('-l, --licence <licence>', 'Video licences')
-  .option('-t, --tags <tags>', 'Video tags', list)
-  .parse(process.argv)
-
-if (
-  !program['url'] ||
-  !program['username'] ||
-  !program['password'] ||
-  !program['input'] ||
-  !program['description'] ||
-  !program['category'] ||
-  !program['licence'] ||
-  !program['tags']
-) {
-  throw new Error('All arguments are required.')
-}
-
-if (isAbsolute(program['input']) === false) {
-  throw new Error('Input path should be absolute.')
-}
-
-let command = `npm run ts-node -- ${__dirname}/get-access-token.ts`
-command += ` -u "${program['url']}"`
-command += ` -n "${program['username']}"`
-command += ` -p "${program['password']}"`
-
-execCLI(command)
-  .then(stdout => {
-    const accessToken = stdout.replace('\n', '')
-
-    console.log(accessToken)
-
-    return readdirPromise(program['input']).then(files => ({ accessToken, files }))
-  })
-  .then(({ accessToken, files }) => {
-    return Promise.each(files, file => {
-      const video = {
-        tags: program['tags'],
-        name: file,
-        description: program['description'],
-        category: program['category'],
-        licence: program['licence']
-      }
-
-      let command = `npm run ts-node -- ${__dirname}/upload.ts`
-      command += ` -u "${program['url']}"`
-      command += ` -a "${accessToken}"`
-      command += ` -n "${video.name}"`
-      command += ` -d "${video.description}"`
-      command += ` -c "${video.category}"`
-      command += ` -l "${video.licence}"`
-      command += ` -t "${video.tags.join(',')}"`
-      command += ` -f "${join(program['input'], file)}"`
-
-      return execCLI(command).then(stdout => console.log(stdout))
-    })
-  })
-  .then(() => process.exit(0))
-  .catch(err => {
-    console.error(err)
-    process.exit(-1)
-  })
-
-// ----------------------------------------------------------------------------
-
-function list (val) {
-  return val.split(',')
-}
index db59bbdffa9e424bd2bef9c631cd261136135818..3bf9dd65e00e0c8ab455746daa3664105b0e57fb 100644 (file)
@@ -2,84 +2,87 @@ import * as program from 'commander'
 import { access, constants } from 'fs'
 import { isAbsolute } from 'path'
 import { promisify } from 'util'
+import { getClient, login } from '../tests/utils'
+import { uploadVideo } from '../tests/utils/index'
 
 const accessPromise = promisify(access)
 
-import { uploadVideo } from '../tests/utils/index'
-
 program
   .option('-u, --url <url>', 'Server url')
-  .option('-a, --access-token <token>', 'Access token')
-  .option('-n, --name <name>', 'Video name')
+  .option('-U, --username <username>', 'Username')
+  .option('-p, --password <token>', 'Password')
+  .option('-n, --video-name <name>', 'Video name')
   .option('-N, --nsfw', 'Video is Not Safe For Work')
   .option('-c, --category <category number>', 'Category number')
+  .option('-m, --comments-enabled', 'Enable comments')
   .option('-l, --licence <licence number>', 'Licence number')
   .option('-L, --language <language number>', 'Language number')
-  .option('-d, --description <description>', 'Video description')
+  .option('-d, --video-description <description>', 'Video description')
   .option('-t, --tags <tags>', 'Video tags', list)
   .option('-f, --file <file>', 'Video absolute file path')
   .parse(process.argv)
 
 if (!program['tags']) program['tags'] = []
 if (!program['nsfw']) program['nsfw'] = false
+if (!program['commentsEnabled']) program['commentsEnabled'] = false
 
 if (
   !program['url'] ||
-  !program['accessToken'] ||
-  !program['name'] ||
-  !program['category'] ||
-  !program['licence'] ||
-  !program['description'] ||
+  !program['username'] ||
+  !program['password'] ||
+  !program['videoName'] ||
   !program['file']
 ) {
-  throw new Error('All arguments but tags, language and nsfw are required.')
+  console.error('Url, username, password, name and input file are required.')
+  process.exit(-1)
 }
 
 if (isAbsolute(program['file']) === false) {
-  throw new Error('File path should be absolute.')
+  console.error('File path should be absolute.')
+  process.exit(-1)
 }
 
-accessPromise(program['file'], constants.F_OK)
-  .then(() => {
-    return upload(
-      program['url'],
-      program['accessToken'],
-      program['name'],
-      program['category'],
-      program['licence'],
-      program['language'],
-      program['nsfw'],
-      program['description'],
-      program['tags'],
-      program['file']
-    )
-  })
-  .then(() => process.exit(0))
-  .catch(err => {
-    console.error(err)
-    process.exit(-1)
-  })
+run().catch(err => console.error(err))
 
-// ----------------------------------------------------------------------------
+async function run () {
+  const res = await getClient(program[ 'url' ])
+  const client = {
+    id: res.body.client_id,
+    secret: res.body.client_secret
+  }
 
-function list (val) {
-  return val.split(',')
-}
+  const user = {
+    username: program[ 'username' ],
+    password: program[ 'password' ]
+  }
+
+  const res2 = await login(program[ 'url' ], client, user)
+  const accessToken = res2.body.access_token
 
-function upload (url, accessToken, name, category, licence, language, nsfw, description, tags, fixture) {
-  console.log('Uploading %s video...', program['name'])
+  await accessPromise(program[ 'file' ], constants.F_OK)
+
+  console.log('Uploading %s video...', program[ 'videoName' ])
 
   const videoAttributes = {
-    name,
-    category,
-    licence,
-    language,
-    nsfw,
-    description,
-    tags,
-    fixture
+    name: program['videoName'],
+    category: program['category'],
+    licence: program['licence'],
+    language: program['language'],
+    nsfw: program['nsfw'],
+    description: program['videoDescription'],
+    tags: program['tags'],
+    commentsEnabled: program['commentsEnabled'],
+    fixture: program['file']
   }
-  return uploadVideo(url, accessToken, videoAttributes).then(() => {
-    console.log(`Video ${name} uploaded.`)
-  })
+
+  await uploadVideo(program['url'], accessToken, videoAttributes)
+
+  console.log(`Video ${program['videoName']} uploaded.`)
+  process.exit(0)
+}
+
+// ----------------------------------------------------------------------------
+
+function list (val) {
+  return val.split(',')
 }