feedutils 0.3.0 → 0.3.1
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/feedutils.rb +1 -0
- data/lib/feedutils/builder/atom.rb +18 -12
- data/lib/feedutils/builder/rss.rb +19 -6
- data/lib/feedutils/version.rb +1 -1
- data/test/test_rss.rb +5 -0
- metadata +8 -8
data/lib/feedutils.rb
CHANGED
@@ -29,7 +29,10 @@ class AtomFeedBuilder
|
|
29
29
|
if atom_feed.updated
|
30
30
|
# NOTE: empty updated.content e.g. used by google groups feed
|
31
31
|
# will return nil : NilClass
|
32
|
-
|
32
|
+
|
33
|
+
## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib)
|
34
|
+
|
35
|
+
feed.updated = atom_feed.updated.content.nil? ? nil : atom_feed.updated.content.to_datetime # .utc.strftime( "%Y-%m-%d %H:%M" )
|
33
36
|
logger.debug " atom | updated.content >#{atom_feed.updated.content}< : #{atom_feed.updated.content.class.name}"
|
34
37
|
end
|
35
38
|
|
@@ -65,7 +68,9 @@ class AtomFeedBuilder
|
|
65
68
|
|
66
69
|
|
67
70
|
if atom_item.updated
|
68
|
-
|
71
|
+
## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib)
|
72
|
+
|
73
|
+
item.updated = atom_item.updated.content.nil? ? nil : atom_item.updated.content.to_datetime # .utc.strftime( "%Y-%m-%d %H:%M" )
|
69
74
|
|
70
75
|
## change time to utc if present? why? why not?
|
71
76
|
|
@@ -73,7 +78,9 @@ class AtomFeedBuilder
|
|
73
78
|
end
|
74
79
|
|
75
80
|
if atom_item.published
|
76
|
-
|
81
|
+
## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib)
|
82
|
+
|
83
|
+
item.published = atom_item.published.content.nil? ? nil : atom_item.published.content.to_datetime # .utc.strftime( "%Y-%m-%d %H:%M" )
|
77
84
|
logger.debug " atom | item.published.content >#{atom_item.published.content}< : #{atom_item.published.content.class.name}"
|
78
85
|
end
|
79
86
|
|
@@ -97,17 +104,16 @@ class AtomFeedBuilder
|
|
97
104
|
|
98
105
|
if atom_item.summary
|
99
106
|
item.summary = atom_item.summary.content
|
100
|
-
else
|
101
|
-
if atom_item.content
|
102
|
-
text = atom_item.content.content
|
103
|
-
## strip all html tags
|
104
|
-
text = text.gsub( /<[^>]+>/, '' )
|
105
|
-
text = text[ 0..400 ] # get first 400 chars
|
106
|
-
## todo: check for length if > 400 add ... at the end???
|
107
|
-
item.summary = text
|
108
|
-
end
|
109
107
|
end
|
110
108
|
|
109
|
+
# let client deal w/ missing summary - move to attic - delete
|
110
|
+
# text = atom_item.content.content
|
111
|
+
# ## strip all html tags
|
112
|
+
# text = text.gsub( /<[^>]+>/, '' )
|
113
|
+
# text = text[ 0..400 ] # get first 400 chars
|
114
|
+
# ## todo: check for length if > 400 add ... at the end???
|
115
|
+
# item.summary = text
|
116
|
+
|
111
117
|
item
|
112
118
|
end # method build_feed_item
|
113
119
|
|
@@ -31,14 +31,18 @@ class RssFeedBuilder
|
|
31
31
|
feed.url = rss_feed.channel.link # required
|
32
32
|
feed.summary = rss_feed.channel.description # required
|
33
33
|
|
34
|
+
logger.debug " rss | channel.description: >#{rss_feed.channel.description}< : #{rss_feed.channel.description.class.name}"
|
35
|
+
|
34
36
|
# NOTE:
|
35
37
|
# All date-times in RSS conform
|
36
38
|
# to the Date and Time Specification of RFC 822
|
37
39
|
# e.g. Sun, 19 May 2012 15:21:36 GMT or
|
38
40
|
# Sat, 07 Sep 2013 00:00:01 GMT
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
+
## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib)
|
43
|
+
|
44
|
+
feed.built = rss_feed.channel.lastBuildDate.nil? ? nil : rss_feed.channel.lastBuildDate.to_datetime # optional
|
45
|
+
feed.published = rss_feed.channel.pubDate.nil? ? nil : rss_feed.channel.pubDate.to_datetime # optional
|
42
46
|
|
43
47
|
logger.debug " rss | channel.lastBuildDate: >#{rss_feed.channel.lastBuildDate}< : #{rss_feed.channel.lastBuildDate.class.name}"
|
44
48
|
logger.debug " rss | channel.pubDate: >#{rss_feed.channel.pubDate}< : #{rss_feed.channel.pubDate.class.name}"
|
@@ -85,7 +89,9 @@ class RssFeedBuilder
|
|
85
89
|
# e.g. Sun, 19 May 2012 15:21:36 GMT or
|
86
90
|
# Sat, 07 Sep 2013 00:00:01 GMT
|
87
91
|
|
88
|
-
|
92
|
+
## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib)
|
93
|
+
|
94
|
+
item.published = rss_item.pubDate.nil? ? nil : rss_item.pubDate.to_datetime # .utc.strftime( "%Y-%m-%d %H:%M" )
|
89
95
|
|
90
96
|
logger.debug " rss | item.pubDate: >#{rss_item.pubDate}< : #{rss_item.pubDate.class.name}"
|
91
97
|
|
@@ -99,9 +105,16 @@ class RssFeedBuilder
|
|
99
105
|
# end
|
100
106
|
|
101
107
|
## fix/todo: check if rss_item.guid present? !!!!
|
102
|
-
|
103
|
-
|
104
|
-
|
108
|
+
##
|
109
|
+
## might be the case e.g. check lambda-the-ultimate.org, for example
|
110
|
+
|
111
|
+
if rss_item.guid && rss_item.guid.content
|
112
|
+
item.guid = rss_item.guid.content
|
113
|
+
logger.debug " rss | item.guid.content: >#{rss_item.guid.content}< : #{rss_item.guid.content.class.name}"
|
114
|
+
else
|
115
|
+
item.guid = rss_item.link
|
116
|
+
logger.warn " rss | item.guid.content missing !!!! - using link for guid"
|
117
|
+
end
|
105
118
|
|
106
119
|
### todo: add support or authors (incl. dc:creator)
|
107
120
|
## <dc:creator>Dhaivat Pandya</dc:creator>
|
data/lib/feedutils/version.rb
CHANGED
data/test/test_rss.rb
CHANGED
@@ -19,5 +19,10 @@ class TestRss < MiniTest::Unit::TestCase
|
|
19
19
|
assert( feed.format == 'rss 2.0' )
|
20
20
|
end
|
21
21
|
|
22
|
+
def test_lambdatheultimate
|
23
|
+
## check - has no item.guid - will use item.link for guid
|
24
|
+
feed = parse_feed( 'http://lambda-the-ultimate.org/rss.xml' )
|
25
|
+
assert( feed.format == 'rss 2.0' )
|
26
|
+
end
|
22
27
|
|
23
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logutils
|
16
|
-
requirement: &
|
16
|
+
requirement: &74300430 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *74300430
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &74300030 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.10'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *74300030
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe
|
38
|
-
requirement: &
|
38
|
+
requirement: &74299400 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '3.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *74299400
|
47
47
|
description: feedutils - web feed parser and normalizer (RSS 2.0, Atom, etc.)
|
48
48
|
email: webslideshow@googlegroups.com
|
49
49
|
executables: []
|