-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.js
49 lines (41 loc) · 1.43 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'use strict';
var match = require('string-match');
module.exports = function(name){
// TODO: split out RegExps for each type(x264, TV, MP3, Games, etc.)
var data = {
year: match(name, /(?!^)[1,2]\d{3}/),
resolution: match(name, /\d{3,4}p/i),
type: match(name, /CAM|TS(?!C)|TELESYNC|(DVD|BD)SCR|SCR|DDC|R5[\.\s]LINE|R5|(DVD|HD|BR|BD|WEB)Rip|DVDR|(HD|PD)TV|WEB-DL|WEBDL|BluRay/i),
video: match(name, /NTSC|PAL|[xh][\.\s]?264/i),
audio: match(name, /AAC2[\.\s]0|AAC|AC3|DTS|DD5[\.\s]1/i),
language: match(name, /MULTiSUBS|MULTi|NORDiC|DANiSH|SWEDiSH|NORWEGiAN|GERMAN|iTALiAN|FRENCH|SPANiSH/i),
edition: match(name, /UNRATED|DC|(Directors|EXTENDED)[\.\s](CUT|EDITION)|EXTENDED|3D|2D|\bNF\b/i),
tags: name.match(/COMPLETE|LiMiTED|iNTERNAL/i),
release: match(name, /REAL[\.\s]PROPER|PROPER|REPACK|READNFO|READ[\.\s]NFO|DiRFiX|NFOFiX/i),
group: match(name, /[A-Za-z0-9]+$/)
};
var matches = '';
for(var key in data){
var value = data[key];
if(!value) continue;
matches += value + '|';
}
data.title = name
.replace(RegExp(matches + '-', 'g'), '')
.replace(/\./g, ' ')
.replace(/\s{2,}/g, ' ')
.trim();
data.original = name;
Object.keys(data).forEach(function(key) {
if(!data[key]){
delete data[key];
return;
}
if(key === 'edition' || key === 'release'){
data[key] = data[key]
.replace(/\./g, ' ')
.trim();
}
});
return data;
};