View difference between Paste ID: F95ATKLE and ea3feR7b
SHOW: | | - or go back to the newest paste.
1-
// filebot -script "fn:utorrent-postprocess" --output "X:/media" --action copy --conflict override -non-strict -trust-script -Xxbmc=localhost "-Xut_dir=%D" "-Xut_file=%F" "-Xut_label=%L" "-Xut_state=%S" "-Xut_kind=%K"
1+
2
def failOnError = _args.conflict == 'fail'
3
4
// print input parameters
5
_args.parameters.each{ k, v -> println "Parameter: $k = $v" }
6
7
if (args.empty) {
8-
if (args.empty) {a
8+
9
	if (ut_kind == "multi") {
10
		input += new File(ut_dir).getFiles() // multi-file torrent
11
	} else {
12
		input += new File(ut_dir, ut_file) // single-file torrent
13
	}
14
} else {
15
	// assume we're called normally with arguments
16
	input += args.getFiles()
17
}
18
19
// extract archives if necessary
20
input += extract(file:input, output:".", conflict:"override")
21
22
// process only media files
23
input = input.findAll{ it.isVideo() || it.isSubtitle() }
24
25
// ignore clutter files
26
input = input.findAll{ !(it.path =~ /\b(?i:sample|trailer|extras|deleted.scenes|music.video|scrapbook)\b/) }
27
28
// print input fileset
29
input.each{ println "Input: $it" }
30
31
// group episodes/movies and rename according to XBMC standards
32
def groups = input.groupBy{ f ->
33
	def tvs = detectSeriesName(f)
34
	def mov = (parseEpisodeNumber(f) || parseDate(f)) ? null : detectMovie(f, false) // skip movie detection if we can already tell it's an episode
35
	println "$f.name [series: $tvs, movie: $mov]"
36
	
37
	// DECIDE EPISODE VS MOVIE (IF NOT CLEAR)
38
	if (tvs && mov) {
39
		def fn = f.nameWithoutExtension.space(' ')
40
		if (fn =~ "(?i:$tvs - .+)" || parseEpisodeNumber(fn, true) || parseDate(fn)) {
41
			println "Exclude Movie: $mov"
42
			mov = null
43
		} else if (detectMovie(f, true) && (fn =~ /(19|20)\d{2}/ || !(tvs =~ "(?i:$mov.name)"))) {
44
			println "Exclude Series: $tvs"
45
			tvs = null
46
		} else if (fn =~ "(?i:$tvs)" && parseEpisodeNumber(fn.after(tvs), false)) {
47
			println "Exclude Movie: $mov"
48
			mov = null
49
		} else if (fn =~ "(?i:$mov.name)" && !parseEpisodeNumber(fn.after(mov.name), false)) {
50
			println "Exclude Series: $tvs"
51
			tvs = null
52
		}
53
	}
54
	
55
	// CHECK CONFLICT
56
	if (((mov && tvs) || (!mov && !tvs)) && failOnError) {
57
		throw new Exception("Media detection failed")
58
	}
59
	
60
	return [tvs:tvs, mov:mov]
61
}
62
63
groups.each{ group, files ->
64
	// fetch subtitles
65
	files += (getMissingSubtitles(file:files, lang:"he") ?: [])
66
	files += (getMissingSubtitles(file:files, lang:"en") ?: [])
67
	
68
	// EPISODE MODE
69
	if (group.tvs && !group.mov) {
70-
		if (dest || failOnError) {
70+
71-
			dest.mapByFolder().each{ dir, fs ->
71+
72-
				}
72+
73-
				options = options.sortBySimilarity(query, { it.name })
73+
74-
				
74+
75-
			}
75+
76
	}
77
}