diff options
Diffstat (limited to 'support/doc/tools.md')
-rw-r--r-- | support/doc/tools.md | 189 |
1 files changed, 175 insertions, 14 deletions
diff --git a/support/doc/tools.md b/support/doc/tools.md index 1db29edc0..1c7739525 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md | |||
@@ -1,14 +1,30 @@ | |||
1 | # CLI tools guide | 1 | # CLI tools guide |
2 | - [CLI wrapper](#cli-wrapper) | 2 | |
3 | - [Remote tools](#remote-tools) | 3 | <!-- START doctoc generated TOC please keep comment here to allow auto update --> |
4 | - [peertube-import-videos.js](#peertube-import-videosjs) | 4 | <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> |
5 | - [peertube-upload.js](#peertube-uploadjs) | 5 | **Table of Contents** |
6 | - [peertube-watch.js](#peertube-watch) | 6 | |
7 | - [Server tools](#server-tools) | 7 | - [CLI wrapper](#cli-wrapper) |
8 | - [parse-log](#parse-log) | 8 | - [Remote Tools](#remote-tools) |
9 | - [create-transcoding-job.js](#create-transcoding-jobjs) | 9 | - [Dependencies](#dependencies) |
10 | - [create-import-video-file-job.js](#create-import-video-file-jobjs) | 10 | - [Installation](#installation) |
11 | - [prune-storage.js](#prune-storagejs) | 11 | - [peertube-import-videos.js](#peertube-import-videosjs) |
12 | - [peertube-upload.js](#peertube-uploadjs) | ||
13 | - [peertube-watch.js](#peertube-watchjs) | ||
14 | - [Server tools](#server-tools) | ||
15 | - [parse-log](#parse-log) | ||
16 | - [create-transcoding-job.js](#create-transcoding-jobjs) | ||
17 | - [create-import-video-file-job.js](#create-import-video-file-jobjs) | ||
18 | - [prune-storage.js](#prune-storagejs) | ||
19 | - [optimize-old-videos.js](#optimize-old-videosjs) | ||
20 | - [update-host.js](#update-hostjs) | ||
21 | - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) | ||
22 | - [.help](#help) | ||
23 | - [Lodash example](#lodash-example) | ||
24 | - [YoutubeDL example](#youtubedl-example) | ||
25 | - [Models examples](#models-examples) | ||
26 | |||
27 | <!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
12 | 28 | ||
13 | ## CLI wrapper | 29 | ## CLI wrapper |
14 | 30 | ||
@@ -28,6 +44,7 @@ The wrapper provides a convenient interface to most scripts, and requires the [s | |||
28 | upload|up upload a video | 44 | upload|up upload a video |
29 | import-videos|import import a video from a streaming platform | 45 | import-videos|import import a video from a streaming platform |
30 | watch|w watch a video in the terminal ✩°。⋆ | 46 | watch|w watch a video in the terminal ✩°。⋆ |
47 | repl initiate a REPL to access internals | ||
31 | help [cmd] display help for [cmd] | 48 | help [cmd] display help for [cmd] |
32 | ``` | 49 | ``` |
33 | 50 | ||
@@ -159,7 +176,7 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production | |||
159 | 176 | ||
160 | ### create-transcoding-job.js | 177 | ### create-transcoding-job.js |
161 | 178 | ||
162 | You can use this script to force transcoding of an existing video. | 179 | You can use this script to force transcoding of an existing video. PeerTube needs to be running. |
163 | 180 | ||
164 | ``` | 181 | ``` |
165 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] | 182 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] |
@@ -172,7 +189,7 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production | |||
172 | 189 | ||
173 | ### create-import-video-file-job.js | 190 | ### create-import-video-file-job.js |
174 | 191 | ||
175 | You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video. | 192 | You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video. PeerTube needs to be running. |
176 | 193 | ||
177 | ``` | 194 | ``` |
178 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-import-video-file-job -- -v [videoUUID] -i [videoFile] | 195 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-import-video-file-job -- -v [videoUUID] -i [videoFile] |
@@ -187,11 +204,155 @@ To delete them (a confirmation will be demanded first): | |||
187 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run prune-storage | 204 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run prune-storage |
188 | ``` | 205 | ``` |
189 | 206 | ||
207 | ### optimize-old-videos.js | ||
208 | |||
209 | Before version v1.0.0-beta.16, Peertube did not specify a bitrate for the | ||
210 | transcoding of uploaded videos. This means that videos might be encoded into | ||
211 | very large files that are too large for streaming. This script re-transcodes | ||
212 | these videos so that they can be watched properly, even on slow connections. | ||
213 | |||
214 | ``` | ||
215 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run optimize-old-videos | ||
216 | ``` | ||
217 | |||
218 | |||
190 | ### update-host.js | 219 | ### update-host.js |
191 | 220 | ||
192 | If you started PeerTube with a domain, and then changed it you will have invalid torrent files and invalid URLs in your database. | 221 | If you started PeerTube with a domain, and then changed it you will have |
193 | To fix this, you have to run: | 222 | invalid torrent files and invalid URLs in your database. To fix this, you have |
223 | to run: | ||
194 | 224 | ||
195 | ``` | 225 | ``` |
196 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host | 226 | $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host |
197 | ``` | 227 | ``` |
228 | |||
229 | ### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v8.x/api/repl.html)) | ||
230 | |||
231 | If you want to interact with the application libraries and objects even when PeerTube is not running, there is a REPL for that. | ||
232 | |||
233 | usage: `node ./dist/server/tools/peertube-repl.js` | ||
234 | |||
235 | "The default evaluator will, by default, assign the result of the most recently evaluated expression to the special variable `_` (underscore). Explicitly setting `_` to a value will disable this behavior." | ||
236 | |||
237 | - type `.help` to list commands available in the repl, notice it starts with a dot | ||
238 | - type `.exit` to exit, note that you still have to press CTRL-C to actually exit, or press CTRL-C (3 times) without typing `.exit` to exit | ||
239 | - type `context` to list all available objects and libraries in the context, note: `Promise` is also available but it's not listed in the context, in case you need promises for something | ||
240 | - type `env` to see the loaded environment variables | ||
241 | - type `path` to access path library | ||
242 | - type `lodash` to access lodash library | ||
243 | - type `uuidv1` to access uuid/v1 library | ||
244 | - type `uuidv3` to access uuid/v3 library | ||
245 | - type `uuidv4` to access uuid/v4 library | ||
246 | - type `uuidv5` to access uuid/v5 library | ||
247 | - type `YoutubeDL` to access youtube-dl library | ||
248 | - type `cli` to access the cli helpers object | ||
249 | - type `logger` to access the logger; if you log to it, it will write to stdout and to the peertube.log file | ||
250 | - type `constants` to access the constants loaded by the server | ||
251 | - type `coreUtils` to access the core-utils helpers object | ||
252 | - type `ffmpegUtils` to access the ffmpeg-utils helpers object | ||
253 | - type `peertubeCryptoUtils` to access the peertube-crypto helpers object | ||
254 | - type `signupUtils` to access the signup helpers object | ||
255 | - type `utils` to access the utils helpers object | ||
256 | - type `YoutubeDLUtils` to access the youtube-dl helpers object | ||
257 | - type `sequelizeTypescript` to access sequelizeTypescript | ||
258 | - type `modelsUtils` to access the models/utils | ||
259 | - type `models` to access the shortcut to sequelizeTypescript.models | ||
260 | - type `transaction` to access the shortcut to sequelizeTypescript.transaction | ||
261 | - type `query` to access the shortcut to sequelizeTypescript.query | ||
262 | - type `queryInterface` to access the shortcut to sequelizeTypescript.queryInterface | ||
263 | |||
264 | #### .help | ||
265 | |||
266 | ``` | ||
267 | PeerTube [1.0.0] (b10eb595)> .help | ||
268 | .break Sometimes you get stuck, this gets you out | ||
269 | .clear Break, and also clear the local context | ||
270 | .editor Enter editor mode | ||
271 | .exit Exit the repl | ||
272 | .help Print this help message | ||
273 | .load Load JS from a file into the REPL session | ||
274 | .r Reset REPL | ||
275 | .reset Reset REPL | ||
276 | .save Save all evaluated commands in this REPL session to a file | ||
277 | PeerTube [1.0.0] (b10eb595)> | ||
278 | ``` | ||
279 | |||
280 | #### Lodash example | ||
281 | |||
282 | ``` | ||
283 | PeerTube [1.0.0] (b10eb595)> lodash.keys(context) | ||
284 | [ 'global', | ||
285 | 'console', | ||
286 | 'DTRACE_NET_SERVER_CONNECTION', | ||
287 | 'DTRACE_NET_STREAM_END', | ||
288 | 'DTRACE_HTTP_SERVER_REQUEST', | ||
289 | 'DTRACE_HTTP_SERVER_RESPONSE', | ||
290 | 'DTRACE_HTTP_CLIENT_REQUEST', | ||
291 | 'DTRACE_HTTP_CLIENT_RESPONSE', | ||
292 | 'process', | ||
293 | 'Buffer', | ||
294 | 'clearImmediate', | ||
295 | 'clearInterval', | ||
296 | 'clearTimeout', | ||
297 | 'setImmediate', | ||
298 | 'setInterval', | ||
299 | 'setTimeout', | ||
300 | 'XMLHttpRequest', | ||
301 | 'compact2string', | ||
302 | 'module', | ||
303 | 'require', | ||
304 | 'path', | ||
305 | 'repl', | ||
306 | 'context', | ||
307 | 'env', | ||
308 | 'lodash', | ||
309 | 'uuidv1', | ||
310 | 'uuidv3', | ||
311 | 'uuidv4', | ||
312 | 'uuidv5', | ||
313 | 'cli', | ||
314 | 'logger', | ||
315 | 'constants', | ||
316 | 'Sequelize', | ||
317 | 'sequelizeTypescript', | ||
318 | 'modelsUtils', | ||
319 | 'models', | ||
320 | 'transaction', | ||
321 | 'query', | ||
322 | 'queryInterface', | ||
323 | 'YoutubeDL', | ||
324 | 'coreUtils', | ||
325 | 'ffmpegUtils', | ||
326 | 'peertubeCryptoUtils', | ||
327 | 'signupUtils', | ||
328 | 'utils', | ||
329 | 'YoutubeDLUtils' ] | ||
330 | PeerTube [1.0.0] (b10eb595)> | ||
331 | ``` | ||
332 | |||
333 | #### YoutubeDL example | ||
334 | ``` | ||
335 | YoutubeDL.getInfo('https://www.youtube.com/watch?v=I5ZN289jjDo', function(err, data) {console.log(err, data)}) | ||
336 | ``` | ||
337 | |||
338 | #### Models examples | ||
339 | ``` | ||
340 | PeerTube [1.0.0] (b10eb595)> new models.ActorModel({id: 3}).getVideoChannel().then(function(data){console.log(data.dataValues.name)}) | ||
341 | Promise { | ||
342 | _bitField: 0, | ||
343 | _fulfillmentHandler0: undefined, | ||
344 | _rejectionHandler0: undefined, | ||
345 | _promise0: undefined, | ||
346 | _receiver0: undefined } | ||
347 | PeerTube [1.0.0] (b10eb595)> Main root channel | ||
348 | PeerTube [1.0.0] (b10eb595)> let out; new models.UserModel({id: 1}).getAccount().then(function (data) {out = data.dataValues.id}) | ||
349 | Promise { | ||
350 | _bitField: 0, | ||
351 | _fulfillmentHandler0: undefined, | ||
352 | _rejectionHandler0: undefined, | ||
353 | _promise0: undefined, | ||
354 | _receiver0: undefined } | ||
355 | PeerTube [1.0.0] (b10eb595)> out | ||
356 | 2 | ||
357 | PeerTube [1.0.0] (b10eb595)> | ||
358 | ``` | ||