From f35dceae9bdbe4f69321b4a3d3e9b4e86574aa7e Mon Sep 17 00:00:00 2001 From: Viren070 Date: Mon, 28 Apr 2025 20:12:26 +0100 Subject: [PATCH] feat: add release group extraction to filename parsing and update types --- packages/parser/src/parser.ts | 7 +++++++ packages/parser/src/regex.ts | 2 ++ packages/types/src/types.ts | 2 ++ 3 files changed, 11 insertions(+) diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index 6c3e3bb2..27952538 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -21,6 +21,11 @@ function matchMultiplePatterns( .map(([tag]) => tag); } +function getMatchingPattern(filename: string, pattern: RegExp): string { + const match = filename.match(pattern); + return match ? match[1] : 'Unknown'; +} + export function parseFilename(filename: string): ParsedNameData { const resolution = matchPattern(filename, PARSE_REGEX.resolutions); const quality = matchPattern(filename, PARSE_REGEX.qualities); @@ -28,6 +33,7 @@ export function parseFilename(filename: string): ParsedNameData { const visualTags = matchMultiplePatterns(filename, PARSE_REGEX.visualTags); const audioTags = matchMultiplePatterns(filename, PARSE_REGEX.audioTags); const languages = matchMultiplePatterns(filename, PARSE_REGEX.languages); + const releaseGroup = getMatchingPattern(filename, PARSE_REGEX.releaseGroup); return { resolution, @@ -36,5 +42,6 @@ export function parseFilename(filename: string): ParsedNameData { encode, audioTags, visualTags, + releaseGroup, }; } diff --git a/packages/parser/src/regex.ts b/packages/parser/src/regex.ts index 214d6baf..685fe922 100644 --- a/packages/parser/src/regex.ts +++ b/packages/parser/src/regex.ts @@ -131,4 +131,6 @@ export const PARSE_REGEX = { Malay: createLanguageRegex('malay'), Latino: createLanguageRegex('latino|lat'), }, + releaseGroup: + /- ?(?!\d+$|S\d+|\d+x|ep?\d+|[^[]+]$)([^\-. []+[^\-. [)\]\d][^\-. [)\]]*)(?:\[[\w.-]+])?(?=\.\w{2,4}$|$)/i, }; diff --git a/packages/types/src/types.ts b/packages/types/src/types.ts index 615d501f..a86f4a58 100644 --- a/packages/types/src/types.ts +++ b/packages/types/src/types.ts @@ -3,6 +3,7 @@ export interface ParsedNameData { resolution: string; quality: string; encode: string; + releaseGroup: string; visualTags: string[]; audioTags: string[]; languages: string[]; @@ -36,6 +37,7 @@ export interface ParsedStream extends ParsedNameData { url?: string; externalUrl?: string; indexers?: string; + releaseGroup: string; personal?: boolean; stream?: { subtitles?: Subtitle[];