polyrex-feed-reader 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/polyrex-feed-reader.rb +35 -23
- metadata +2 -2
data/lib/polyrex-feed-reader.rb
CHANGED
@@ -31,7 +31,7 @@ class PolyrexFeedReader
|
|
31
31
|
if File.exists? @file_path then
|
32
32
|
@feeds = Polyrex.new @file_path
|
33
33
|
else
|
34
|
-
schema = 'feeds/column[id]/feed[rss_url,title,important,occurrence,recent,url, xhtml, xhtml_mobile, last_modified]/item[title,link,description]'
|
34
|
+
schema = 'feeds/column[id]/feed[rss_url,title,important,occurrence,recent,url, xhtml, xhtml_mobile, last_modified, last_accessed]/item[title,link,description]'
|
35
35
|
@feeds = Polyrex.new schema
|
36
36
|
@feeds.save @file_path
|
37
37
|
end
|
@@ -44,27 +44,7 @@ class PolyrexFeedReader
|
|
44
44
|
def read()
|
45
45
|
@feeds.records.each do |col|
|
46
46
|
col.records.each do |feed|
|
47
|
-
|
48
|
-
if scheduled? feed.occurrence and recency(feed.last_modified) != 'hot' then
|
49
|
-
|
50
|
-
rss_doc = Document.new(open(feed.rss_url, 'UserAgent' => 'PolyrexFeedReader').read)
|
51
|
-
rss_items = XPath.match(rss_doc.root, '//item')[0..2]
|
52
|
-
|
53
|
-
if feed.records.length <= 0 then
|
54
|
-
# create the items
|
55
|
-
k = 3 - feed.records.length
|
56
|
-
k.times {|x| feed.create.item}
|
57
|
-
|
58
|
-
fetch_items(rss_items, feed)
|
59
|
-
|
60
|
-
else
|
61
|
-
if REXML::Text::unnormalize(feed.item[0].title) != rss_items[0].text('title').to_s then
|
62
|
-
fetch_items(rss_items, feed)
|
63
|
-
else
|
64
|
-
feed.recent = recency(feed.last_modified)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
47
|
+
fetch_feed(item)
|
68
48
|
end
|
69
49
|
col.records.sort_by!{|x| -Time.parse(x.text('summary/last_modified').to_s).to_i}
|
70
50
|
|
@@ -109,8 +89,39 @@ class PolyrexFeedReader
|
|
109
89
|
|
110
90
|
buffer
|
111
91
|
end
|
92
|
+
|
93
|
+
def read_feed(feed_name)
|
94
|
+
feed = @feeds.find_by_feed_title(feed_name)
|
95
|
+
fetch_feed(feed)
|
96
|
+
@feeds.save @file_path
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def fetch_feed(feed)
|
102
|
+
if scheduled? feed.occurrence and recency(feed.last_accessed) != 'hot' then
|
112
103
|
|
113
|
-
|
104
|
+
rss_doc = Document.new(open(feed.rss_url, 'UserAgent' => 'PolyrexFeedReader').read)
|
105
|
+
rss_items = XPath.match(rss_doc.root, '//item')[0..2]
|
106
|
+
|
107
|
+
if feed.records.length <= 0 then
|
108
|
+
# create the items
|
109
|
+
k = 3 - feed.records.length
|
110
|
+
k.times {|x| feed.create.item}
|
111
|
+
|
112
|
+
fetch_items(rss_items, feed)
|
113
|
+
|
114
|
+
else
|
115
|
+
|
116
|
+
if REXML::Text::unnormalize(feed.item[0].title) != rss_items[0].text('title').to_s then
|
117
|
+
|
118
|
+
fetch_items(rss_items, feed)
|
119
|
+
else
|
120
|
+
feed.recent = recency(feed.last_modified)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
114
125
|
|
115
126
|
def recency(time)
|
116
127
|
case (Time.now - Time.parse(time))
|
@@ -157,3 +168,4 @@ class PolyrexFeedReader
|
|
157
168
|
end
|
158
169
|
|
159
170
|
end
|
171
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polyrex-feed-reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors: []
|
7
7
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-06-
|
12
|
+
date: 2010-06-15 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|