From 9074a2d4e45f37c095792db26eecf6bdcd3afcdf Mon Sep 17 00:00:00 2001 From: Mike R Date: Thu, 4 Nov 2021 09:54:25 +0000 Subject: [PATCH] Added support for autoscan authentication support --- Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js | 98 ++++++++++++-------- 1 file changed, 60 insertions(+), 38 deletions(-) diff --git a/Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js b/Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js index 0e3582b..a217b96 100644 --- a/Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js +++ b/Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js @@ -1,24 +1,25 @@ -module.exports.dependencies = ['request']; +module.exports.dependencies = [ + 'request', +]; /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ module.exports.details = function details() { return { - id: 'Tdarr_Plugin_TD01_TOAD_Autoscan', + id: 'Tdarr_Plugin_TD01_TOAD_Plex_Autoscan', Stage: 'Post-processing', - Name: 'Trigger Autoscan.', + Name: 'Trigger Plex_Autoscan.', Type: 'Video', Operation: '', - Description: `Connects to autoscan and triggers a manual search within the files directory.\n\n + Description: `Connects to plex_autoscan and triggers a manual search within the files directory.\n\n Works with the hotio autoscan docker that can be found here https://hotio.dev/containers/autoscan/ which \n\n is based on https://github.com/cloudbox/autoscan`, Version: '1.0', - Link: 'https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_TD01_TOAD_Autoscan.js', + Link: '', Tags: '3rd party,post-processing,configurable', - Inputs: [ - { - name: 'autoscan_address', - tooltip: ` + Inputs: [{ + name: 'autoscan_address', + tooltip: ` Enter the IP address/URL for autoscan. Must include http(s):// \\nExample:\\n @@ -26,15 +27,31 @@ module.exports.details = function details() { \\nExample:\\n https://subdomain.domain.tld`, - }, - { - name: 'autoscan_port', - tooltip: ` + }, + { + name: 'autoscan_port', + tooltip: ` Enter the port Autoscan is using, default is 3468 \\nExample:\\n 3468`, - }, + }, + { + name: 'autoscan_username', + tooltip: ` + If authentication is configured, specify the username + + \\nExample:\\n + Batman`, + }, + { + name: 'autoscan_password', + tooltip: ` + If authentication is configured, specify the password + + \\nExample:\\n + SecretPassword`, + }, ], }; }; @@ -45,46 +62,51 @@ module.exports.plugin = function plugin(file, librarySettings, inputs) { // Set up required variables. const ADDRESS = inputs.autoscan_address; const PORT = inputs.autoscan_port; + let file2 = ''; + + if(inputs.autoscan_username) { + auth = "Basic " + Buffer.from(inputs.autoscan_username + ":" + inputs.autoscan_password).toString('base64'); + } let filepath = ''; const response = {}; - filepath = `${file.file}`; - filepath = `${filepath - .split('/') - .slice(0, -1) - .join('/')}/`; + filepath = `${file.file.split('/').slice(0, -1).join('/')}/`; + filepath = encodeURI(filepath); // Check if all inputs have been configured. If they haven't then exit plugin. - if (!inputs.autoscan_address || !inputs.autoscan_port) { + if ( + inputs + && inputs.autoscan_address === '' + && inputs.autoscan_port === '' + ) { response.infoLog += '☒Plugin options have not been configured, please configure options. Skipping this plugin. \n'; response.processFile = false; return response; } // Set content of request/post. - request.post( - { - headers: { - 'content-type': 'application/json', - }, - url: `${ADDRESS}:${PORT}/triggers/manual?dir=${filepath}`, + request.post({ + headers: { + 'content-type': 'application/json', + 'Authorization' : auth }, - (error, res, body) => { - if (error) { - // eslint-disable-next-line no-console - console.error(error); - } + url: `${ADDRESS}:${PORT}/triggers/manual?dir=${filepath}`, + }, + (error, res, body) => { + if (error) { // eslint-disable-next-line no-console - console.log(`statusCode: ${res.statusCode}`); - // eslint-disable-next-line no-console - console.log(body); - }, - ); + console.error(error); + } + // eslint-disable-next-line no-console + // console.log(`statusCode: ${res.statusCode}`); + // eslint-disable-next-line no-console + // console.log(body); + }); // eslint-disable-next-line no-console - console.log('request next'); + // console.log('request next'); // eslint-disable-next-line no-console - console.log(request.post); + // console.log(request.post); return undefined; };