diff --git a/.github/workflows/lint_and_test.yml b/.github/workflows/lint_and_test.yml index 3d80d30ac..3cf9b0fe0 100644 --- a/.github/workflows/lint_and_test.yml +++ b/.github/workflows/lint_and_test.yml @@ -28,7 +28,8 @@ jobs: uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - - run: npm i + - run: npm i + - run: npm i -g typescript && tsc - run: npm run checkPlugins - run: npm run lint - run: npm run test diff --git a/FlowPlugins/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.js new file mode 100644 index 000000000..97d804131 --- /dev/null +++ b/FlowPlugins/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.js @@ -0,0 +1,73 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.plugin = exports.details = void 0; +/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ +var details = function () { return ({ + name: 'Check Channel Count', + description: 'Check streams for specified channel count', + style: { + borderColor: 'orange', + }, + tags: 'audio', + isStartPlugin: false, + pType: '', + requiresVersion: '2.11.01', + sidebarPosition: -1, + icon: 'faQuestion', + inputs: [ + { + name: 'channelCount', + type: 'number', + defaultValue: '2', + inputUI: { + type: 'dropdown', + options: [ + '1', + '2', + '6', + '8', + ], + }, + tooltip: 'Specify channel count to check for', + }, + ], + outputs: [ + { + number: 1, + tooltip: 'File has stream with specified channel count', + }, + { + number: 2, + tooltip: 'File does not have stream with specified channel count', + }, + ], +}); }; +exports.details = details; +// eslint-disable-next-line @typescript-eslint/no-unused-vars +var plugin = function (args) { + var _a, _b; + var lib = require('../../../../../methods/lib')(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign + args.inputs = lib.loadDefaultValues(args.inputs, details); + var channelCount = Number(args.inputs.channelCount); + var hasSpecifiedChannelCount = false; + args.jobLog("Checking for ".concat(channelCount, " channels")); + if (Array.isArray((_b = (_a = args === null || args === void 0 ? void 0 : args.inputFileObj) === null || _a === void 0 ? void 0 : _a.ffProbeData) === null || _b === void 0 ? void 0 : _b.streams)) { + for (var i = 0; i < args.inputFileObj.ffProbeData.streams.length; i += 1) { + var stream = args.inputFileObj.ffProbeData.streams[i]; + args.jobLog("Stream ".concat(i, " has ").concat(stream.channels, " channels")); + if (stream.channels === channelCount) { + hasSpecifiedChannelCount = true; + } + } + } + else { + throw new Error('File has no stream data'); + } + return { + outputFileObj: args.inputFileObj, + outputNumber: hasSpecifiedChannelCount ? 1 : 2, + variables: args.variables, + }; +}; +exports.plugin = plugin; diff --git a/FlowPluginsTs/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.ts new file mode 100644 index 000000000..4540cf131 --- /dev/null +++ b/FlowPluginsTs/CommunityFlowPlugins/audio/checkChannelCount/1.0.0/index.ts @@ -0,0 +1,87 @@ +import { + IpluginDetails, + IpluginInputArgs, + IpluginOutputArgs, +} from '../../../../FlowHelpers/1.0.0/interfaces/interfaces'; + +/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */ +const details = (): IpluginDetails => ({ + name: 'Check Channel Count', + description: 'Check streams for specified channel count', + style: { + borderColor: 'orange', + }, + tags: 'audio', + isStartPlugin: false, + pType: '', + requiresVersion: '2.11.01', + sidebarPosition: -1, + icon: 'faQuestion', + inputs: [ + { + name: 'channelCount', + type: 'number', + defaultValue: '2', + inputUI: { + type: 'dropdown', + options: [ + '1', + '2', + '6', + '8', + ], + }, + tooltip: 'Specify channel count to check for', + }, + + ], + outputs: [ + { + number: 1, + tooltip: 'File has stream with specified channel count', + }, + { + number: 2, + tooltip: 'File does not have stream with specified channel count', + }, + ], +}); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const plugin = (args: IpluginInputArgs): IpluginOutputArgs => { + const lib = require('../../../../../methods/lib')(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign + args.inputs = lib.loadDefaultValues(args.inputs, details); + + const channelCount = Number(args.inputs.channelCount); + + let hasSpecifiedChannelCount = false; + + args.jobLog(`Checking for ${channelCount} channels`); + + if (Array.isArray(args?.inputFileObj?.ffProbeData?.streams)) { + for (let i = 0; i < args.inputFileObj.ffProbeData.streams.length; i += 1) { + const stream = args.inputFileObj.ffProbeData.streams[i]; + + args.jobLog(`Stream ${i} has ${stream.channels} channels`); + + if ( + stream.channels === channelCount + ) { + hasSpecifiedChannelCount = true; + } + } + } else { + throw new Error('File has no stream data'); + } + + return { + outputFileObj: args.inputFileObj, + outputNumber: hasSpecifiedChannelCount ? 1 : 2, + variables: args.variables, + }; +}; +export { + details, + plugin, +};