Files
tdarr-plugs/tests/test_subtitle_conversion.js
2026-01-30 05:55:22 -08:00

73 lines
2.1 KiB
JavaScript

// Mock Tdarr lib
const lib = {
loadDefaultValues: (inputs, details) => {
const d = details();
const result = { ...inputs };
d.Inputs.forEach(i => {
if (result[i.name] === undefined) result[i.name] = i.defaultValue;
});
return result;
}
};
const moduleAlias = require('module');
const originalRequire = moduleAlias.prototype.require;
moduleAlias.prototype.require = function (path) {
if (path === '../methods/lib') {
return () => lib;
}
return originalRequire.apply(this, arguments);
};
const { plugin } = require('../Local/Tdarr_Plugin_04_subtitle_conversion.js');
const mockFileMP4 = {
container: 'mp4',
fileMedium: 'video',
ffProbeData: {
streams: [
{ index: 0, codec_type: 'video', codec_name: 'h264' },
{ index: 1, codec_type: 'subtitle', codec_name: 'srt' }
]
}
};
const inputs = {
enable_conversion: 'true',
always_convert_webvtt: 'true'
};
console.log('--- Testing MP4 Support ---');
const resultMP4 = plugin(mockFileMP4, {}, inputs, {});
console.log('Info Log:', resultMP4.infoLog);
console.log('Preset:', resultMP4.preset);
if (resultMP4.processFile && resultMP4.preset.includes('-c:1 mov_text')) {
console.log('PASS: MP4 subtitle conversion enabled and correctly mapping mov_text.');
} else {
console.error('FAIL: MP4 subtitle conversion failed or correctly ignored.');
}
const mockFileWebVTT = {
container: 'mkv',
fileMedium: 'video',
ffProbeData: {
streams: [
{ index: 0, codec_type: 'video', codec_name: 'h264' },
{ index: 1, codec_type: 'subtitle', codec_name: 'none', codec_tag_string: 'WEBVTT' }
]
}
};
console.log('\n--- Testing WebVTT Detection (MKV) ---');
const resultWebVTT = plugin(mockFileWebVTT, {}, inputs, {});
console.log('Info Log:', resultWebVTT.infoLog);
console.log('Preset:', resultWebVTT.preset);
if (resultWebVTT.processFile && resultWebVTT.preset.includes('-c:1 srt')) {
console.log('PASS: WebVTT detected via codec_tag_string and converted to SRT.');
} else {
console.error('FAIL: WebVTT detection failed.');
}