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