@ctrl/video-filename-parser
Version:
A radarr style release name parser
30 lines (29 loc) • 1.03 kB
JavaScript
export var VideoCodec;
(function (VideoCodec) {
VideoCodec["X265"] = "x265";
VideoCodec["X264"] = "x264";
VideoCodec["H264"] = "h264";
VideoCodec["H265"] = "h265";
VideoCodec["WMV"] = "WMV";
VideoCodec["XVID"] = "xvid";
VideoCodec["DVDR"] = "dvdr";
})(VideoCodec || (VideoCodec = {}));
const codecPatterns = [
{ codec: VideoCodec.H264, regex: /h264/i },
{ codec: VideoCodec.H265, regex: /h265/i },
{ codec: VideoCodec.X265, regex: /x265|HEVC/i },
{ codec: VideoCodec.X264, regex: /x264/i },
{ codec: VideoCodec.XVID, regex: /XvidHD|X-?vid|divx/i },
{ codec: VideoCodec.WMV, regex: /WMV/i },
{ codec: VideoCodec.DVDR, regex: /DVDR\b/i },
];
export const codecExp = new RegExp(codecPatterns.map(({ regex }) => regex.source).join('|'), 'i');
export function parseVideoCodec(title) {
for (const { codec, regex } of codecPatterns) {
const match = regex.exec(title);
if (match) {
return { codec, source: match[0] };
}
}
return {};
}