'use strict'; /** * test2-anime-25fps.js * Validates mediaAnalyzerGOP + audioSelectorClamping on anime 25fps. * File: Sonarr path, EAC3 ITA 640k 5.1, "Naruto" in animeSeries list. * Note: DTS detection logic is fully covered in unit tests (quick-logic-test.js). * * Expected: * gopKeyint = "50" * isAnimation = "true" * isMovie = "false" * x265Tune = "animation" * vBitrate = "2000k" (anime HD 720p) * audioItaCodecName = "eac3" * audioItaOpusBitrate = "384" (series: 640k >= 384 threshold -> 384k) * audioHasEng = "false" */ const path = require('path'); const { buildMockArgs, cleanupWorkDir, assertEqual } = require('../mock-tdarr-runtime'); const { plugin: analyzerPlugin } = require(require('path').join(process.cwd(), 'LocalFlowPlugins/utility/mediaAnalyzerGOP/1.0.0/index')); const { plugin: audioPlugin } = require(require('path').join(process.cwd(), 'LocalFlowPlugins/audio/audioSelectorClamping/1.0.0/index')); const FILE = path.resolve('tests/samples/media/toshiba/Sonarr/Naruto S01/Naruto S01E01.mkv'); async function run() { console.log('\n=== TEST 2: 25fps Anime EAC3 ITA (Naruto, Sonarr) ===\n'); console.log('Running mediaAnalyzerGOP...'); const args1 = buildMockArgs({ filePath: FILE, inputs: { moviePathPatterns: '/Radarr', animeSeries: 'Naruto|One Piece', filmBitrate: '3000', seriesBitrate: '3000', animeBitrateHd: '2000', animeBitrateSd: '1000', }, }); const out1 = await analyzerPlugin(args1); const vars = out1.variables; assertEqual(vars.gopKeyint, '50', 'gopKeyint (2 x 25 = 50)'); assertEqual(vars.isMovie, 'false', 'isMovie=false (Sonarr path)'); assertEqual(vars.isAnimation, 'true', 'isAnimation=true (Naruto in path)'); assertEqual(vars.x265Tune, 'animation', 'x265Tune=animation'); assertEqual(vars.vBitrate, '2000k', 'vBitrate=2000k (anime 720p HD)'); console.log('\nRunning audioSelectorClamping...'); const args2 = buildMockArgs({ filePath: FILE, variables: vars, inputs: { filmMultiChannelBitrate: '640', seriesMultiChannelThreshold:'384', stereoBitrateMax: '128', }, }); const out2 = await audioPlugin(args2); const vars2 = out2.variables; assertEqual(out2.outputNumber, 1, 'outputNumber=1 (ITA found)'); assertEqual(vars2.audioHasIta, 'true', 'audioHasIta=true'); assertEqual(vars2.audioHasEng, 'false','audioHasEng=false'); assertEqual(vars2.audioItaCodecName, 'eac3', 'ITA codec=eac3'); assertEqual(vars2.audioItaOpusBitrate, '384', 'ITA Opus=384k (series: 640k >= 384 threshold)'); cleanupWorkDir(args1); cleanupWorkDir(args2); console.log('\n=== TEST 2 PASSED ===\n'); } module.exports = run;