class FeaturedImage::Finder

Public Class Methods

all(url, *args) click to toggle source

Find all featured images that are matching criteria from web page. And return them as Array of Magick::ImageList. If the featured image does not exist return empty Array.

# File lib/featuredimage/finder.rb, line 31
def self.all(url, *args)
        finder = Finder.new
        cond = Criteria.new(*args)
        finder.all(url, cond)
end
biggest(url, *args) click to toggle source

Find the biggest featured image that is matching criteria from web page. And return it as Magick::ImageList. If the featured image does not exist return nil.

# File lib/featuredimage/finder.rb, line 22
def self.biggest(url, *args)
        finder = Finder.new
        cond = Criteria.new(*args)
        finder.biggest(url, cond)
end
first(url, *args) click to toggle source

Find first featured image that is matching criteria from web page. And return it as Magick::ImageList. If the featured image does not exist return nil.

# File lib/featuredimage/finder.rb, line 13
def self.first(url, *args)
        finder = Finder.new
        cond = Criteria.new(*args)
        finder.first(url, cond)
end

Public Instance Methods

all(url, cond) click to toggle source
# File lib/featuredimage/finder.rb, line 89
def all(url, cond)
        agent = Mechanize.new
        page = agent.get(url)

        max_size = Size.new(0, 0)
        max_imagelist = nil

        results = []
        page.search("img").each{|elm|
                src = elm.attributes["src"].value
                begin
                        data = download_image(agent, src)

                        imagelist = Magick::ImageList.new
                        imagelist.from_blob(data)

                        size = Size.new(imagelist.columns, imagelist.rows)
                        results << imagelist if featured_image?(cond, size)
                rescue Mechanize::ResponseCodeError
                        # ignore Mechanize::ResponseCodeError
                end
        }
        results
end
biggest(url, cond) click to toggle source
# File lib/featuredimage/finder.rb, line 59
def biggest(url, cond)
        agent = Mechanize.new
        page = agent.get(url)

        max_size = Size.new(0, 0)
        max_imagelist = nil

        page.search("img").each{|elm|
                src = elm.attributes["src"].value
                begin
                        data = download_image(agent, src)

                        imagelist = Magick::ImageList.new
                        imagelist.from_blob(data)

                        size = Size.new(imagelist.columns, imagelist.rows)
                        if featured_image?(cond, size)
                                if max_size < size
                                        max_size = size
                                        max_imagelist = imagelist
                                end
                        end
                rescue Mechanize::ResponseCodeError
                        # ignore Mechanize::ResponseCodeError
                end
        }

        max_imagelist
end
first(url, cond) click to toggle source
# File lib/featuredimage/finder.rb, line 37
def first(url, cond)
        agent = Mechanize.new
        page = agent.get(url)
        page.search("img").each{|elm|
                src = elm.attributes["src"].value
                begin
                        data = download_image(agent, src)

                        imagelist = Magick::ImageList.new
                        imagelist.from_blob(data)

                        size = Size.new(imagelist.columns, imagelist.rows)
                        if featured_image?(cond, size)
                                return imagelist
                        end
                rescue Mechanize::ResponseCodeError
                        # ignore Mechanize::ResponseCodeError
                end
        }
        nil
end

Private Instance Methods

download_image(agent, src) click to toggle source
# File lib/featuredimage/finder.rb, line 115
def download_image(agent, src)
        agent.get(src).body
end