Class: Knj::Degulesider

Inherits:
Object show all
Defined in:
lib/knj/degulesider.rb

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Degulesider

Returns a new instance of Degulesider.



2
3
4
5
6
7
# File 'lib/knj/degulesider.rb', line 2

def initialize(args = {})
  @args = args
  @http = Knj::Http.new(
    "host" => "www.degulesider.dk"
  )
end

Instance Method Details

#search(sargs) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/knj/degulesider.rb', line 9

def search(sargs)
  url = "/search/#{Php4r.urlencode(sargs[:where])}/-/1/"
  
  html = @http.get(url)
  ret = []
  
  tbody_match = html["data"].match(/<tbody class='resultBody([\s\S]+?)<\/tbody>/)
  tbody_match[1].scan(/<tr id='res(\d+)'([\s\S]+?)<\/tr>/) do |match|
    res = {}
    
    if title_match = match[1].match(/<h2><a\s+class="fn".*>(.+)<\/a><\/h2>/)
      res[:name] = title_match[1]
    end
    
    if phone_match = match[1].match(/<div class="phones"><ul class="linkList"><li>(Mob.|)\s*([\d\s]+)<\/li><\/ul><\/div>/)
      if phone_match[1] == "Mob."
        res[:mobile] = phone_match[2].gsub(/\s+/, "")
      else
        raise "No such phone-mode: #{phone_match[1]}"
      end
    end
    
    if city_match = match[1].match(/'locality'>(.+)<\/span>/)
      res[:city] = city_match[1]
    end
    
    if category_match = match[1].match(/class='categoryLink'>(.+)<\/a>/)
      res[:category] = category_match[1]
    end
    
    ret << res
  end
  
  return ret
end