Sha256: 74be674627a4c7ce097eaf44f9ee3411a80ab2e325dba474ca563801d7d77e50

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

require 'motion_vj/client'
require 'motion_vj/logger'
require 'motion_vj/version'
require 'motion_vj/helpers'

require 'fileutils'
require 'listen'

module MotionVj
  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

  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
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
motion_vj-0.2.0 lib/motion_vj.rb