@ctrl/video-filename-parser
Version:
A radarr style release name parser
26 lines (25 loc) • 870 B
JavaScript
export var Channels;
(function (Channels) {
Channels["SEVEN"] = "7.1";
Channels["SIX"] = "5.1";
Channels["STEREO"] = "stereo";
Channels["MONO"] = "mono";
})(Channels || (Channels = {}));
const channelPatterns = [
{ channels: Channels.SEVEN, regex: /(?<!\d)7[\W_][01]\b/i },
{
channels: Channels.SIX,
regex: /(?<!\d)((6[\W]0(?:ch)?)(?=[^\d]|$)|(5[\W][01](?:ch)?)(?=[^\d]|$)|5ch|6ch)\b/i,
},
{ channels: Channels.STEREO, regex: /(?<!\d)(2[\W]0(?:ch)?)(?=[^\d]|$)|\bstereo\b/i },
{ channels: Channels.MONO, regex: /(?<!\d)(1[\W]0(?:ch)?)(?=[^\d]|$)|\b(?:mono|1ch)\b/i },
];
export function parseAudioChannels(title) {
for (const { channels, regex } of channelPatterns) {
const match = regex.exec(title);
if (match) {
return { channels, source: match[0] };
}
}
return {};
}