Merge pull request #328 from HaveAGitGat/break_cycle_plugin

Add Tdarr_Plugin_00td_filter_break_stack_if_processed
This commit is contained in:
HaveAGitGat 2022-08-28 17:50:43 +02:00 committed by GitHub
commit 37c1dee5e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 0 deletions

View file

@ -0,0 +1,36 @@
const details = () => ({
id: 'Tdarr_Plugin_00td_filter_break_stack_if_processed',
Stage: 'Pre-processing',
Name: 'Filter - break out of plugin stack if processed',
Type: 'Video',
Operation: 'Filter',
Description: `This plugin will break out of the plugin stack if the file has been processed
(i.e. if a new file has been created). In general, place it before your transcode plugin
(for example when trying to force h264 to h264 transcoding which is difficult to do with normal plugins)`,
Version: '1.00',
Tags: 'filter',
Inputs: [],
});
// eslint-disable-next-line no-unused-vars
const plugin = (file, librarySettings, inputs, otherArguments) => {
const lib = require('../methods/lib')();
// eslint-disable-next-line no-unused-vars,no-param-reassign
inputs = lib.loadDefaultValues(inputs, details);
const response = {
processFile: true,
infoLog: '',
};
if (file.file !== otherArguments.originalLibraryFile.file) {
response.processFile = false;
response.infoLog = 'File has been processed, breaking out of plugin stack.';
} else {
response.infoLog = 'File has not been processed yet. Continuing to next plugin.';
}
return response;
};
module.exports.details = details;
module.exports.plugin = plugin;

View file

@ -0,0 +1,40 @@
/* eslint max-len: 0 */
const _ = require('lodash');
const run = require('../helpers/run');
const tests = [
{
input: {
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
librarySettings: {},
inputs: {},
otherArguments: {
originalLibraryFile: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
},
},
output: {
processFile: true,
infoLog: 'File has not been processed yet. Continuing to next plugin.',
},
},
{
input: {
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
librarySettings: {},
inputs: {},
otherArguments: {
originalLibraryFile: (() => {
const file = _.cloneDeep(require('../sampleData/media/sampleH265_1.json'));
file.file += 'test';
return file;
})(),
},
},
output: {
processFile: false,
infoLog: 'File has been processed, breaking out of plugin stack.',
},
},
];
run(tests);