add a script to encode DVDs with HandBrake, and another to encode new DVDs
This commit is contained in:
parent
9417a54eae
commit
32193a0980
2 changed files with 61 additions and 0 deletions
11
encode
Executable file
11
encode
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
source="$1"
|
||||||
|
dest="$2"
|
||||||
|
if [[ -e "$dest" ]]; then
|
||||||
|
# echo "$source -> $dest (skipped, exists)"
|
||||||
|
else
|
||||||
|
echo "$source -> $dest"
|
||||||
|
# echo HandBrakeCLI --preset=\'iPad\' -e x264 --main-feature --markers -i \'$source\' -o \'$dest\'
|
||||||
|
noglob HandBrakeCLI --preset='iPad' -e x264 --main-feature --markers -i "$source" -o "$dest" >>'/var/log/encode.log' 2>>'/var/log/encode.err'
|
||||||
|
fi
|
||||||
50
encode-new-dvds
Executable file
50
encode-new-dvds
Executable file
|
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
SourceDir = '/Volumes/Atlas/DVD/Movies'
|
||||||
|
DestDir = '/Volumes/Atlas/Purchased/Movies'
|
||||||
|
|
||||||
|
def quote(s)
|
||||||
|
'"' + s.gsub(/(["$`])/, '\\\\\1') + '"'
|
||||||
|
end
|
||||||
|
|
||||||
|
def files_to_encode
|
||||||
|
files = Dir[File.join(SourceDir, '*')].inject({}) do |files, source|
|
||||||
|
basename = File.basename(source)
|
||||||
|
unless basename == 'scrub.json' || File.exists?(File.join(source, 'noencode'))
|
||||||
|
outname = basename.sub(/\.dvdmedia$/, '').sub(/Disc/, 'Part')
|
||||||
|
dest = File.join(DestDir, outname) + '.m4v'
|
||||||
|
files[source] = dest
|
||||||
|
end
|
||||||
|
files
|
||||||
|
end
|
||||||
|
|
||||||
|
# If only one disc is to be encoded strip the "(Part X of Y)" suffix.
|
||||||
|
# Otherwise make sure the # of parts matches how many are actually encoded.
|
||||||
|
sources = files.keys
|
||||||
|
sources.grep(/^.*\(Disc\s/).each do |source|
|
||||||
|
prefix = source.match(/^(.*)\(Disc\s/)[1]
|
||||||
|
parts = sources.select { |source| source[prefix] }
|
||||||
|
if parts.length == 1
|
||||||
|
files[source].sub!(/\s\(Part[^)]+\)/, '')
|
||||||
|
else
|
||||||
|
parts.each do |source|
|
||||||
|
files[source].sub!(/Part (\d) of \d/, "Part \\1 of #{parts.length}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
files
|
||||||
|
end
|
||||||
|
|
||||||
|
def main
|
||||||
|
files_to_encode.each do |source, dest|
|
||||||
|
if File.exists?(dest)
|
||||||
|
puts "#{source} -> #{dest} (skipped, exists)"
|
||||||
|
else
|
||||||
|
puts "#{source} -> #{dest}"
|
||||||
|
`encode #{quote(source)} #{quote(dest)}`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
main if $0 == __FILE__
|
||||||
Loading…
Reference in a new issue