class Ssdl::Slide

Attributes

count[R]
name[R]
page_urls[R]

Public Class Methods

new(slide_url) click to toggle source
# File lib/ssdl/slide.rb, line 13
def initialize(slide_url)
  logger.info("Open Url: #{slide_url}")
  html = Nokogiri::HTML.parse(open(slide_url))

  xml_url = extract_xml_url(html)
  @name = extract_name(xml_url)
  @count = Nokogiri::XML.parse(open(xml_url)).xpath('/Show/Slide').count

  raise 'slide pages not exists' if count.zero?

  @page_urls = (1..count).map { |i| "http://image.slidesharecdn.com/#{name}/95/slide-#{i}-1024.jpg" }
end

Public Instance Methods

logger() click to toggle source
# File lib/ssdl/slide.rb, line 9
def logger
  @logger ||= Logger.new(STDOUT)
end
pages() click to toggle source
# File lib/ssdl/slide.rb, line 26
def pages
  @pages ||= page_urls.map { |url|
    logger.info("Download Image: #{url}")
    begin
      open(url)
    rescue OpenURI::HTTPError
      logger.warn("Download Error: #{url}")
      nil
    end
  }.compact
end

Private Instance Methods

extract_name(xml_url) click to toggle source
# File lib/ssdl/slide.rb, line 45
def extract_name(xml_url)
  xml_url.match(%r{.+cdn\.slidesharecdn\.com/(.+)\.xml}).captures.first
end
extract_xml_url(html) click to toggle source
# File lib/ssdl/slide.rb, line 40
def extract_xml_url(html)
  thumbnail_url = html.xpath('/html/head/meta[@name="thumbnail"]').first.attributes['content'].value
  thumbnail_url.gsub(%r{(^.+/)ss_thumbnails/(.+)-thumbnail.jpg\?(.+$)}, '\1\2.xml')
end