|
1 |
| -// Get dependencies |
2 |
| -const redis = require('redis'); |
| 1 | +// Import fetch |
| 2 | +const fetch = require('node-fetch'); |
3 | 3 |
|
4 |
| -// Get configuration |
| 4 | +// Import our config |
5 | 5 | const config = require('./config');
|
6 | 6 |
|
7 |
| -// Env |
| 7 | +// Get env |
8 | 8 | const env = process.env;
|
9 | 9 |
|
10 |
| -// Args |
11 |
| -const args = process.argv.slice(2); |
12 |
| - |
13 |
| -// Get and check session |
14 |
| -let sessionid = false; |
15 |
| -const regex = /^http\:\/\/127.0.0.1:32400\/video\/:\/transcode\/session\/(.*)\/progress$/; |
16 |
| -for (idx in args) { |
17 |
| - if (regex.test(args[idx])) { |
18 |
| - sessionid = args[idx].match(regex)[1]; |
19 |
| - break; |
20 |
| - } |
21 |
| -} |
22 |
| -if (sessionid === false) { |
23 |
| - console.error('Failed to find session id'); |
24 |
| - process.exit(1); |
25 |
| -} |
26 |
| -const propersessionid = sessionid.split('/')[0]; |
27 |
| -console.log('Session found: ' + sessionid + ' (' + propersessionid + ')'); |
28 |
| - |
29 |
| -// Parse arguments |
30 |
| -const parsedargs = args.map((o) => { |
31 |
| - if (o.indexOf('/progress') !== -1) |
32 |
| - o = o.replace(config.plex.plex_url, '{PROGRESSURL}/'); |
33 |
| - return o.replace(config.plex.plex_url, '{URL}/') |
34 |
| - .replace(config.plex.plex_sessions, '{SRTSRV}/') |
35 |
| - .replace(config.plex.plex_usr, '{USRPLEX}/') |
36 |
| - .replace(config.plex.plex_mount, '{PATH}/') |
37 |
| -}); |
38 |
| - |
39 |
| -// Replace seglist |
40 |
| -const segList = '{SEGURL}/video/:/transcode/session/' + sessionid + '/seglist'; |
41 |
| -var forceSegList = false; |
42 |
| -var finalargs = []; |
43 |
| -for (var i = 0; i < parsedargs.length; i++) { |
44 |
| - if (parsedargs[i] == '-segment_list') { |
45 |
| - forceSegList = true; |
46 |
| - finalargs.push(parsedargs[i]); |
47 |
| - } |
48 |
| - else if (forceSegList) { |
49 |
| - finalargs.push(segList); |
50 |
| - if (parsedargs[i + 1] !== '-segment_list_type') { |
51 |
| - finalargs.push('-segment_list_type'); |
52 |
| - finalargs.push('csv'); |
53 |
| - finalargs.push('-segment_list_size'); |
54 |
| - finalargs.push('2147483647'); |
55 |
| - } |
56 |
| - forceSegList = false; |
57 |
| - } |
58 |
| - else |
59 |
| - finalargs.push(parsedargs[i]); |
60 |
| -} |
61 |
| - |
62 |
| -// Create Redis instance |
63 |
| -let redisClient = redis.createClient({ |
64 |
| - host: config.redis.redis_host, |
65 |
| - port: config.redis.redis_port, |
66 |
| - password: config.redis.redis_pass, |
67 |
| - db: config.redis.redis_db |
68 |
| -}); |
69 |
| - |
70 |
| -// On Redis error |
71 |
| -redisClient.on('error', (err) => { |
72 |
| - if (err.errno === 'ECONNREFUSED') { |
73 |
| - console.error('Failed to connect to REDIS, please check your configuration'); |
74 |
| - } |
75 |
| - else { |
76 |
| - console.error(err.errno); |
77 |
| - } |
78 |
| - process.exit(1); |
| 10 | +// Get args |
| 11 | +const arg = process.argv.slice(2); |
| 12 | + |
| 13 | +// Call the load-balancer |
| 14 | +fetch(`${config.URL}api/ffmpeg`, { |
| 15 | + method: 'POST', |
| 16 | + headers: { |
| 17 | + 'Accept': 'application/json', |
| 18 | + 'Content-Type': 'application/json' |
| 19 | + }, |
| 20 | + body: JSON.stringify({ |
| 21 | + arg, |
| 22 | + env |
| 23 | + }) |
| 24 | +}).catch((err) => { |
| 25 | + console.error(err); |
79 | 26 | });
|
80 | 27 |
|
81 |
| -// Send to redis |
82 |
| -redisClient.set(propersessionid, JSON.stringify({ |
83 |
| - args: finalargs, |
84 |
| - env |
85 |
| -})); |
| 28 | +/** |
| 29 | + * We need to keep alive the process otherwise |
| 30 | + * plex send a bad mpd file |
| 31 | +**/ |
| 32 | +setInterval(() => {}, 3600000); |
0 commit comments