Module: Rss::Motor

Defined in:
lib/rss-motor.rb,
lib/rss-motor/version.rb

Constant Summary collapse

VERSION =
"0.0.7"

Class Method Summary collapse

Class Method Details

.item_filter(item, filter) ⇒ Object



58
59
60
61
# File 'lib/rss-motor.rb', line 58

def self.item_filter(item, filter)
  return false if item.empty? || filter.nil? || filter.strip.empty?
  return !item.values.select{|v| v.match(/#{filter}/i)}.empty?
end

.rss_grep(rss_urls, filters) ⇒ Object

Returned Array of Hashes, where the keys are given filters

Example

Rss::Motor.rss_grep 'http://example.com', ['item1', 'item2', 'item3']
[
   {'item1' => [{'title' => '....'}, {'title' => '....'}, ...]},
   {'item2' => [{'title' => '....'}, {'title' => '....'}, ...]},
   {'item3' => [{'title' => '....'}, {'title' => '....'}, ...]}
]


28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rss-motor.rb', line 28

def self.rss_grep(rss_urls, filters)
  rss_items = filters.flatten.map{|k| {k => []} }
  [rss_urls].flatten.each do |rss_url|
    rss = rss_items rss_url
    rss.each do |item|
      [filters].flatten.each do |filter|
        rss_items.detect{|a| a.key?(filter)}[filter].push(item) if item_filter(item, filter)
      end
    end
  end
  rss_items
end


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/rss-motor.rb', line 41

def self.rss_grep_link(rss_urls, filters)
  rss_items = filters.flatten.map{|k| {k => []} }
  [rss_urls].flatten.each do |rss_url|
    rss = rss_items rss_url
    rss.each do |item|
      link_body = Rss::WWW.http_requester item['link']
      [filters].flatten.each do |filter|
        rss_items.detect{|a| a.key?(filter)}[filter].push(item) if
          item_filter(item, filter) or
          link_body.match(/#{filter}/)
      end
    end
  end
  rss_items
end

.rss_items(rss_url) ⇒ Object



12
13
14
15
16
# File 'lib/rss-motor.rb', line 12

def self.rss_items(rss_url)
  rss_data = Rss::WWW.rss_channel rss_url
  return [{}] if rss_data.empty?
  Rss::Proc.rss_hashr rss_data.join
end