Advertisement
Guest User

Untitled

a guest
Jun 2nd, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.35 KB | None | 0 0
  1. require 'net/ftp'
  2. require 'active_support/time'
  3.  
  4. #settings
  5. delay = 30 #in minutes
  6. ftp_delay = 1 #in minutes
  7. ftp_server_address = 'ftp.example.com'
  8. ftp_user = 'example_user'
  9. ftp_password = 'example_password'
  10. ftp_directory = 'bk1'
  11. save_as = 'bk1_most_recent.jpg'
  12. ftp_passive = true
  13.  
  14. def grab_latest_image(ftp_server_address, ftp_user, ftp_password,
  15.                       ftp_passive, save_as, ftp_directory)
  16.   ftp = Net::FTP.new(ftp_server_address, ftp_user, ftp_password)
  17.   ftp.passive = ftp_passive
  18.   files = ftp.chdir(ftp_directory)
  19.   files = ftp.list('*.jpg')
  20.   filename_most_recent = files.last.match /([0-9._-]*.jpg)/
  21.   minutes_for_calc = filename_most_recent.to_s.match /_[0-9]{2}_([0-9]{2})/
  22.   ftp.getbinaryfile(filename_most_recent, save_as)
  23.   ftp.close
  24.   return minutes_for_calc[1]
  25. end
  26.  
  27. def calculate_delay(minutes_for_calc, ftp_delay, delay)
  28.   current_time = Time.now.min
  29.   wait_minutes = (minutes_for_calc.to_i + delay.to_i) - current_time.to_i
  30.   if wait_minutes < 0
  31.     wait_minutes *= -1
  32.   end
  33.   wait_minutes += ftp_delay
  34.   return wait_minutes.minutes
  35. end
  36.  
  37. loop do
  38.   minutes_for_calc = grab_latest_image(ftp_server_address, ftp_user,
  39.                                        ftp_password, ftp_passive, save_as, ftp_directory)
  40.  
  41.   calculated_delay = calculate_delay(minutes_for_calc, ftp_delay, delay)
  42.   sleep calculated_delay
  43. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement