feedalizer 0.1.1 → 0.1.2
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/CHANGELOG.txt +5 -9
- data/bin/feedalizer +0 -0
- data/examples/pjvault.rb +0 -1
- data/examples/sydsvenskan-nemi.rb +4 -5
- data/lib/feedalizer.rb +17 -13
- data/tests/test_feedalizer.rb +10 -4
- metadata +13 -6
data/CHANGELOG.txt
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
Noteworthy changes:
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
-- 2006-08-23
|
10
|
-
Added optional limit parameter to scrape_items.
|
11
|
-
Thanks to Thanh Vinh Tang for the hint that it is needed.
|
3
|
+
2006-08-23: Added optional limit parameter to scrape_items. (Thanks to Thanh Vinh Tang for the hint that it is needed.)
|
4
|
+
2006-10-11: Release of version 0.1.0.
|
5
|
+
2007-07-09: Feedalizer now uses RSS 2.0 instead of RSS 1.0.
|
6
|
+
2008-03-27: Improved examples/sydsvenskan-nemi.rb.
|
7
|
+
2008-03-27: Release of version 0.1.1.
|
data/bin/feedalizer
CHANGED
File without changes
|
data/examples/pjvault.rb
CHANGED
@@ -5,11 +5,8 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
|
5
5
|
require "feedalizer"
|
6
6
|
require "time"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
feedalize(url) do
|
8
|
+
feedalize("http://sydsvenskan.se/serier/nemi/index.jsp?context=serie") do
|
11
9
|
feed.title = "Nemi"
|
12
|
-
feed.about = "..."
|
13
10
|
feed.description = "Daily Nemi strip scraped from Sydsvenskan"
|
14
11
|
|
15
12
|
scrape_items("option") do |rss_item, html_element|
|
@@ -25,5 +22,7 @@ feedalize(url) do
|
|
25
22
|
rss_item.guid.content = link
|
26
23
|
end
|
27
24
|
|
28
|
-
|
25
|
+
if __FILE__ == $0
|
26
|
+
output!(ARGV[0] ? File.open(ARGV[0], "w") : STDOUT)
|
27
|
+
end
|
29
28
|
end
|
data/lib/feedalizer.rb
CHANGED
@@ -3,20 +3,20 @@ require "open-uri"
|
|
3
3
|
require "hpricot"
|
4
4
|
|
5
5
|
class Feedalizer
|
6
|
-
VERSION = "0.1.
|
6
|
+
VERSION = "0.1.2"
|
7
|
+
IDENTIFIER = "Feedalizer/#{VERSION} (http://termos.vemod.net/feedalizer)"
|
7
8
|
|
8
|
-
attr_reader :
|
9
|
+
attr_reader :page
|
9
10
|
|
10
11
|
def initialize(url, &block)
|
11
|
-
@
|
12
|
+
@page = grab_page(url)
|
12
13
|
@rss = RSS::Maker::RSS20.new
|
13
14
|
|
14
|
-
feed.generator =
|
15
|
+
feed.generator = IDENTIFIER
|
15
16
|
feed.link = url
|
17
|
+
feed.description = "Scraped from #{url}"
|
16
18
|
|
17
19
|
instance_eval(&block) if block
|
18
|
-
|
19
|
-
debug! if $DEBUG
|
20
20
|
end
|
21
21
|
|
22
22
|
def feed
|
@@ -24,7 +24,7 @@ class Feedalizer
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def scrape_items(hpricot_query, limit = 15)
|
27
|
-
elements = @
|
27
|
+
elements = @page.search(hpricot_query)
|
28
28
|
|
29
29
|
elements.first(limit).each do |html_element|
|
30
30
|
rss_item = @rss.items.new_item
|
@@ -36,11 +36,12 @@ class Feedalizer
|
|
36
36
|
open(url) { |io| Hpricot(io) }
|
37
37
|
end
|
38
38
|
|
39
|
-
# For backwards-compatibility
|
40
|
-
alias_method :parse_source, :grab_page
|
41
|
-
|
42
39
|
def output
|
43
|
-
@rss.
|
40
|
+
if @rss.respond_to?(:to_feed) # Ruby >= 1.8.7
|
41
|
+
@rss.to_feed.to_s
|
42
|
+
else
|
43
|
+
@rss.to_rss.to_s
|
44
|
+
end
|
44
45
|
end
|
45
46
|
|
46
47
|
def output!(target = STDOUT)
|
@@ -49,10 +50,13 @@ class Feedalizer
|
|
49
50
|
|
50
51
|
def debug!
|
51
52
|
@rss.items.each do |item|
|
52
|
-
STDERR.puts [ item.title, item.date, item.link ].join("
|
53
|
-
STDERR.puts
|
53
|
+
STDERR.puts [ item.title, item.date, item.link ].join("; ")
|
54
54
|
end
|
55
55
|
end
|
56
|
+
|
57
|
+
# Backwards-compatibility
|
58
|
+
alias_method :parse_source, :grab_page
|
59
|
+
alias_method :source, :page
|
56
60
|
end
|
57
61
|
|
58
62
|
# A handy wrapper for Feedalizer.new :-)
|
data/tests/test_feedalizer.rb
CHANGED
@@ -14,7 +14,7 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def test_construction
|
16
16
|
assert_kind_of RSS::Maker::RSS20::Channel, @feedalizer.feed
|
17
|
-
assert_kind_of Hpricot::Doc, @feedalizer.
|
17
|
+
assert_kind_of Hpricot::Doc, @feedalizer.page
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_block
|
@@ -23,12 +23,13 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
23
23
|
assert_kind_of Feedalizer, inside
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def test_defaults
|
27
27
|
assert_equal TEST_FILE, @feedalizer.feed.link
|
28
|
+
assert_equal "Scraped from #{TEST_FILE}", @feedalizer.feed.description
|
28
29
|
end
|
29
30
|
|
30
|
-
def
|
31
|
-
assert_equal "Test", @feedalizer.
|
31
|
+
def test_page
|
32
|
+
assert_equal "Test", @feedalizer.page.search("html/head/title").text
|
32
33
|
end
|
33
34
|
|
34
35
|
def test_scrape_items
|
@@ -76,4 +77,9 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
76
77
|
assert output.include?("<rss")
|
77
78
|
assert output.size > 320
|
78
79
|
end
|
80
|
+
|
81
|
+
def test_backwards_compatibility
|
82
|
+
assert @feedalizer.respond_to?(:page)
|
83
|
+
assert @feedalizer.respond_to?(:parse_source)
|
84
|
+
end
|
79
85
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedalizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoffer Sawicki
|
@@ -9,11 +9,12 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-11-23 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hpricot
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -23,14 +24,18 @@ dependencies:
|
|
23
24
|
version:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: hoe
|
27
|
+
type: :development
|
26
28
|
version_requirement:
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
28
30
|
requirements:
|
29
31
|
- - ">="
|
30
32
|
- !ruby/object:Gem::Version
|
31
|
-
version: 1.
|
33
|
+
version: 1.8.0
|
32
34
|
version:
|
33
|
-
description:
|
35
|
+
description: |-
|
36
|
+
Feedalizer is a *small* Ruby library that glues together Hpricot with the
|
37
|
+
standard RSS library in a way that makes it easy to transform web pages into
|
38
|
+
RSS feeds. If you ask me, it makes it *too* easy.
|
34
39
|
email:
|
35
40
|
- christoffer.sawicki@gmail.com
|
36
41
|
executables:
|
@@ -59,6 +64,8 @@ files:
|
|
59
64
|
- TODO.txt
|
60
65
|
has_rdoc: true
|
61
66
|
homepage: http://termos.vemod.net/feedalizer
|
67
|
+
licenses: []
|
68
|
+
|
62
69
|
post_install_message:
|
63
70
|
rdoc_options:
|
64
71
|
- --main
|
@@ -80,9 +87,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
87
|
requirements: []
|
81
88
|
|
82
89
|
rubyforge_project: feedalizer
|
83
|
-
rubygems_version: 1.
|
90
|
+
rubygems_version: 1.3.5
|
84
91
|
signing_key:
|
85
|
-
specification_version:
|
92
|
+
specification_version: 3
|
86
93
|
summary: Transforms web pages into RSS feeds
|
87
94
|
test_files: []
|
88
95
|
|