class Getpics::Downloader
Public Class Methods
new(verbose, src_dir, pic_dest, movie_dest)
click to toggle source
# File lib/getpics/downloader.rb, line 3 def initialize(verbose, src_dir, pic_dest, movie_dest) @verbose = verbose @src_dir = src_dir @pic_dest = pic_dest @movie_dest = movie_dest @media_list = MediaList.new() end
Public Instance Methods
convert_media()
click to toggle source
# File lib/getpics/downloader.rb, line 52 def convert_media return if @media_list.movies.size == 0 ffmpeg_path = which("ffmpeg") if ffmpeg_path == nil puts "ffmpeg not found!".red return end movies_to_process = [] @media_list.movies.each do |movie| dest_path = "#{movie.target_folder}/#{File.basename(movie.target_name, movie.extension)}.mp4" if ! File.exists?(dest_path) movies_to_process << movie else puts "#{dest_path} already exists!".light_black if @verbose end return if movies_to_process.size == 0 puts "Converting movies to MP4..." pb = ProgressBar.create(:title => "Movies Converted", :total => movies_to_process.size, :format => '%t: |%b%i| %c/%C %e') movies_to_process.each do |movie| #system("#{ffmpeg_path} -i #{movie.target_path} -vcodec copy -acodec copy #{dest_path}") system("#{ffmpeg_path} -i #{movie.target_path} -c:v libx264 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 #{dest_path}") pb.increment end end puts "Do you want to delete the .MOV files you just converted? [y/N]".yellow delete = gets.strip if delete == 'y' movies_to_process.each do |movie| puts "Deleting #{movie.target_path}".red if @verbose File.delete(movie.target_path) end end end
copy_media()
click to toggle source
# File lib/getpics/downloader.rb, line 36 def copy_media puts "Copying media..." pb = ProgressBar.create(:title => "Media Copied", :total => @media_list.size, :format => '%t: |%b%i| %c/%C %e') @media_list.all_known_media.each do |media| if ! File.exists?("#{media.target_path}") pb.log ("Copying #{media.path} to #{media.target_path}").light_black if @verbose FileUtils.mkdir_p(media.target_folder) FileUtils.cp(media.path, media.target_path) media.path = media.target_path else pb.log ("#{media.target_name}" + " already exists!").light_black if @verbose end pb.increment end end
delete_media()
click to toggle source
# File lib/getpics/downloader.rb, line 92 def delete_media @media_list.all_known_media.each do |media| puts "Deleting #{media.orig_path}".red if @verbose FileUtils.rm(media.orig_path) end end
has_movies?()
click to toggle source
# File lib/getpics/downloader.rb, line 87 def has_movies? return true if @media_list.movies.size > 0 return false end
load_media()
click to toggle source
# File lib/getpics/downloader.rb, line 11 def load_media puts "Searching for media..." files = Dir.glob(@src_dir + "/**/*").reject { |p| File.directory? p } files.each do |file| if ! file.match(/\.xmp$/i) media = Media.new(file) if media.is_pic? media.target_path = "#{@pic_dest}/#{media.target_path}" media.target_folder = "#{@pic_dest}/#{media.target_folder}" elsif media.is_movie? media.target_path = "#{@movie_dest}/#{media.target_path}" media.target_folder = "#{@movie_dest}/#{media.target_folder}" end @media_list.add(media) end end if @media_list.size == 0 puts "No media found!".red exit 1 end puts "Found #{@media_list.raw_pics.size} RAW photos".blue if @media_list.raw_pics.size > 0 puts "Found #{@media_list.developed_pics.size} JPGs".blue if @media_list.developed_pics.size > 0 puts "Found #{@media_list.movies.size} movies".blue if @media_list.movies.size > 0 end
which(cmd)
click to toggle source
# File lib/getpics/downloader.rb, line 99 def which(cmd) exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| exts.each do |ext| exe = File.join(path, "#{cmd}#{ext}") return exe if File.executable?(exe) && !File.directory?(exe) end end return nil end