Na stronie Railscasts znajduje się masa screencastów o railsach, trochę irytowało mnie osobne ściąganie plików, sprawdzanie które już mam a których nie, wiec napisałem kawałek kodu. Skrypt pakujemy do katalogu w którym chcemy gromadzić filmiki, odpalamy, dostajemy listę dostępnych na stronie screencastow (pobrane są oznaczane na zielone, niepobrane na czerwono), następnie wpisujemy oddzielone spacjami numery screencastow do pobrania. Może komuś przypadkiem się przyda :)
#!/usr/bin/ruby
require 'open-uri'
require 'rss/2.0'
module RSS
class Rss
class Channel
class Item
def file_name
@file_name ||= self.enclosure.url.split(/\//).last
end
def file_number
file_name.split(/_/).first.to_i
end
def file_size
self.enclosure.length.to_f / 1024 / 1024
end
end
end
end
end
rss_content = ""
open("http://feeds.feedburner.com/railscasts") do |f|
rss_content = f.read
end
rss = RSS::Parser.parse(rss_content,false)
rss.items.reverse.each do |item|
if File.exists?(item.file_name)
printf "\e[32m%s (%.2f MB)\e[0m\n", item.title, item.file_size
else
printf "\e[31m%s (%.2f MB)\e[0m\n", item.title, item.file_size
end
end
puts "Podaj numery screencastow do pobrania"
numbers = STDIN.gets
numbers.split(' ').each do |n|
item = rss.items.detect{|i| i.file_number == n.to_i}
unless item.nil? or File.exists?(item.file_name)
system "wget -c #{item.enclosure.url}"
end
end