diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2016-07-20 19:16:00 +0200 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2016-07-20 19:16:00 +0200 |
commit | 677618d4a600a1678088d107850c8f1f8c95255f (patch) | |
tree | b0ea636094a7a6c8188757bcd2a68ce1231e3d6f /server/tests/real-world/tools | |
parent | 2bd3f171270aff9717a55f2b89757fe966911af3 (diff) | |
download | PeerTube-677618d4a600a1678088d107850c8f1f8c95255f.tar.gz PeerTube-677618d4a600a1678088d107850c8f1f8c95255f.tar.zst PeerTube-677618d4a600a1678088d107850c8f1f8c95255f.zip |
Server: Add some cli tools to make it easy to upload a lot of videos
Diffstat (limited to 'server/tests/real-world/tools')
-rw-r--r-- | server/tests/real-world/tools/get-access-token.js | 44 | ||||
-rw-r--r-- | server/tests/real-world/tools/upload-directory.js | 67 | ||||
-rw-r--r-- | server/tests/real-world/tools/upload.js | 57 |
3 files changed, 168 insertions, 0 deletions
diff --git a/server/tests/real-world/tools/get-access-token.js b/server/tests/real-world/tools/get-access-token.js new file mode 100644 index 000000000..4f98e9c9f --- /dev/null +++ b/server/tests/real-world/tools/get-access-token.js | |||
@@ -0,0 +1,44 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | const program = require('commander') | ||
4 | |||
5 | const utils = require('../../api/utils') | ||
6 | |||
7 | program | ||
8 | .option('-u, --url <url>', 'Server url') | ||
9 | .option('-n, --username <username>', 'Username') | ||
10 | .option('-p, --password <token>', 'Password') | ||
11 | .parse(process.argv) | ||
12 | |||
13 | if ( | ||
14 | !program.url || | ||
15 | !program.username || | ||
16 | !program.password | ||
17 | ) { | ||
18 | throw new Error('All arguments are required.') | ||
19 | } | ||
20 | |||
21 | const server = { | ||
22 | url: program.url, | ||
23 | user: { | ||
24 | username: program.username, | ||
25 | password: program.password | ||
26 | }, | ||
27 | client: { | ||
28 | id: null, | ||
29 | secret: null | ||
30 | } | ||
31 | } | ||
32 | |||
33 | utils.getClient(program.url, function (err, res) { | ||
34 | if (err) throw err | ||
35 | |||
36 | server.client.id = res.body.client_id | ||
37 | server.client.secret = res.body.client_secret | ||
38 | |||
39 | utils.loginAndGetAccessToken(server, function (err, accessToken) { | ||
40 | if (err) throw err | ||
41 | |||
42 | console.log(accessToken) | ||
43 | }) | ||
44 | }) | ||
diff --git a/server/tests/real-world/tools/upload-directory.js b/server/tests/real-world/tools/upload-directory.js new file mode 100644 index 000000000..aed7a1fd8 --- /dev/null +++ b/server/tests/real-world/tools/upload-directory.js | |||
@@ -0,0 +1,67 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | const program = require('commander') | ||
4 | const eachSeries = require('async/eachSeries') | ||
5 | const exec = require('child_process').exec | ||
6 | const fs = require('fs') | ||
7 | const path = require('path') | ||
8 | |||
9 | program | ||
10 | .option('-u, --url <url>', 'Server url') | ||
11 | .option('-n, --username <username>', 'Username') | ||
12 | .option('-p, --password <token>', 'Password') | ||
13 | .option('-i, --directory <directory>', 'Videos directory absolute path') | ||
14 | .option('-d, --description <description>', 'Video description') | ||
15 | .option('-t, --tags <tags>', 'Video tags', list) | ||
16 | .parse(process.argv) | ||
17 | |||
18 | if ( | ||
19 | !program.url || | ||
20 | !program.username || | ||
21 | !program.password || | ||
22 | !program.directory || | ||
23 | !program.description || | ||
24 | !program.tags | ||
25 | ) { | ||
26 | throw new Error('All arguments are required.') | ||
27 | } | ||
28 | |||
29 | exec('node ./get-access-token -u "' + program.url + '" -n "' + program.username + '" -p "' + program.password + '"', function (err, stdout) { | ||
30 | if (err) throw err | ||
31 | |||
32 | const accessToken = stdout.replace('\n', '') | ||
33 | |||
34 | fs.readdir(program.directory, function (err, files) { | ||
35 | if (err) throw err | ||
36 | |||
37 | eachSeries(files, function (file, callbackEach) { | ||
38 | const video = { | ||
39 | tags: program.tags, | ||
40 | name: file, | ||
41 | description: program.description | ||
42 | } | ||
43 | |||
44 | let command = 'node ./upload' | ||
45 | command += ' -u "' + program.url + '"' | ||
46 | command += ' -a "' + accessToken + '"' | ||
47 | command += ' -n "' + video.name + '"' | ||
48 | command += ' -d "' + video.description + '"' | ||
49 | command += ' -t "' + video.tags.join(',') + '"' | ||
50 | command += ' -f "' + path.join(program.directory, file) + '"' | ||
51 | |||
52 | exec(command, function (err, stdout) { | ||
53 | if (err) console.log(err) | ||
54 | |||
55 | console.log(stdout) | ||
56 | |||
57 | return callbackEach() | ||
58 | }) | ||
59 | }) | ||
60 | }) | ||
61 | }) | ||
62 | |||
63 | // ---------------------------------------------------------------------------- | ||
64 | |||
65 | function list (val) { | ||
66 | return val.split(',') | ||
67 | } | ||
diff --git a/server/tests/real-world/tools/upload.js b/server/tests/real-world/tools/upload.js new file mode 100644 index 000000000..39b4c9b40 --- /dev/null +++ b/server/tests/real-world/tools/upload.js | |||
@@ -0,0 +1,57 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | const program = require('commander') | ||
4 | const fs = require('fs') | ||
5 | |||
6 | const utils = require('../../api/utils') | ||
7 | |||
8 | program | ||
9 | .option('-u, --url <url>', 'Server url') | ||
10 | .option('-a, --access-token <token>', 'Access token') | ||
11 | .option('-n, --name <name>', 'Video name') | ||
12 | .option('-d, --description <description>', 'Video description') | ||
13 | .option('-t, --tags <tags>', 'Video tags', list) | ||
14 | .option('-f, --file <file>', 'Video absolute file path') | ||
15 | .parse(process.argv) | ||
16 | |||
17 | if ( | ||
18 | !program.url || | ||
19 | !program.accessToken || | ||
20 | !program.name || | ||
21 | !program.description || | ||
22 | !program.tags || | ||
23 | !Array.isArray(program.tags) || | ||
24 | program.tags.length === 0 || | ||
25 | !program.file | ||
26 | ) { | ||
27 | throw new Error('All arguments are required.') | ||
28 | } | ||
29 | |||
30 | fs.access(program.file, fs.F_OK, function (err) { | ||
31 | if (err) throw err | ||
32 | |||
33 | upload( | ||
34 | program.url, | ||
35 | program.accessToken, | ||
36 | program.name, | ||
37 | program.description, | ||
38 | program.tags, | ||
39 | program.file | ||
40 | ) | ||
41 | }) | ||
42 | |||
43 | // ---------------------------------------------------------------------------- | ||
44 | |||
45 | function list (val) { | ||
46 | return val.split(',') | ||
47 | } | ||
48 | |||
49 | function upload (url, accessToken, name, description, tags, file) { | ||
50 | console.log('Uploading %s video...', program.name) | ||
51 | |||
52 | utils.uploadVideo(url, accessToken, name, description, tags, file, function (err) { | ||
53 | if (err) throw err | ||
54 | |||
55 | console.log('Video uploaded.') | ||
56 | }) | ||
57 | } | ||