class PicasaDownloader::AlbumPersister

Public Class Methods

new(client, album, download_directory_root) click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 3
def initialize(client, album, download_directory_root)
  @client = client
  @album = album
  @download_directory_root = download_directory_root
end

Public Instance Methods

download() click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 9
def download
  FileUtils.mkdir_p(get_temp_album_dir)
  photos = @client.list_photos(@album.id)
  download_and_persist_to_disk(photos)
  move_to_final_dir(photos)
end

Private Instance Methods

download_and_persist_to_disk(photos) click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 18
def download_and_persist_to_disk(photos)
  def persist_to_disk(photo, photo_data)
    File.open(get_temp_album_dir + photo.name, 'wb') { |file|
      file.write(photo_data)
      FileUtils.touch(file.path, :mtime => photo.created_date)
    }
  end
  photos.each { |photo|
    photo_data = @client.download_photo(photo)
    if photo_data
      persist_to_disk(photo, photo_data)
    end
  }
end
get_final_album_dir_root(year) click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 39
def get_final_album_dir_root(year)
  @download_directory_root + "/#{year}"
end
get_temp_album_dir() click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 43
def get_temp_album_dir
  @download_directory_root + "/.temp/#{@album.title}/"
end
move_to_final_dir(photos) click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 33
def move_to_final_dir(photos)
  final_dir = get_final_album_dir_root(PhotoHelper.median_year(photos))
  FileUtils.mkdir_p(final_dir)
  FileUtils.mv(get_temp_album_dir, final_dir)
end
persist_to_disk(photo, photo_data) click to toggle source
# File lib/picasa-downloader/album_persister.rb, line 19
def persist_to_disk(photo, photo_data)
  File.open(get_temp_album_dir + photo.name, 'wb') { |file|
    file.write(photo_data)
    FileUtils.touch(file.path, :mtime => photo.created_date)
  }
end