批量下载railscasts上视频的ruby脚本

阅读更多

Railscasts 上面的视频已经出到117集了,很早就想把它们下载下来,但是一直苦于网速太慢。现在网络有了点儿改进,趁机写个ruby脚本把所有视频全部搞定。基本想法就是解析它的RSS,找到视频的地址,然后下载,简单得很。

 

require 'net/http'
require 'rss/2.0'

content = ''
open('http://feeds.feedburner.com/railscasts') { |s| content = s.read }
rss = RSS::Parser.parse(content, false)

casts = rss.channel.items.map { |item| item.enclosure.url.sub(/http:\/\/media\.railscasts\.com/, '') }

Net::HTTP.start('media.railscasts.com') do |http|
  casts.each do |cast|
    puts "start downloading #{cast}"
    response = http.get(cast)
    File.open("d:/video/railscasts/#{cast.sub(/\/videos\//, '')}", 'wb') { |file| file.write(response.body) }
    puts "finish downloading #{cast}"
  end
end

 当然了,我这个只是简单的把所有视频都下载下来,因为我之前也没有单独下载过。如果以后想只下载新发布的视频,只要稍微修改一下脚本,控制一下cast的个数就好了。

你可能感兴趣的:(脚本,Ruby,.net)