66 lines
1.9 KiB
Groovy
66 lines
1.9 KiB
Groovy
// PERSONALIZED SETTINGS
|
|
def episodeDir = '''/in/TV'''
|
|
def episodeFormat = '''/out/TV/{n}/{"Season ${s.pad(2)}"}/{n} - {s00e00} - {t}'''
|
|
def movieDir = '''/in/Movies'''
|
|
def movieFormat = '''/out/Movies/{n} ({y})/{n} ({y}){" CD$pi"}'''
|
|
|
|
// XBMC ON LOCAL MACHINE
|
|
def xbmc = ['localhost'] // (use [] to not notify any XBMC instances about updates)
|
|
|
|
|
|
|
|
// ignore chunk, part, par and hidden files
|
|
def incomplete(f) { f.name =~ /[.]incomplete|[.]chunk|[.]par$|[.]dat$/ }
|
|
|
|
|
|
// extract completed multi-volume rar files
|
|
[episodeDir, movieDir].getFolders{ !it.hasFile{ incomplete(it) } && it.hasFile{ it =~ /[.]rar$/ } }.each{ dir ->
|
|
// extract all archives found in this folder
|
|
def paths = extract(folder:dir)
|
|
|
|
// delete original archive volumes after successful extraction
|
|
if (paths != null && !paths.isEmpty()) {
|
|
dir.listFiles{ it =~ /[.]rar$|[.]r[\d]+$/ }*.delete()
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* Fetch subtitles and sort into folders
|
|
*/
|
|
episodeDir.getFolders{ !it.hasFile{ incomplete(it) } && it.hasFile{ it.isVideo() } }.each{ dir ->
|
|
println "Processing $dir"
|
|
def files = dir.listFiles{ it.isVideo() }
|
|
|
|
// fetch subtitles
|
|
files += getSubtitles(file:files)
|
|
|
|
// sort episodes / subtitles
|
|
rename(file:files, db:'TheTVDB', format:episodeFormat)
|
|
}
|
|
|
|
movieDir.getFolders{ !it.hasFile{ incomplete(it) } && it.hasFile{ it.isVideo() } }.each{ dir ->
|
|
println "Processing $dir"
|
|
def files = dir.listFiles{ it.isVideo() }
|
|
|
|
// fetch subtitles
|
|
files += getSubtitles(file:files)
|
|
|
|
// sort movies / subtitles
|
|
rename(file:files, db:'TheMovieDB', format:movieFormat)
|
|
}
|
|
|
|
|
|
// make XBMC scan for new content
|
|
xbmc.each { host ->
|
|
telnet(host, 9090) { writer, reader ->
|
|
// API call for latest XBMC release
|
|
def msg = '{"id":1,"method":"VideoLibrary.Scan","params":[],"jsonrpc":"2.0"}'
|
|
|
|
// API call for XBMC Dharma-Release or older
|
|
// def msg = '{"id":1,"method":"VideoLibrary.ScanForContent","params":[],"jsonrpc":"2.0"}'
|
|
|
|
writer.println(msg)
|
|
}
|
|
}
|