mirror of
https://github.com/Viren070/AIOStreams.git
synced 2025-12-01 23:14:04 +01:00
137 lines
5.9 KiB
TypeScript
137 lines
5.9 KiB
TypeScript
const createRegex = (pattern: string): RegExp =>
|
|
new RegExp(`(?<![^\\s\\[(_\\-.,])(${pattern})(?=[\\s\\)\\]_.\\-,]|$)`, 'i');
|
|
|
|
const createLanguageRegex = (pattern: string): RegExp =>
|
|
createRegex(`${pattern}(?![ .\\-_]?sub(title)?s?)`);
|
|
|
|
export const PARSE_REGEX = {
|
|
resolutions: {
|
|
'2160p': createRegex(
|
|
'(bd|hd|m)?(4k|2160(p|i)?)|u(ltra)?[ .\\-_]?hd|3840\s?x\s?(\d{4})'
|
|
),
|
|
'1440p': createRegex(
|
|
'(bd|hd|m)?(1440(p|i)?)|2k|w?q(uad)?[ .\\-_]?hd|2560\s?x(\d{4})'
|
|
),
|
|
'1080p': createRegex(
|
|
'(bd|hd|m)?(1080(p|i)?)|f(ull)?[ .\\-_]?hd|1920\s?x\s?(\d{3,4})'
|
|
),
|
|
'720p': createRegex('(bd|hd|m)?(720(p|i)?)|hd|1280\s?x\s?(\d{3,4})'),
|
|
'480p': createRegex('(bd|hd|m)?(480(p|i)?)|sd'),
|
|
},
|
|
qualities: {
|
|
'BluRay REMUX': createRegex('(blu[ .\\-_]?ray|bd|br|b|uhd)[ .\\-_]?remux'),
|
|
BluRay: createRegex(
|
|
'blu[ .\\-_]?ray|((bd|br|b)[ .\\-_]?(rip|r)?)(?![ .\\-_]?remux)'
|
|
),
|
|
'WEB-DL': createRegex('web[ .\\-_]?(dl)?(?![ .\\-_]?(DLRip|cam))'),
|
|
WEBRip: createRegex('web[ .\\-_]?rip'),
|
|
HDRip: createRegex('hd[ .\\-_]?rip|web[ .\\-_]?dl[ .\\-_]?rip'),
|
|
'HC HD-Rip': createRegex('hc|hd[ .\\-_]?rip'),
|
|
DVDRip: createRegex('dvd[ .\\-_]?(rip|mux|r|full|5|9)'),
|
|
HDTV: createRegex(
|
|
'(hd|pd)tv|tv[ .\\-_]?rip|hdtv[ .\\-_]?rip|dsr(ip)?|sat[ .\\-_]?rip'
|
|
),
|
|
CAM: createRegex('cam|hdcam|cam[ .\\-_]?rip'),
|
|
TS: createRegex('telesync|ts|hd[ .\\-_]?ts|pdvd|predvd(rip)?'),
|
|
TC: createRegex('telecine|tc|hd[ .\\-_]?tc'),
|
|
SCR: createRegex('((dvd|bd|web|hd)?[ .\\-_]?)?(scr(eener)?)'),
|
|
},
|
|
visualTags: {
|
|
'10bit': createRegex('10[ .\\-_]?bit'),
|
|
'HDR10+': createRegex('hdr[ .\\-_]?10[ .\\-_]?(plus|[+])'),
|
|
HDR10: createRegex('hdr[ .\\-_]?10(?![ .\\-_]?(?:\\+|plus))'),
|
|
HDR: createRegex('hdr(?![ .\\-_]?10)(?![ .\\-_]?(?:\\+|plus))'),
|
|
DV: createRegex('do?(lby)?[ .\\-_]?vi?(sion)?(?:[ .\\-_]?atmos)?|dv'),
|
|
'3D': createRegex('(bd)?(3|three)[ .\\-_]?(d(imension)?(al)?)'),
|
|
IMAX: createRegex('imax'),
|
|
AI: createRegex('ai[ .\\-_]?(upscale|enhanced|remaster)?'),
|
|
SDR: createRegex('sdr'),
|
|
},
|
|
audioTags: {
|
|
Atmos: createRegex('atmos'),
|
|
'DD+': createRegex(
|
|
'(d(olby)?[ .\\-_]?d(igital)?[ .\\-_]?(p(lus)?|\\+)(?:[ .\\-_]?(5[ .\\-_]?1|7[ .\\-_]?1))?)|e[ .\\-_]?ac[ .\\-_]?3'
|
|
),
|
|
DD: createRegex(
|
|
'(d(olby)?[ .\\-_]?d(igital)?(?:[ .\\-_]?(5[ .\\-_]?1|7[ .\\-_]?1))?)|(?<!e[ .\\-_]?)ac[ .\\-_]?3'
|
|
),
|
|
'DTS-HD MA': createRegex('dts[ .\\-_]?hd[ .\\-_]?ma'),
|
|
'DTS-HD': createRegex('dts[ .\\-_]?hd(?![ .\\-_]?ma)'),
|
|
DTS: createRegex('dts(?![ .\\-_]?hd[ .\\-_]?ma|[ .\\-_]?hd)'),
|
|
TrueHD: createRegex('true[ .\\-_]?hd'),
|
|
5.1: createRegex(
|
|
'(d(olby)?[ .\\-_]?d(igital)?[ .\\-_]?(p(lus)?|\\+)?)?5[ .\\-_]?1(ch)?'
|
|
),
|
|
7.1: createRegex(
|
|
'(d(olby)?[ .\\-_]?d(igital)?[ .\\-_]?(p(lus)?|\\+)?)?7[ .\\-_]?1(ch)?'
|
|
),
|
|
AAC: createRegex('q?aac(?:[ .\\-_]?2)?'),
|
|
FLAC: createRegex('flac(?:[ .\\-_]?(lossless|2\\.0|x[2-4]))?'),
|
|
},
|
|
encodes: {
|
|
HEVC: createRegex('hevc[ .\\-_]?(10)?|[xh][ .\\-_]?265'),
|
|
AVC: createRegex('avc|[xh][ .\\-_]?264'),
|
|
AV1: createRegex('av1'),
|
|
Xvid: createRegex('xvid'),
|
|
DivX: createRegex('divx|dvix'),
|
|
'H-OU': createRegex('h?(alf)?[ .\\-_]?(ou|over[ .\\-_]?under)'),
|
|
'H-SBS': createRegex('h?(alf)?[ .\\-_]?(sbs|side[ .\\-_]?by[ .\\-_]?side)'),
|
|
},
|
|
languages: {
|
|
Multi: createLanguageRegex('multi'),
|
|
'Dual Audio': createLanguageRegex(
|
|
'dual[ .\\-_]?(audio|lang(uage)?|flac|ac3|aac2?)'
|
|
),
|
|
Dubbed: createLanguageRegex('dub(bed)?'),
|
|
English: createLanguageRegex('english|eng'),
|
|
Japanese: createLanguageRegex('japanese|jap'),
|
|
Chinese: createLanguageRegex('chinese|chi'),
|
|
Russian: createLanguageRegex('russian|rus'),
|
|
Arabic: createLanguageRegex('arabic|ara'),
|
|
Portuguese: createLanguageRegex('portuguese|por'),
|
|
Spanish: createLanguageRegex('spanish|spa|esp'),
|
|
French: createLanguageRegex('french|fra'),
|
|
German: createLanguageRegex('german|ger'),
|
|
Italian: createLanguageRegex('italian|ita'),
|
|
Korean: createLanguageRegex('korean|kor'),
|
|
Hindi: createLanguageRegex('hindi|hin'),
|
|
Bengali: createLanguageRegex('bengali|ben'),
|
|
Punjabi: createLanguageRegex('punjabi|pan'),
|
|
Marathi: createLanguageRegex('marathi|mar'),
|
|
Gujarati: createLanguageRegex('gujarati|guj'),
|
|
Tamil: createLanguageRegex('tamil|tam'),
|
|
Telugu: createLanguageRegex('telugu|tel'),
|
|
Kannada: createLanguageRegex('kannada|kan'),
|
|
Malayalam: createLanguageRegex('malayalam|mal'),
|
|
Thai: createLanguageRegex('thai|tha'),
|
|
Vietnamese: createLanguageRegex('vietnamese|vie'),
|
|
Indonesian: createLanguageRegex('indonesian|ind'),
|
|
Turkish: createLanguageRegex('turkish|tur'),
|
|
Hebrew: createLanguageRegex('hebrew|heb'),
|
|
Persian: createLanguageRegex('persian|per'),
|
|
Ukrainian: createLanguageRegex('ukrainian|ukr'),
|
|
Greek: createLanguageRegex('greek|ell'),
|
|
Lithuanian: createLanguageRegex('lithuanian|lit'),
|
|
Latvian: createLanguageRegex('latvian|lav'),
|
|
Estonian: createLanguageRegex('estonian|est'),
|
|
Polish: createLanguageRegex('polish|pol'),
|
|
Czech: createLanguageRegex('czech|cze'),
|
|
Slovak: createLanguageRegex('slovak|slo'),
|
|
Hungarian: createLanguageRegex('hungarian|hun'),
|
|
Romanian: createLanguageRegex('romanian|rum'),
|
|
Bulgarian: createLanguageRegex('bulgarian|bul'),
|
|
Serbian: createLanguageRegex('serbian|srp'),
|
|
Croatian: createLanguageRegex('croatian|hrv'),
|
|
Slovenian: createLanguageRegex('slovenian|slv'),
|
|
Dutch: createLanguageRegex('dutch|dut'),
|
|
Danish: createLanguageRegex('danish|dan'),
|
|
Finnish: createLanguageRegex('finnish|fin'),
|
|
Swedish: createLanguageRegex('swedish|swe'),
|
|
Norwegian: createLanguageRegex('norwegian|nor'),
|
|
Malay: createLanguageRegex('malay'),
|
|
Latino: createLanguageRegex('latino|lat'),
|
|
},
|
|
releaseGroup:
|
|
/- ?(?!\d+$|S\d+|\d+x|ep?\d+|[^[]+]$)([^\-. []+[^\-. [)\]\d][^\-. [)\]]*)(?:\[[\w.-]+])?(?=\.\w{2,4}$|$)/i,
|
|
};
|