class MultimediaParadise::Video::CopyMissingVideoFiles

Constants

DEFAULT_TARGET_DIRECTORY
#

DEFAULT_TARGET_DIRECTORY

#
LJUST
#

LJUST

#
NAMESPACE
#

NAMESPACE

#
SUBDIR
#

DEFAULT_TARGET_DIRECTORY

#

Public Class Methods

new( target_directory = DEFAULT_TARGET_DIRECTORY, run_already = true ) click to toggle source
#

initialize

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 54
def initialize(
    target_directory = DEFAULT_TARGET_DIRECTORY,
    run_already      = true
  )
  register_sigint
  reset
  set_start_directory
  set_target_directory(
    target_directory
  )
  run if run_already
end

Public Instance Methods

compare_the_two_directories() click to toggle source
#

compare_the_two_directories

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 186
def compare_the_two_directories
  @files_from_target_directory.each {|entry|
    result = @files_from_start_directory.map {|e|
      File.basename(e)
    }.include? File.basename(entry)
    if result # is included
    else
      opnn { :no_colon }
      e
      e
      e swarn('The following video file is NOT '+
              'included: '+sfile(File.basename(entry)))
      opnn
      e "It will thus be copied to the current directory, "\
        "from the"
      opnn; e "location `#{sfile(entry)}`."
      copy_video_file(entry)
    end
  }
end
copy_video_file(i) click to toggle source
#

copy_video_file

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 210
def copy_video_file(i)
  @array_copied_these_files << i
  if File.exist? i
    FileUtils.cp(i, Dir.pwd)
  else
    opnn; e 'Can not copy '+sfile(i)+' as it does not exist.'
  end
end
find_alternative_to(i) click to toggle source
#

find_alternative_to

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 117
def find_alternative_to(i)
  if i.include? 'USB2'
    i = i.gsub(/USB2/, 'USB1')
  elsif i.include? 'USB1'
    i = i.gsub(/USB1/, 'USB2')
  end
  return i
end
from?() click to toggle source
#

from?

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 169
def from?
  @start_directory
end
get_available_video_files() click to toggle source
#

get_available_video_files

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 256
def get_available_video_files
  cliner
  opnn; e 'Now obtaining available video files.'
  opnn; e 'We will use these two locations:'
  e
  e '  - '+sfancy(from?.ljust(LJUST))+' # Start Location.'
  e '  - '+sfancy(target?.ljust(LJUST))+' # Target Location.'
  e
  opnn; e 'Note that we will simply copy missing files from <- -> to.'
  cliner
  @files_from_start_directory  = Dir["#{from?}*"].sort.select {|entry| File.file?(entry) }
  @files_from_target_directory = Dir["#{target?}*"].sort.select {|entry| File.file?(entry) }
  reject_non_videos
end
menu(i) click to toggle source
#

menu (menu tag)

This is the commandline-menu interface for this class.

#
obtain_target_directory() click to toggle source
#

obtain_target_directory

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 148
def obtain_target_directory
  if Object.const_defined? :Mountpoints
    mounted_devices = Mountpoints[].map {|entry| entry + SUBDIR }
    mounted_devices.select! {|entry| Dir.exist? entry }
    result = mounted_devices.first # Should be fine.
  else
    result = DEFAULT_TARGET_DIRECTORY
  end
  result
end
reject_non_videos() click to toggle source
#

reject_non_videos

Here we will get rid of .srt files.

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 178
def reject_non_videos
  @files_from_start_directory.reject!  {|entry| entry.include? '.srt'}
  @files_from_target_directory.reject! {|entry| entry.include? '.srt'}
end
report_finished_tasks() click to toggle source
#

report_finished_tasks

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 222
def report_finished_tasks
  if @array_copied_these_files.empty?
    opnn; e 'No file was copied. This could mean that everything is '
    opnn; e 'already existing on the target directory. '+
             steelblue('\o/')
  else
    opnn; e 'Finished!'
    e
    opnn; e 'The following files were copied:'
    e
    @array_copied_these_files.sort.each {|file|
      e "  #{sfile(File.basename(file))}"
    }
    e
  end
end
reset() click to toggle source
#

reset (reset tag)

#
Calls superclass method MultimediaParadise::Base#reset
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 70
def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @array_copied_these_files
  # ======================================================================= #
  @array_copied_these_files = []
end
run() click to toggle source
#

run (run tag)

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 274
def run
  get_available_video_files
  compare_the_two_directories
  report_finished_tasks
end
set_start_directory(i = return_pwd) click to toggle source
#

set_start_directory

Our starting directory.

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 87
def set_start_directory(i = return_pwd) # This comes before set_target_directory
  i << '/' unless i.end_with? '/'
  @start_directory = rds(i)
end
set_target_directory( i = obtain_target_directory ) click to toggle source
#

set_target_directory

We will copy the video files to this target directory.

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 97
def set_target_directory(
    i = obtain_target_directory
  )
  i = i.first if i.is_a? Array
  i = DEFAULT_TARGET_DIRECTORY if i.nil?
  i = rds(i)
  # ======================================================================= #
  # We must find an alternative if the current directory is the
  # same as the start-directory.
  # ======================================================================= #
  i = find_alternative_to(@start_directory) if i == @start_directory
  @target_directory = rds(i)
  if i.start_with? '--'
    menu(i)
  end
end
show_help(optional_argument = :do_nothing) click to toggle source
#

show_help (help tag)

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 242
def show_help(optional_argument = :do_nothing)
  e
  e 'This class can copy video files from another directory to the'
  e 'target directory.'
  e
  case optional_argument
  when :then_exit
    exit
  end
end
target?() click to toggle source
#

target?

#
# File lib/multimedia_paradise/video/copy_missing_video_files.rb, line 162
def target?
  @target_directory
end