以前作ったSlideShareの保存スクリプトを改良した
Prawn使ってたので、どうしてもA4サイズになっちゃって困ってたので、JPEGをそのままPDFにすることにした
#!/usr/bin/env ruby # require 'rmagick' require 'mechanize' require 'open-uri' require 'pry' url = ARGV.shift m = Mechanize.new m.user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36" target_size = 'full' begin m.get url xpath = "//img[@class=\"slide_image\"]/@data-#{target_size}" # binding.pry list = m.page.search(xpath).map{|e| e.text() } f_name = m.page.title.to_s + '.pdf' imgs = Magick:: ImageList.new list.each{|image_url| sub_m = m.clone sub_m.get( image_url ) imgs.push( Magick::Image.from_blob( sub_m.page.body )[0] ) } imgs.write(f_name) rescue => e puts e if target_size == 'full' then target_size ='normal' retry end if target_size == 'normal' then target_size = 'small' retry end raise e end
使い方
スクリプトを保存して、URLを引数に起動するだけ。
./slideshare~download.rb http://www.slideshare.net/XXX/YYY
SlideShare を見てるだけです。
繰り返しになりますが、Mechanizeはブラウザです。
LTEの回線パケット上限が逼迫するので、仕方なくオフラインキャッシュを作りました。
SlideShareは通信無駄に多過ぎなんですよ!