feedparser 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +1,21 @@
1
- # encoding: utf-8
2
-
3
- module FeedParser
4
-
5
- class Thumbnail
6
-
7
- attr_accessor :url
8
-
9
- ## note: uri is an alias for url
10
- alias :uri :url ## add atom alias for uri - why? why not?
11
- alias :uri= :url=
12
-
13
- def width?() @width.nil? == false; end
14
- attr_accessor :width
15
-
16
- def height?() @height.nil? == false; end
17
- attr_accessor :height # todo/check: use avatar_url ?? used by json feed -check if always a url
18
-
19
- end # class Thumbnail
20
-
21
- end # module FeedParser
1
+ # encoding: utf-8
2
+
3
+ module FeedParser
4
+
5
+ class Thumbnail
6
+
7
+ attr_accessor :url
8
+
9
+ ## note: uri is an alias for url
10
+ alias :uri :url ## add atom alias for uri - why? why not?
11
+ alias :uri= :url=
12
+
13
+ def width?() @width.nil? == false; end
14
+ attr_accessor :width
15
+
16
+ def height?() @height.nil? == false; end
17
+ attr_accessor :height # todo/check: use avatar_url ?? used by json feed -check if always a url
18
+
19
+ end # class Thumbnail
20
+
21
+ end # module FeedParser
@@ -4,7 +4,7 @@ module FeedParser
4
4
 
5
5
  MAJOR = 2
6
6
  MINOR = 2
7
- PATCH = 0
7
+ PATCH = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -8,7 +8,7 @@
8
8
 
9
9
  require 'helper'
10
10
 
11
- class TestAtomLive < MiniTest::Test
11
+ class TestAtomLive < Minitest::Test
12
12
 
13
13
  def test_rubyonrails
14
14
  feed = fetch_and_parse_feed( 'http://weblog.rubyonrails.org/feed/atom.xml' )
