Merge pull request #476 from HaveAGitGat/2.10.01

Use otherArguments.originalLibraryFile instead of network req
make-only-subtitle-default
HaveAGitGat 2 years ago committed by GitHub
commit 60a6ed0d71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,6 +1,4 @@
module.exports.dependencies = [ module.exports.dependencies = [
'axios',
'path-extra',
'touch', 'touch',
]; ];
@ -14,66 +12,34 @@ const details = () => ({
Description: 'This plugin copies the original file dates and times to the transcoded file \n\n', Description: 'This plugin copies the original file dates and times to the transcoded file \n\n',
Version: '1.10', Version: '1.10',
Tags: 'post-processing,dates,date', Tags: 'post-processing,dates,date',
Inputs: [{ Inputs: [
name: 'server', {
type: 'string', name: 'log',
defaultValue: '192.168.1.100', type: 'boolean',
inputUI: { defaultValue: false,
type: 'text', inputUI: {
}, type: 'dropdown',
tooltip: `IP address or hostname of the server assigned to this node, will be used for API requests. options: [
If you are running nodes within Docker you should use the server IP address rather than the name. 'false',
'true',
\\nExample:\\n ],
tdarrserver },
tooltip: `Write log entries to console.log. Default is false.
\\nExample:\\n
192.168.1.100`,
}, {
name: 'extensions',
type: 'string',
defaultValue: '',
inputUI: {
type: 'text',
},
tooltip: `When files are trans-coded the file extension may change,
enter a list of extensions to try and match the original file with in the database after trans-coding.
Default is the list of container types from library settings. The list will be searched in order and
the extension of the original file will always be checked first before the list is used.
\\nExample:\\n
mkv,mp4,avi`,
},
{
name: 'log',
type: 'boolean',
defaultValue: false,
inputUI: {
type: 'dropdown',
options: [
'false',
'true',
],
},
tooltip: `Write log entries to console.log. Default is false.
\\nExample:\\n \\nExample:\\n
true`, true`,
}, },
], ],
}); });
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
const plugin = async (file, librarySettings, inputs, otherArguments) => { const plugin = (file, librarySettings, inputs, otherArguments) => {
const lib = require('../methods/lib')(); const lib = require('../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
inputs = lib.loadDefaultValues(inputs, details); inputs = lib.loadDefaultValues(inputs, details);
// eslint-disable-next-line import/no-unresolved
const axios = require('axios'); // eslint-disable-next-line import/no-unresolved,import/no-extraneous-dependencies
// eslint-disable-next-line import/no-unresolved
const touch = require('touch'); const touch = require('touch');
// eslint-disable-next-line import/no-unresolved
const path = require('path-extra');
const log = (msg) => { const log = (msg) => {
if (inputs.log === true) { if (inputs.log === true) {
@ -82,40 +48,6 @@ const plugin = async (file, librarySettings, inputs, otherArguments) => {
} }
}; };
const getFileData = async (filePath, extensions, server) => {
const originalExtension = path.extname(filePath).split('.')[1];
if (extensions.indexOf(originalExtension) > -1) {
extensions.splice(extensions.indexOf(originalExtension), 1);
}
extensions.unshift(originalExtension);
let httpResponse = null;
for (let i = 0; i < extensions.length; i += 1) {
const fileName = path.replaceExt(filePath, `.${extensions[i]}`);
log(`Fetching file object for ${fileName}...`);
// eslint-disable-next-line no-await-in-loop
httpResponse = await axios.post(`http://${server}:8265/api/v2/search-db`, {
data: {
string: fileName,
lessThanGB: 10000,
greaterThanGB: 0,
},
});
if (httpResponse.status === 200) {
if (httpResponse.data.length > 0) {
log(`Got response for ${fileName}`);
return httpResponse;
}
log(`Response for ${fileName} is empty`);
} else {
log(`API request for ${filePath} failed.`);
}
}
log('Could not get file info from API, giving up.');
return httpResponse;
};
const responseData = { const responseData = {
file, file,
removeFromDB: false, removeFromDB: false,
@ -124,30 +56,10 @@ const plugin = async (file, librarySettings, inputs, otherArguments) => {
}; };
try { try {
if (!inputs.server || inputs.server.trim() === '') { log('Changing date...');
responseData.infoLog += 'Tdarr server name/IP not configured in library transcode options\n'; touch.sync(file._id, { time: Date.parse(otherArguments.originalLibraryFile.statSync.mtime), force: true });
return responseData; log('Done.');
} responseData.infoLog += 'File timestamps updated or match original file\n';
log('Waiting 5 seconds...');
let { extensions } = inputs;
if (!extensions || extensions.trim() === '') {
extensions = librarySettings.containerFilter;
}
extensions = extensions.split(',');
await new Promise((resolve) => setTimeout(resolve, 5000));
const response = await getFileData(file._id, extensions, inputs.server);
if (response.data.length > 0) {
log('Changing date...');
touch.sync(file._id, { time: Date.parse(response.data[0].statSync.mtime), force: true });
log('Done.');
responseData.infoLog += 'File timestamps updated or match original file\n';
return responseData;
}
responseData.infoLog += `Could not find file using API using ${inputs.server}\n`;
return responseData; return responseData;
} catch (err) { } catch (err) {
log(err); log(err);

Loading…
Cancel
Save