forked from hummypkg/webif
62 lines
1.3 KiB
Tcl
Executable File
62 lines
1.3 KiB
Tcl
Executable File
#!/mod/bin/jimsh
|
|
|
|
require system.class
|
|
|
|
proc dedupsort {a b} {
|
|
global dir
|
|
return [expr {[file mtime "$dir/$a"] > [file mtime "$dir/$b"]}]
|
|
}
|
|
|
|
proc dedupprocess {file} {{seen {}}} {
|
|
set ts [ts fetch $file 1]
|
|
|
|
if {[$ts flag "Deduped"]} {
|
|
# Fast track content which has already been de-duped.
|
|
set fn [file rootname [file tail $file]]
|
|
if {$fn in $seen} { set stat dup } else { set stat nothing }
|
|
lappend seen $fn
|
|
return [list $stat $ts "" $fn]
|
|
}
|
|
|
|
set dir [file dirname $file]
|
|
set base [file tail [file rootname $file]]
|
|
|
|
set syn ""
|
|
if {[system has tvdb]} {
|
|
set epname [$ts episode_name]
|
|
|
|
if {[$ts get tvdb_method] ne "" && [$ts get episodenum] > 0} {
|
|
set syn [$ts epstr [[settings] dedup_template]]
|
|
append syn $epname
|
|
} else {
|
|
set syn $epname
|
|
}
|
|
}
|
|
if {$syn eq ""} {
|
|
set syn [dedupnormalise [$ts get synopsis] [$ts get title]]
|
|
}
|
|
|
|
# Escape special characters to create the filename.
|
|
set fn [system filename $syn]
|
|
|
|
set stat ok
|
|
if {[$ts inuse]} {
|
|
set stat inuse
|
|
} elseif {$fn in $seen} {
|
|
set stat dup
|
|
} elseif {[string length $syn] > 40} {
|
|
set syn [string range $syn 0 39]
|
|
#set stat error
|
|
} elseif {$base eq $fn} {
|
|
set stat nothing
|
|
$ts set_deduped
|
|
} elseif {[file exists "$dir/$fn.ts"]} {
|
|
set stat preserve
|
|
}
|
|
|
|
lappend seen $fn
|
|
|
|
return [list $stat $ts $syn $fn]
|
|
}
|
|
|