@@ -1,69 +1,69 @@
1
- ###
2
- # to run use
3
- # ruby -I ./lib -I ./test test/test_attachments_live.rb
4
- # or better
5
- # rake test
6
-
7
- require 'helper'
8
-
9
-
10
- ###
11
- ## note: needs to require oga gem (it's not required by default - it's a "soft" dependency)
12
-
13
- require 'oga'
14
-
15
-
16
-
17
- class TestAttachmentsLive < MiniTest::Test
18
-
19
- def test_atom_enclose
20
- feed = fetch_and_parse_feed( 'http://www.lse.ac.uk/assets/richmedia/webFeeds/publicLecturesAndEvents_AtomAllMediaTypesLatest100.xml' )
21
-
22
- assert_equal 'audio/mpeg', feed.items.first.attachment.type
23
- assert_equal 'audio/mpeg', feed.items.first.enclosure.type
24
-
25
- assert_equal true, feed.items.first.attachment?
26
- assert_equal true, feed.items.first.enclosure?
27
- end
28
-
29
- def test_atom_media
30
- feed = fetch_and_parse_feed( 'http://www.youtube.com/feeds/videos.xml?channel_id=UCZUT79WUUpZlZ-XMF7l4CFg' )
31
- assert_equal true, feed.items.first.attachment?
32
- assert feed.items.first.attachments.first.title
33
- assert feed.items.first.attachments.first.url
34
- assert feed.items.first.attachments.first.thumbnail
35
- assert_instance_of FeedParser::Thumbnail, feed.items.first.attachments.first.thumbnail
36
- assert feed.items.first.attachments.first.thumbnail.url
37
- assert_equal 480, feed.items.first.attachments.first.thumbnail.width.to_i
38
- assert_equal 360, feed.items.first.attachments.first.thumbnail.height.to_i
39
- assert feed.items.first.attachments.first.description
40
- end
41
-
42
- def test_rss_media
43
- # tests an example RSS file from https://creator.amazon.com/documentation/ac/mrss.html. Not that unlike the Atom example, it does
44
- # does not put everything under media:group
45
- testpath = File.join(File.expand_path(File.dirname(__FILE__)), 'media_rss_example.txt')
46
- feed_rss = File.read( testpath )
47
- feed = FeedParser::Parser.parse( feed_rss )
48
- assert_equal true, feed.items.first.attachment?
49
- assert feed.items.first.attachments.first.title
50
- assert feed.items.first.attachments.first.url
51
- assert feed.items.first.attachments.first.thumbnail
52
- assert_instance_of FeedParser::Thumbnail, feed.items.first.attachments.first.thumbnail
53
- assert feed.items.first.attachments.first.thumbnail.url
54
- assert_nil feed.items.first.attachments.first.thumbnail.width
55
- assert_nil feed.items.first.attachments.first.thumbnail.height
56
- assert feed.items.first.attachments.first.description
57
- end
58
-
59
- def test_rss_enclosure
60
- feed = fetch_and_parse_feed( 'http://www.radiofreesatan.com/category/featured/feed/' )
61
-
62
- assert_equal 'audio/mpeg', feed.items.first.attachment.type
63
- assert_equal 'audio/mpeg', feed.items.first.enclosure.type
64
-
65
- assert_equal true, feed.items.first.attachment?
66
- assert_equal true, feed.items.first.enclosure?
67
- end
68
-
69
- end
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_attachments_live.rb
4
+ # or better
5
+ # rake test
6
+
7
+ require 'helper'
8
+
9
+
10
+ ###
11
+ ## note: needs to require oga gem (it's not required by default - it's a "soft" dependency)
12
+
13
+ require 'oga'
14
+
15
+
16
+
17
+ class TestAttachmentsLive < Minitest::Test
18
+
19
+ def test_atom_enclose
20
+ feed = fetch_and_parse_feed( 'http://www.lse.ac.uk/assets/richmedia/webFeeds/publicLecturesAndEvents_AtomAllMediaTypesLatest100.xml' )
21
+
22
+ assert_equal 'audio/mpeg', feed.items.first.attachment.type
23
+ assert_equal 'audio/mpeg', feed.items.first.enclosure.type
24
+
25
+ assert_equal true, feed.items.first.attachment?
26
+ assert_equal true, feed.items.first.enclosure?
27
+ end
28
+
29
+ def test_atom_media
30
+ feed = fetch_and_parse_feed( 'http://www.youtube.com/feeds/videos.xml?channel_id=UCZUT79WUUpZlZ-XMF7l4CFg' )
31
+ assert_equal true, feed.items.first.attachment?
32
+ assert feed.items.first.attachments.first.title
33
+ assert feed.items.first.attachments.first.url
34
+ assert feed.items.first.attachments.first.thumbnail
35
+ assert_instance_of FeedParser::Thumbnail, feed.items.first.attachments.first.thumbnail
36
+ assert feed.items.first.attachments.first.thumbnail.url
37
+ assert_equal 480, feed.items.first.attachments.first.thumbnail.width.to_i
38
+ assert_equal 360, feed.items.first.attachments.first.thumbnail.height.to_i
39
+ assert feed.items.first.attachments.first.description
40
+ end
41
+
42
+ def test_rss_media
43
+ # tests an example RSS file from https://creator.amazon.com/documentation/ac/mrss.html. Not that unlike the Atom example, it does
44
+ # does not put everything under media:group
45
+ testpath = File.join(File.expand_path(File.dirname(__FILE__)), 'media_rss_example.txt')
46
+ feed_rss = File.read( testpath )
47
+ feed = FeedParser::Parser.parse( feed_rss )
48
+ assert_equal true, feed.items.first.attachment?
49
+ assert feed.items.first.attachments.first.title
50
+ assert feed.items.first.attachments.first.url
51
+ assert feed.items.first.attachments.first.thumbnail
52
+ assert_instance_of FeedParser::Thumbnail, feed.items.first.attachments.first.thumbnail
53
+ assert feed.items.first.attachments.first.thumbnail.url
54
+ assert_nil feed.items.first.attachments.first.thumbnail.width
55
+ assert_nil feed.items.first.attachments.first.thumbnail.height
56
+ assert feed.items.first.attachments.first.description
57
+ end
58
+
59
+ def test_rss_enclosure
60
+ feed = fetch_and_parse_feed( 'http://www.radiofreesatan.com/category/featured/feed/' )
61
+
62
+ assert_equal 'audio/mpeg', feed.items.first.attachment.type
63
+ assert_equal 'audio/mpeg', feed.items.first.enclosure.type
64
+
65
+ assert_equal true, feed.items.first.attachment?
66
+ assert_equal true, feed.items.first.enclosure?
67
+ end
68
+
69
+ end
data/test/test_dates.rb CHANGED
@@ -1,52 +1,52 @@
1
- ###
2
- # to run use
3
- # ruby -I ./lib -I ./test test/test_dates.rb
4
- # or better
5
- # rake test
6
-
7
- require 'helper'
8
-
9
-
10
- class TestDates < MiniTest::Test
11
-
12
- def test_iso8601 # used by atom, json feed
13
-
14
- recs = [
15
- [ '2017-05-20T19:23:06Z', DateTime.new(2017, 5,20,19,23, 6) ], # from daringfireball.json
16
- [ '2017-05-20T19:23:08Z', DateTime.new(2017, 5,20,19,23, 8) ],
17
- [ '2017-05-17T08:02:12-07:00', DateTime.new(2017, 5,17, 8, 2,12,'-7') ], # from jsonfeed.json
18
- [ '2017-05-18T21:08:49+00:00', DateTime.new(2017, 5,18,21, 8,49) ], # from byparker.json
19
- [ '2017-05-18T21:08:49.123+00:00', DateTime.new(2017, 5,18,21, 8,49.123) ], ### try with usec e.g. 49.124
20
- [ '2017-05-17T08:02:12.567-07:00', DateTime.new(2017, 5,17, 8, 2,12.567,'-7') ],
21
- ]
22
-
23
- recs.each do |rec|
24
- d = DateTime.iso8601( rec[0] )
25
- puts "class: #{d.class.name} - #{d.utc} (#{d.usec}) <= iso8601 #{rec[0]}"
26
- pp d
27
- assert_equal rec[1], d
28
- end
29
- end # test_iso8601
30
-
31
-
32
- def test_rfc822 # used by rss 2.0
33
-
34
- recs = [
35
- [ 'Sat, 17 Jan 2015 11:57:47 +0000', DateTime.new( 2015, 1,17,11,57,47) ], # from sitepoint.rss2
36
- [ 'Thu, 15 Jan 2015 15:00:56 +0000', DateTime.new( 2015, 1,15,15,00,56) ],
37
- [ 'Fri, 16 Jan 2015 17:33:47 +0100', DateTime.new( 2015, 1,16,17,33,47,'+1') ], # from rubyflow.rss2
38
- [ 'Fri, 16 Jan 2015 09:33:57 +0100', DateTime.new( 2015, 1,16, 9,33,57,'+1') ],
39
- [ 'Wed, 17 Dec 2014 12:30:48 +0000', DateTime.new( 2014,12,17,12,30,48) ], # from rubymine.rss2
40
- ]
41
-
42
- recs.each do |rec|
43
- d = DateTime.rfc822( rec[0] )
44
- puts "class: #{d.class.name} - #{d.utc} (#{d.usec}) <= rfc822 #{rec[0]}"
45
- pp d
46
- assert_equal rec[1], d
47
- end
48
-
49
- end # test_rfc822
50
-
51
-
52
- end # class TestDates
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_dates.rb
4
+ # or better
5
+ # rake test
6
+
7
+ require 'helper'
8
+
9
+
10
+ class TestDates < Minitest::Test
11
+
12
+ def test_iso8601 # used by atom, json feed
13
+
14
+ recs = [
15
+ [ '2017-05-20T19:23:06Z', DateTime.new(2017, 5,20,19,23, 6) ], # from daringfireball.json
16
+ [ '2017-05-20T19:23:08Z', DateTime.new(2017, 5,20,19,23, 8) ],
17
+ [ '2017-05-17T08:02:12-07:00', DateTime.new(2017, 5,17, 8, 2,12,'-7') ], # from jsonfeed.json
18
+ [ '2017-05-18T21:08:49+00:00', DateTime.new(2017, 5,18,21, 8,49) ], # from byparker.json
19
+ [ '2017-05-18T21:08:49.123+00:00', DateTime.new(2017, 5,18,21, 8,49.123) ], ### try with usec e.g. 49.124
20
+ [ '2017-05-17T08:02:12.567-07:00', DateTime.new(2017, 5,17, 8, 2,12.567,'-7') ],
21
+ ]
22
+
23
+ recs.each do |rec|
24
+ d = DateTime.iso8601( rec[0] )
25
+ puts "class: #{d.class.name} - #{d.utc} (#{d.usec}) <= iso8601 #{rec[0]}"
26
+ pp d
27
+ assert_equal rec[1], d
28
+ end
29
+ end # test_iso8601
30
+
31
+
32
+ def test_rfc822 # used by rss 2.0
33
+
34
+ recs = [
35
+ [ 'Sat, 17 Jan 2015 11:57:47 +0000', DateTime.new( 2015, 1,17,11,57,47) ], # from sitepoint.rss2
36
+ [ 'Thu, 15 Jan 2015 15:00:56 +0000', DateTime.new( 2015, 1,15,15,00,56) ],
37
+ [ 'Fri, 16 Jan 2015 17:33:47 +0100', DateTime.new( 2015, 1,16,17,33,47,'+1') ], # from rubyflow.rss2
38
+ [ 'Fri, 16 Jan 2015 09:33:57 +0100', DateTime.new( 2015, 1,16, 9,33,57,'+1') ],
39
+ [ 'Wed, 17 Dec 2014 12:30:48 +0000', DateTime.new( 2014,12,17,12,30,48) ], # from rubymine.rss2
40
+ ]
41
+
42
+ recs.each do |rec|
43
+ d = DateTime.rfc822( rec[0] )
44
+ puts "class: #{d.class.name} - #{d.utc} (#{d.usec}) <= rfc822 #{rec[0]}"
45
+ pp d
46
+ assert_equal rec[1], d
47
+ end
48
+
49
+ end # test_rfc822
50
+
51
+
52
+ end # class TestDates
@@ -1,52 +1,52 @@
1
- ###
2
- # to run use
3
- # ruby -I ./lib -I ./test test/test_microformats.rb
4
- # or better
5
- # rake test
6
-
7
-
8
- require 'helper'
9
-
10
-
11
- ###
12
- ## note: needs to require microformats gem (it's not required by default)
13
-
14
- require 'microformats'
15
-
16
-
17
-
18
- class TestMicroformats < MiniTest::Test
19
-
20
- def test_hentry
21
-
22
- text =<<HTML
23
- <article class="h-entry">
24
- <h1 class="p-name">Microformats are amazing</h1>
25
- <p>Published by
26
- <a class="p-author h-card" href="http://example.com">W. Developer</a>
27
- on <time class="dt-published" datetime="2013-06-13 12:00:00">13<sup>th</sup> June 2013</time>
28
-
29
- <p class="p-summary">In which I extoll the virtues of using microformats.</p>
30
-
31
- <div class="e-content">
32
- <p>Blah blah blah</p>
33
- </div>
34
- </article>
35
- HTML
36
-
37
- feed = FeedParser::Parser.parse( text )
38
-
39
- assert_equal 'html', feed.format
40
- assert_equal 1, feed.items.size
41
- assert_equal 1, feed.items[0].authors.size
42
- assert_equal '<p>Blah blah blah</p>', feed.items[0].content_html
43
- assert_equal 'Blah blah blah', feed.items[0].content_text
44
- assert_equal 'Microformats are amazing', feed.items[0].title
45
- assert_equal 'In which I extoll the virtues of using microformats.', feed.items[0].summary
46
- assert_equal DateTime.new( 2013, 6, 13, 12, 0, 0 ).utc, feed.items[0].published
47
-
48
- assert_equal 'W. Developer', feed.items[0].authors[0].name
49
- end
50
-
51
-
52
- end # class TestMicroformats
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_microformats.rb
4
+ # or better
5
+ # rake test
6
+
7
+
8
+ require 'helper'
9
+
10
+
11
+ ###
12
+ ## note: needs to require microformats gem (it's not required by default)
13
+
14
+ require 'microformats'
15
+
16
+
17
+
18
+ class TestMicroformats < Minitest::Test
19
+
20
+ def test_hentry
21
+
22
+ text =<<HTML
23
+ <article class="h-entry">
24
+ <h1 class="p-name">Microformats are amazing</h1>
25
+ <p>Published by
26
+ <a class="p-author h-card" href="http://example.com">W. Developer</a>
27
+ on <time class="dt-published" datetime="2013-06-13 12:00:00">13<sup>th</sup> June 2013</time>
28
+
29
+ <p class="p-summary">In which I extoll the virtues of using microformats.</p>
30
+
31
+ <div class="e-content">
32
+ <p>Blah blah blah</p>
33
+ </div>
34
+ </article>
35
+ HTML
36
+
37
+ feed = FeedParser::Parser.parse( text )
38
+
39
+ assert_equal 'html', feed.format
40
+ assert_equal 1, feed.items.size
41
+ assert_equal 1, feed.items[0].authors.size
42
+ assert_equal '<p>Blah blah blah</p>', feed.items[0].content_html
43
+ assert_equal 'Blah blah blah', feed.items[0].content_text
44
+ assert_equal 'Microformats are amazing', feed.items[0].title
45
+ assert_equal 'In which I extoll the virtues of using microformats.', feed.items[0].summary
46
+ assert_equal DateTime.new( 2013, 6, 13, 12, 0, 0 ).utc, feed.items[0].published
47
+
48
+ assert_equal 'W. Developer', feed.items[0].authors[0].name
49
+ end
50
+
51
+
52
+ end # class TestMicroformats
@@ -6,7 +6,7 @@
6
6
 
