@ctrl/video-filename-parser
Version:
A radarr style release name parser
18 lines (17 loc) • 869 B
JavaScript
import { parseAudioChannels } from '../audioChannels.js';
import { parseAudioCodec } from '../audioCodec.js';
import { parseResolution } from '../resolution.js';
import { parseVideoCodec } from '../videoCodec.js';
const titleBoundaryParsers = [
{ name: 'resolution', parse: title => parseResolution(title).source },
{ name: 'audio-codec', parse: title => parseAudioCodec(title).source },
{ name: 'audio-channels', parse: title => parseAudioChannels(title).source },
{ name: 'video-codec', parse: title => parseVideoCodec(title).source },
];
export function getFirstTitleBoundaryPosition(title) {
const positions = titleBoundaryParsers
.map(({ parse }) => parse(title))
.map(source => (source ? title.indexOf(source) : -1))
.filter(position => position > 0);
return positions.length > 0 ? Math.min(...positions) : null;
}