require 'nokogiri'
require 'net/http'
require 'uri'
url = 'http://oioioi.ru/mp3/skinhead/moonstomp.html'
regex = /\Ahttp:\/\/www\.skinhead\.ru\/mp3\/(.*\.mp3)\z/i
folder = File.dirname(__FILE__)+'/oioioi/'
Dir.mkdir(folder) unless Dir.exists?(folder)
def open(url)
Net::HTTP.get(URI.parse(URI.escape(url)))
end
def save(url, path)
if File.exists?(path)
puts "Already saved: #{url}"
return
end
puts "Downloading: #{url}"
dir = File.dirname(path)
Dir.mkdir(dir) unless Dir.exists?(dir)
File.open(path, 'wb') do |file|
file << open(url)
end
puts "Saved in: #{path}"
end
page = Nokogiri::HTML(open(url))
links = page.css('a')
hrefs = links.map { |l| l['href'] }.compact
mp3_hrefs = hrefs.select { |url| url.match regex }
mp3_hrefs.each do |href|
path = href.match(regex)[1]
save(href, folder+path)
end