7
7
  require 'helper'
8
8
 
9
- class TestRssLive < MiniTest::Test
9
+ class TestRssLive < Minitest::Test
10
10
 
11
11
 
12
12
  def test_rubyflow
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-29 00:00:00.000000000 Z
11
+ date: 2025-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logutils
@@ -42,33 +42,39 @@ dependencies:
42
42
  name: rdoc
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.0'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '7'
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">="
53
56
  - !ruby/object:Gem::Version
54
57
  version: '4.0'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '7'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: hoe
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '3.16'
67
+ version: '4.2'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '3.16'
74
+ version: '4.2'
69
75
  description: feedparser - web feed parser and normalizer (RSS, Atom, JSON Feed, HTML
70
76
  h-entry, etc.)
71
- email: wwwmake@googlegroups.com
77
+ email: gerald.bauer@gmail.com
72
78
  executables: []
73
79
  extensions: []
74
80
  extra_rdoc_files:
@@ -105,7 +111,7 @@ homepage: https://github.com/feedparser/feedparser
105
111
  licenses:
106
112
  - Public Domain
107
113
  metadata: {}
108
- post_install_message:
114
+ post_install_message:
109
115
  rdoc_options:
110
116
  - "--main"
111
117
  - README.md
@@ -122,9 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
128
  - !ruby/object:Gem::Version
123
129
  version: '0'
124
130
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.5.2
127
- signing_key:
131
+ rubygems_version: 3.5.22
132
+ signing_key:
128
133
  specification_version: 4
129
134
  summary: feedparser - web feed parser and normalizer (RSS, Atom, JSON Feed, HTML h-entry,
130
135
  etc.)