From a7fea183f0f69104b209e7bfdd6435be28165f22 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 9 Feb 2018 16:47:06 +0100 Subject: Begin import script with youtube-dl --- server/tools/upload.ts | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 server/tools/upload.ts (limited to 'server/tools/upload.ts') diff --git a/server/tools/upload.ts b/server/tools/upload.ts new file mode 100644 index 000000000..db59bbdff --- /dev/null +++ b/server/tools/upload.ts @@ -0,0 +1,85 @@ +import * as program from 'commander' +import { access, constants } from 'fs' +import { isAbsolute } from 'path' +import { promisify } from 'util' + +const accessPromise = promisify(access) + +import { uploadVideo } from '../tests/utils/index' + +program + .option('-u, --url ', 'Server url') + .option('-a, --access-token ', 'Access token') + .option('-n, --name ', 'Video name') + .option('-N, --nsfw', 'Video is Not Safe For Work') + .option('-c, --category ', 'Category number') + .option('-l, --licence ', 'Licence number') + .option('-L, --language ', 'Language number') + .option('-d, --description ', 'Video description') + .option('-t, --tags ', 'Video tags', list) + .option('-f, --file ', 'Video absolute file path') + .parse(process.argv) + +if (!program['tags']) program['tags'] = [] +if (!program['nsfw']) program['nsfw'] = false + +if ( + !program['url'] || + !program['accessToken'] || + !program['name'] || + !program['category'] || + !program['licence'] || + !program['description'] || + !program['file'] +) { + throw new Error('All arguments but tags, language and nsfw are required.') +} + +if (isAbsolute(program['file']) === false) { + throw new Error('File path should be absolute.') +} + +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) + }) + +// ---------------------------------------------------------------------------- + +function list (val) { + return val.split(',') +} + +function upload (url, accessToken, name, category, licence, language, nsfw, description, tags, fixture) { + console.log('Uploading %s video...', program['name']) + + const videoAttributes = { + name, + category, + licence, + language, + nsfw, + description, + tags, + fixture + } + return uploadVideo(url, accessToken, videoAttributes).then(() => { + console.log(`Video ${name} uploaded.`) + }) +} -- cgit v1.2.3