module MotionVj

Constants

VERSION

Public Class Methods

get_dropbox_token(app_key, app_secret) click to toggle source
# File lib/motion_vj.rb, line 10
def self.get_dropbox_token(app_key, app_secret)
  token = MotionVj::Client.get_token(app_key, app_secret)
  puts "Your Dropbox access token for this app is: #{ token }"
end
start(options) click to toggle source
# File lib/motion_vj.rb, line 15
def self.start(options)
  listener = Listen.to(options[:videos_dir], only: /\.#{ Regexp.escape options[:videos_extension] }$/) do |modified_filepaths, _, removed_filepaths|
    # handle addded files
    unless modified_filepaths.empty?
      client = MotionVj::Client.new(options[:db_app_token], options[:db_videos_dir])
      motion_lsof = `lsof -c #{ options[:motion_cmd] }`

      modified_filepaths.each do |filepath|
        file_basename = File.basename filepath

        if motion_lsof =~ /#{ Regexp.escape(file_basename) }/
          Logger.error "Added file still in use."
          next
        end

        # if not being updated && not already uploaded
        if !client.file_exist?(file_basename)
          begin
            if client.upload(filepath)
              FileUtils.rm_f(filepath)
              Logger.info "'#{ file_basename }' was uploaded."
            else
              Logger.error "Could not upload '#{ file_basename }'."
            end
          rescue => e
            Logger.error "Could not upload '#{ file_basename }'."
          end
        end
      end
    end

    # handle removed files
    removed_filepaths.each do |filepath|
      Logger.info "'#{ File.basename(filepath) }' deleted."
    end
  end
  listener.start
end