Class: FeaturedImage::Finder

Inherits:
Object
  • Object
show all
Defined in:
lib/featuredimage/finder.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all(url, *args) ⇒ Object

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.



27
28
29
30
31
# File 'lib/featuredimage/finder.rb', line 27

def self.all(url, *args)
  finder = Finder.new
  cond = Criteria.new(*args)
  finder.all(url, cond)
end

.biggest(url, *args) ⇒ Object

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.



18
19
20
21
22
# File 'lib/featuredimage/finder.rb', line 18

def self.biggest(url, *args)
  finder = Finder.new
  cond = Criteria.new(*args)
  finder.biggest(url, cond)
end

.first(url, *args) ⇒ Object

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.



9
10
11
12
13
# File 'lib/featuredimage/finder.rb', line 9

def self.first(url, *args)
  finder = Finder.new
  cond = Criteria.new(*args)
  finder.first(url, cond)
end

Instance Method Details

#all(url, cond) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/featuredimage/finder.rb', line 85

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) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/featuredimage/finder.rb', line 55

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) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/featuredimage/finder.rb', line 33

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