rss_timeline 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/rss_timeline.rb +47 -18
- metadata +7 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 639253db51c59a5e10d6a2303e5f02ec4cac55db
|
4
|
+
data.tar.gz: 24151e07742f8b43931bf2ef735d11dcc492b3ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3ada7acf96385bd7d4d693bce9d40bfa07b26107119649c4f9c36bda8149ec8b18427adfb4d07d359f080de05c23f53cfdcb53fa54a43737071ceaad799a8c9
|
7
|
+
data.tar.gz: 2b58f0f1387eaa709fc4ec345916e82818055053a0e436f70c4649d33ab0a2ca197e0946c391424dba05777d41647211850ecef6708985b5444629c670340e4c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/rss_timeline.rb
CHANGED
@@ -12,27 +12,32 @@ class RSStimeline
|
|
12
12
|
|
13
13
|
attr_accessor :rssfile
|
14
14
|
|
15
|
-
def initialize(feeds=[], rssfile: 'timeline.rss', xslt: nil
|
15
|
+
def initialize(feeds=[], rssfile: 'timeline.rss', xslt: nil,
|
16
|
+
filepath: '.', debug: false, target_filepath: nil)
|
16
17
|
|
17
|
-
|
18
|
+
@source_feeds, @debug, @rssfile, @newupdate = feeds, debug, rssfile, false
|
19
|
+
@target_filepath = target_filepath
|
18
20
|
|
19
|
-
|
21
|
+
puts 'inside initialize' if @debug
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
+
@filepath = File.join(filepath, 'rss_timeline')
|
24
|
+
@cache_filepath = File.join(@filepath, 'cache')
|
25
|
+
|
26
|
+
# create a cache directory if it doesn't already exist
|
27
|
+
FileUtils.mkdir_p @cache_filepath
|
23
28
|
|
24
29
|
if File.exists? rssfile then
|
25
|
-
@timeline =
|
26
|
-
else
|
27
|
-
|
30
|
+
@timeline =RSScreator.new rssfile
|
31
|
+
else
|
32
|
+
|
33
|
+
@timeline =RSScreator.new
|
28
34
|
self.title = 'My RSStimeline feed'
|
29
|
-
self.description = 'Generated using the RSStimeline gem'
|
35
|
+
self.description = 'Generated using the RSStimeline gem'
|
36
|
+
|
30
37
|
end
|
31
38
|
|
32
39
|
@timeline.xslt = xslt if xslt
|
33
|
-
puts '@timeline.xslt : ' + @timeline.xslt.inspect
|
34
|
-
@rssfile = rssfile
|
35
|
-
@newupdate = false
|
40
|
+
puts '@timeline.xslt : ' + @timeline.xslt.inspect if @debug
|
36
41
|
|
37
42
|
end
|
38
43
|
|
@@ -44,29 +49,46 @@ class RSStimeline
|
|
44
49
|
# check for each feed from the cache.
|
45
50
|
# if the feed is in the cache, compare the 2 to find any new items.
|
46
51
|
# New items should be added to the main timeline RSS feed
|
52
|
+
|
53
|
+
updated = false
|
47
54
|
|
48
55
|
feeds.each do |feed, rss|
|
49
56
|
|
50
|
-
rssfile = File.join(
|
57
|
+
rssfile = File.join(@cache_filepath, feed[6..-1].gsub(/\W+/,'').\
|
51
58
|
reverse.slice(0,40).reverse)
|
52
59
|
|
53
60
|
if File.exists? rssfile then
|
54
61
|
|
55
62
|
rss_cache = SimpleRSS.parse File.read(rssfile)
|
56
63
|
|
57
|
-
|
64
|
+
fresh, old = [rss.items, rss_cache.items].map do |feed|
|
65
|
+
feed.clone.each {|x| x.delete :guid }
|
66
|
+
end
|
67
|
+
|
68
|
+
new_items = fresh - old
|
69
|
+
|
70
|
+
new_rss_items = new_items.map do |x|
|
71
|
+
rss.items.find {|y| y[:title] == x[:title]}
|
72
|
+
end
|
73
|
+
|
58
74
|
new_rss_items.reverse.each {|item| add_new item}
|
59
|
-
|
75
|
+
|
76
|
+
if new_rss_items.any? then
|
77
|
+
puts 'new_rss_items: ' + new_rss_items.inspect if @debug
|
78
|
+
updated = true
|
79
|
+
File.write rssfile, rss.source
|
80
|
+
end
|
60
81
|
|
61
82
|
else
|
62
83
|
|
84
|
+
updated = true
|
63
85
|
add_new rss.items.first
|
64
86
|
File.write rssfile, rss.source
|
65
87
|
|
66
88
|
end
|
67
89
|
end
|
68
90
|
|
69
|
-
save()
|
91
|
+
save() if updated
|
70
92
|
|
71
93
|
end
|
72
94
|
|
@@ -110,6 +132,8 @@ class RSStimeline
|
|
110
132
|
|
111
133
|
def add_new(item)
|
112
134
|
|
135
|
+
puts 'inside add_new: ' + item.inspect if @debug
|
136
|
+
|
113
137
|
@timeline.add item: new_item(item), id: nil
|
114
138
|
@newupdate = true
|
115
139
|
on_new_item(item)
|
@@ -118,13 +142,17 @@ class RSStimeline
|
|
118
142
|
|
119
143
|
def new_item(x)
|
120
144
|
|
121
|
-
{
|
145
|
+
h = {
|
122
146
|
title: x[:title],
|
123
147
|
link: x[:link],
|
124
148
|
description: x[:description],
|
125
149
|
date: x[:date] || Time.now.strftime("%a, %d %b %Y %H:%M:%S %z")
|
126
150
|
}
|
127
151
|
|
152
|
+
puts 'inside new_item: ' + h.inspect if @debug
|
153
|
+
|
154
|
+
h
|
155
|
+
|
128
156
|
end
|
129
157
|
|
130
158
|
def save()
|
@@ -134,7 +162,8 @@ class RSStimeline
|
|
134
162
|
on_update()
|
135
163
|
@newupdate = false
|
136
164
|
|
137
|
-
@timeline.save @rssfile
|
165
|
+
@timeline.save File.join(@filepath, @rssfile)
|
166
|
+
@timeline.save File.join(@target_filepath, @rssfile) if @target_filepath
|
138
167
|
|
139
168
|
end
|
140
169
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rss_timeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
UtkkA/5alscVe1rFL0gDY+bBheYVtTWDEkNYn8lwqtRp0d/fWsXUFg5d5BvTCrF+
|
32
32
|
FZcCmMq+Tfz/tQ==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
34
|
+
date: 2018-02-03 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: simple-rss
|
@@ -59,20 +59,20 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0.
|
62
|
+
version: '0.3'
|
63
63
|
- - ">="
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
65
|
+
version: 0.3.11
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
68
|
version_requirements: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '0.
|
72
|
+
version: '0.3'
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.3.11
|
76
76
|
description:
|
77
77
|
email: james@jamesrobertson.eu
|
78
78
|
executables: []
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.6.
|
103
|
+
rubygems_version: 2.6.13
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: An RSS aggregator which generates an RSS file
|
metadata.gz.sig
CHANGED
Binary file
|