#!/usr/bin/env ruby

require 'fileutils'
require 'tempfile'
require 'rss'
require 'uri'
require 'net/http'

IMAGE_DIR = File.expand_path '~/pictures/nasa-iotd'
FEED_URL = 'http://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss'

CURRENT_FILE = File.join(IMAGE_DIR, 'current.jpg')
PREVIOUS_FILE = File.join(IMAGE_DIR, 'previous.jpg')
WALLPAPER_FILE = File.join(IMAGE_DIR, 'wallpaper.jpg')

def download url, file
  File.open(file, 'wb') { |f| f.write Net::HTTP.get(URI(url)) }
  `convert #{file} -resize 1920x1080 -gravity center -background black -extent 1920x1080 #{file}`
end

FileUtils.mkdir_p(IMAGE_DIR) unless File.directory?(IMAGE_DIR)

feed = RSS::Parser.parse FEED_URL, false
today = feed.items.first.enclosure.url.sub('http:', 'https:')

new = Tempfile.new('nasa-iotd').path

download today, new

unless File.exists?(CURRENT_FILE) && FileUtils.cmp(new, CURRENT_FILE)
  FileUtils.mv CURRENT_FILE, PREVIOUS_FILE if File.exist?(CURRENT_FILE)
  FileUtils.mv new, CURRENT_FILE
end

download feed.items[1].enclosure.url.sub('http:', 'https:'), PREVIOUS_FILE unless File.exist?(PREVIOUS_FILE)

`convert #{CURRENT_FILE} #{PREVIOUS_FILE} +append #{WALLPAPER_FILE}`
`feh --bg-tile #{WALLPAPER_FILE}`