それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

SlideShareを自動ブラウジングしてJPGからPDFを取出す。

以前作った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は通信無駄に多過ぎなんですよ!

関連資料

takuya-1st.hatenablog.jp