Sha256: 976316e6727dee156f293aea3631320601a15c5f231c74366dd5e6672be86836

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 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(token)
    listener = Listen.to(ENV['VIDEOS_DIR'], only: /\.#{Regexp.escape ENV['VIDEO_EXTENTION']}$/) do |modified_filepaths, _, removed_filepaths|
      # handle addded files
      unless modified_filepaths.empty?
        client = MotionVj::Client.new(token)
        motion_lsof = `lsof -c #{ENV['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.1.0 lib/motion_vj.rb