#!/usr/bin/env ruby require 'rubygems' require 'open-uri' require 'nokogiri' require 'net/http' user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1" url = "http://en.wikipedia.org/wiki/The_Four_Seasons_%28Vivaldi%29" fourseasonspage = Nokogiri::HTML(open(url, "User-Agent" => user_agent)) @destdir = ENV['DESTDIR'] || 'vivaldi' FileUtils.mkdir_p(@destdir) unless File.exists?(@destdir) @uri = URI.parse(url) # Aquiring the Four Seasons puts "\e[1mGetting Files...\e[0m" puts fourseasonspage.css("div.medialist a").each do |ogg_link| url = "http://"+ @uri.host + ogg_link[:href] ogg_page = Nokogiri::HTML(open(url, "User-Agent" => user_agent)) ogg_page.css("div.fullMedia a.internal").each do |link| puts "Downloading: " + link[:href] filename = File.basename(link[:href]) uri = URI.parse(link[:href]) Net::HTTP.start(uri.host) do |http| resp = http.get(uri.path) open(File.join(@destdir, filename), "wb") do |file| file.write(resp.body) end end end if /File:/.match(ogg_link[:href]) end # Now comes cmd line file converting puts "\e[1mStarting conversion...\e[0m" puts `for file in #{@destdir}/*.ogg ; do \ echo > id3.tag; \ vorbiscomment -l -e $file |awk -F= '{print $1"=""'\''" $2 "'\''" }' > id3.tag ; \ source id3.tag; \ ogg123 -d wav -f - $file \ | lame -h -v -m s -b 192 --tt "$title" --tn "$tracknumber" --ta "$artist" --tg "$genre" --tc "$comment" --tl "$album" --id3v2-only - #{@destdir}/$(basename "$file" .ogg).mp3; \ done; rm id3.tag` puts "\e[1mAll done.\e[0m" puts "(You may wish to delete #{@destdir}/*.ogg)"