feedalizer 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +11 -0
- data/{COPYING → COPYING.txt} +1 -1
- data/Manifest.txt +13 -0
- data/README.txt +24 -0
- data/Rakefile +14 -0
- data/{TODO → TODO.txt} +1 -1
- data/bin/feedalizer +0 -1
- data/examples/sydsvenskan-nemi.rb +12 -8
- data/lib/feedalizer.rb +10 -9
- data/logo.svg +196 -0
- data/tests/{tc_feedalizer.rb → test_feedalizer.rb} +13 -4
- metadata +74 -50
- data/CHANGELOG +0 -7
- data/README +0 -37
- data/examples/mongrel-news.rb +0 -45
data/CHANGELOG.txt
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Noteworthy changes:
|
2
|
+
|
3
|
+
-- 2008-03-27
|
4
|
+
Improved examples/sydsvenskan-nemi.rb.
|
5
|
+
|
6
|
+
-- 2007-07-09
|
7
|
+
Feedalizer now uses RSS 2.0 instead of RSS 1.0.
|
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.
|
data/{COPYING → COPYING.txt}
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2006 Christoffer Sawicki <christoffer.sawicki@gmail.com>
|
1
|
+
Copyright (c) 2006-2008 Christoffer Sawicki <christoffer.sawicki@gmail.com>
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to
|
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= Feedalizer
|
2
|
+
|
3
|
+
http://termos.vemod.net/feedalizer
|
4
|
+
|
5
|
+
== Description
|
6
|
+
|
7
|
+
Feedalizer is a *small* Ruby library that glues together Hpricot with the
|
8
|
+
standard RSS library in a way that makes it easy to transform web pages into
|
9
|
+
RSS feeds. If you ask me, it makes it *too* easy.
|
10
|
+
|
11
|
+
== Documentation
|
12
|
+
|
13
|
+
First of all, see the included examples and take a quick look at the code.
|
14
|
+
|
15
|
+
Then read some documentation for the two libraries that are used:
|
16
|
+
|
17
|
+
* Hpricot:
|
18
|
+
http://code.whytheluckystiff.net/hpricot/
|
19
|
+
* RSS::Maker:
|
20
|
+
http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3AReference.en
|
21
|
+
|
22
|
+
== License
|
23
|
+
|
24
|
+
See link:COPYING.txt.
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "hoe"
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift("lib")
|
4
|
+
|
5
|
+
require "feedalizer"
|
6
|
+
|
7
|
+
Hoe.new("feedalizer", Feedalizer::VERSION) do |p|
|
8
|
+
p.summary = "Transforms web pages into RSS feeds"
|
9
|
+
p.developer "Christoffer Sawicki", "christoffer.sawicki@gmail.com"
|
10
|
+
p.extra_deps = %<hpricot>
|
11
|
+
p.changes = "" # See CHANGELOG.txt
|
12
|
+
|
13
|
+
# All other necessary information is collected from README.txt
|
14
|
+
end
|
data/{TODO → TODO.txt}
RENAMED
data/bin/feedalizer
CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
|
5
5
|
require "feedalizer"
|
6
6
|
require "time"
|
7
7
|
|
8
|
-
url = "http://sydsvenskan.se/serier/nemi/
|
8
|
+
url = "http://sydsvenskan.se/serier/nemi/index.jsp?context=serie"
|
9
9
|
|
10
10
|
feedalize(url) do
|
11
11
|
feed.title = "Nemi"
|
@@ -13,13 +13,17 @@ feedalize(url) do
|
|
13
13
|
feed.description = "Daily Nemi strip scraped from Sydsvenskan"
|
14
14
|
|
15
15
|
scrape_items("option") do |rss_item, html_element|
|
16
|
-
|
17
|
-
|
18
|
-
rss_item.title = rss_item.date.strftime("%Y-%m-%d")
|
16
|
+
link = html_element.attributes["value"]
|
17
|
+
date = Time.parse(html_element.inner_html)
|
19
18
|
|
20
|
-
|
21
|
-
rss_item.description = grab_page(
|
19
|
+
rss_item.title = [feed.title, date.strftime("%Y-%m-%d")].join(", ")
|
20
|
+
rss_item.description = grab_page(link).search("//img[@width=600]")
|
21
|
+
rss_item.date = date
|
22
|
+
rss_item.link = link
|
23
|
+
|
24
|
+
rss_item.guid.isPermaLink = true
|
25
|
+
rss_item.guid.content = link
|
22
26
|
end
|
23
|
-
|
24
|
-
output!
|
27
|
+
|
28
|
+
output!(ARGV[0] ? File.open(ARGV[0], "w") : STDOUT)
|
25
29
|
end
|
data/lib/feedalizer.rb
CHANGED
@@ -3,19 +3,19 @@ require "open-uri"
|
|
3
3
|
require "hpricot"
|
4
4
|
|
5
5
|
class Feedalizer
|
6
|
-
VERSION = "0.1.
|
6
|
+
VERSION = "0.1.1"
|
7
7
|
|
8
8
|
attr_reader :source
|
9
9
|
|
10
10
|
def initialize(url, &block)
|
11
11
|
@source = grab_page(url)
|
12
|
-
@rss = RSS::Maker::
|
12
|
+
@rss = RSS::Maker::RSS20.new
|
13
13
|
|
14
|
-
feed.generator = "Feedalizer (http://termos.vemod.net/feedalizer)"
|
14
|
+
feed.generator = "Feedalizer/#{VERSION} (http://termos.vemod.net/feedalizer)"
|
15
15
|
feed.link = url
|
16
16
|
|
17
|
-
instance_eval(&block) if
|
18
|
-
|
17
|
+
instance_eval(&block) if block
|
18
|
+
|
19
19
|
debug! if $DEBUG
|
20
20
|
end
|
21
21
|
|
@@ -26,8 +26,9 @@ class Feedalizer
|
|
26
26
|
def scrape_items(hpricot_query, limit = 15)
|
27
27
|
elements = @source.search(hpricot_query)
|
28
28
|
|
29
|
-
elements.first(limit).each do |
|
30
|
-
|
29
|
+
elements.first(limit).each do |html_element|
|
30
|
+
rss_item = @rss.items.new_item
|
31
|
+
yield rss_item, html_element
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
@@ -55,6 +56,6 @@ class Feedalizer
|
|
55
56
|
end
|
56
57
|
|
57
58
|
# A handy wrapper for Feedalizer.new :-)
|
58
|
-
def feedalize(
|
59
|
-
Feedalizer.new(
|
59
|
+
def feedalize(*args, &block)
|
60
|
+
Feedalizer.new(*args, &block)
|
60
61
|
end
|
data/logo.svg
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
<svg
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
5
|
+
xmlns:cc="http://web.resource.org/cc/"
|
6
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
7
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
9
|
+
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
10
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
11
|
+
width="600pt"
|
12
|
+
height="200pt"
|
13
|
+
id="svg1328"
|
14
|
+
sodipodi:version="0.32"
|
15
|
+
inkscape:version="0.43"
|
16
|
+
version="1.0"
|
17
|
+
sodipodi:docbase="/home/qerub/Desktop"
|
18
|
+
sodipodi:docname="Feedalizer.svg">
|
19
|
+
<defs
|
20
|
+
id="defs1330">
|
21
|
+
<linearGradient
|
22
|
+
id="RSSg"
|
23
|
+
y2="225.94"
|
24
|
+
x2="225.94"
|
25
|
+
y1="30.059999"
|
26
|
+
x1="30.059999"
|
27
|
+
gradientUnits="userSpaceOnUse">
|
28
|
+
<stop
|
29
|
+
id="stop1355"
|
30
|
+
stop-color="#E3702D"
|
31
|
+
offset="0.0" />
|
32
|
+
<stop
|
33
|
+
id="stop1357"
|
34
|
+
stop-color="#EA7D31"
|
35
|
+
offset="0.1071" />
|
36
|
+
<stop
|
37
|
+
id="stop1359"
|
38
|
+
stop-color="#F69537"
|
39
|
+
offset="0.3503" />
|
40
|
+
<stop
|
41
|
+
id="stop1361"
|
42
|
+
stop-color="#FB9E3A"
|
43
|
+
offset="0.5" />
|
44
|
+
<stop
|
45
|
+
id="stop1363"
|
46
|
+
stop-color="#EA7C31"
|
47
|
+
offset="0.7016" />
|
48
|
+
<stop
|
49
|
+
id="stop1365"
|
50
|
+
stop-color="#DE642B"
|
51
|
+
offset="0.8866" />
|
52
|
+
<stop
|
53
|
+
id="stop1367"
|
54
|
+
stop-color="#D95B29"
|
55
|
+
offset="1.0" />
|
56
|
+
</linearGradient>
|
57
|
+
</defs>
|
58
|
+
<sodipodi:namedview
|
59
|
+
id="base"
|
60
|
+
pagecolor="#ffffff"
|
61
|
+
bordercolor="#666666"
|
62
|
+
borderopacity="1.0"
|
63
|
+
inkscape:pageopacity="0.0"
|
64
|
+
inkscape:pageshadow="2"
|
65
|
+
inkscape:zoom="0.99541312"
|
66
|
+
inkscape:cx="702.12529"
|
67
|
+
inkscape:cy="124.61561"
|
68
|
+
inkscape:document-units="px"
|
69
|
+
inkscape:current-layer="layer1"
|
70
|
+
showguides="true"
|
71
|
+
inkscape:guide-bbox="true"
|
72
|
+
inkscape:window-width="1594"
|
73
|
+
inkscape:window-height="1143"
|
74
|
+
inkscape:window-x="0"
|
75
|
+
inkscape:window-y="0" />
|
76
|
+
<metadata
|
77
|
+
id="metadata1333">
|
78
|
+
<rdf:RDF>
|
79
|
+
<cc:Work
|
80
|
+
rdf:about="">
|
81
|
+
<dc:format>image/svg+xml</dc:format>
|
82
|
+
<dc:type
|
83
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
84
|
+
</cc:Work>
|
85
|
+
</rdf:RDF>
|
86
|
+
</metadata>
|
87
|
+
<g
|
88
|
+
inkscape:label="Layer 1"
|
89
|
+
inkscape:groupmode="layer"
|
90
|
+
id="layer1">
|
91
|
+
<g
|
92
|
+
id="g3409"
|
93
|
+
transform="matrix(0.276042,0.264838,-0.264838,0.276042,702.5009,852.4515)"
|
94
|
+
inkscape:export-filename="/home/qerub/Desktop/feedalizer.png"
|
95
|
+
inkscape:export-xdpi="44.940571"
|
96
|
+
inkscape:export-ydpi="44.940571">
|
97
|
+
<path
|
98
|
+
id="path2408"
|
99
|
+
d="M -1455.1635,-1127.3108 C -1480.8436,-1184.3602 -1502.1543,-1231.8246 -1502.5205,-1232.7871 C -1503.1489,-1234.4385 -1500.5064,-1234.5371 -1455.5794,-1234.5371 L -1407.9724,-1234.5371 L -1407.9724,-1129.0371 C -1407.9724,-1071.012 -1408.0849,-1023.5477 -1408.2224,-1023.5607 C -1408.3599,-1023.5737 -1429.4834,-1070.2612 -1455.1635,-1127.3108 z "
|
100
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
101
|
+
<path
|
102
|
+
id="path3307"
|
103
|
+
d="M -1405.9505,-1128.7871 L -1405.9724,-1234.5371 L -1358.4724,-1234.5371 C -1332.3474,-1234.5371 -1310.9724,-1234.3035 -1310.9724,-1234.018 C -1310.9724,-1233.6259 -1394.1099,-1048.8415 -1404.0965,-1027.037 C -1405.8864,-1023.1291 -1405.929,-1025.4709 -1405.9505,-1128.7871 z "
|
104
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
105
|
+
<path
|
106
|
+
id="path3305"
|
107
|
+
d="M -1505.2262,-1170.2871 C -1555.5138,-1248.2496 -1596.5327,-1312.1957 -1596.3793,-1312.3897 C -1596.226,-1312.5837 -1575.7092,-1294.7278 -1550.7865,-1272.71 L -1505.4724,-1232.6776 L -1460.4724,-1133.4126 C -1411.3162,-1024.9793 -1412.9119,-1028.537 -1413.4316,-1028.537 C -1413.6311,-1028.537 -1454.9387,-1092.3245 -1505.2262,-1170.2871 z "
|
108
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
109
|
+
<path
|
110
|
+
id="path3303"
|
111
|
+
d="M -1400.7601,-1031.138 C -1400.0519,-1032.7933 -1379.2224,-1078.8109 -1354.4724,-1133.3996 L -1309.4724,-1232.6515 L -1264.1442,-1272.6827 C -1239.2136,-1294.6998 -1218.702,-1312.5616 -1218.5629,-1312.3754 C -1218.2983,-1312.0215 -1399.8866,-1030.2784 -1401.2601,-1028.912 C -1401.6933,-1028.481 -1401.4683,-1029.4827 -1400.7601,-1031.138 z "
|
112
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
113
|
+
<path
|
114
|
+
id="path3301"
|
115
|
+
d="M -1499.4084,-1253.2871 C -1496.9868,-1262.4996 -1490.1185,-1288.4871 -1484.1456,-1311.0371 L -1473.2859,-1352.0371 L -1440.6292,-1352.3007 L -1407.9724,-1352.5644 L -1407.9724,-1294.5507 L -1407.9724,-1236.5371 L -1455.8919,-1236.5371 L -1503.8114,-1236.5371 L -1499.4084,-1253.2871 z "
|
116
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
117
|
+
<path
|
118
|
+
id="path3299"
|
119
|
+
d="M -1405.9724,-1294.5507 L -1405.9724,-1352.5644 L -1373.2969,-1352.3007 L -1340.6214,-1352.0371 L -1329.7905,-1311.0371 C -1323.8335,-1288.4871 -1316.9806,-1262.4996 -1314.5619,-1253.2871 L -1310.1641,-1236.5371 L -1358.0683,-1236.5371 L -1405.9724,-1236.5371 L -1405.9724,-1294.5507 z "
|
120
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
121
|
+
<path
|
122
|
+
id="path3297"
|
123
|
+
d="M -1552.3022,-1277.5405 C -1577.4208,-1299.5751 -1597.9724,-1317.9282 -1597.9724,-1318.325 C -1597.9724,-1319.2879 -1519.1343,-1398.0774 -1518.7555,-1397.493 C -1518.5929,-1397.2422 -1508.636,-1387.0756 -1496.6289,-1374.9006 L -1474.798,-1352.7641 L -1484.4281,-1316.9006 C -1489.7247,-1297.1756 -1496.5861,-1271.5871 -1499.6757,-1260.0371 C -1502.7652,-1248.4871 -1505.5943,-1238.6862 -1505.9625,-1238.2573 C -1506.3307,-1237.8284 -1527.1836,-1255.5059 -1552.3022,-1277.5405 z "
|
124
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
125
|
+
<path
|
126
|
+
id="path3295"
|
127
|
+
d="M -1308.2609,-1238.2284 C -1308.5244,-1238.6731 -1315.5977,-1264.5978 -1323.9793,-1295.8388 L -1339.2186,-1352.6405 L -1319.9126,-1372.3388 C -1309.2942,-1383.1728 -1299.3356,-1393.3816 -1297.7822,-1395.025 L -1294.958,-1398.013 L -1255.4652,-1358.5298 C -1233.7442,-1336.814 -1216.0046,-1318.5944 -1216.044,-1318.0418 C -1216.1063,-1317.1665 -1301.0906,-1242.1925 -1305.9472,-1238.7284 C -1306.9562,-1238.0086 -1307.9974,-1237.7836 -1308.2609,-1238.2284 z "
|
128
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
129
|
+
<path
|
130
|
+
id="path3293"
|
131
|
+
d="M -1598.77,-1324.0371 C -1598.4752,-1325.1371 -1594.5003,-1339.342 -1589.9369,-1355.6036 L -1581.6399,-1385.1701 L -1541.6229,-1406.6035 C -1479.8145,-1439.7087 -1477.9724,-1440.6826 -1477.9724,-1440.2576 C -1477.9724,-1439.8035 -1580.5497,-1339.607 -1591.8893,-1328.9847 C -1596.5138,-1324.6527 -1599.1043,-1322.79 -1598.77,-1324.0371 z "
|
132
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
133
|
+
<path
|
134
|
+
id="path3291"
|
135
|
+
d="M -1263.5841,-1369.1097 C -1289.9227,-1394.7558 -1317.0974,-1421.3723 -1323.9724,-1428.2574 L -1336.4724,-1440.7757 L -1324.4057,-1434.4064 C -1317.769,-1430.9032 -1294.321,-1418.3864 -1272.2991,-1406.5913 L -1232.2591,-1385.1456 L -1223.5996,-1354.1909 C -1218.8368,-1337.1658 -1215.11,-1323.0661 -1215.3179,-1322.8583 C -1215.5257,-1322.6504 -1237.2455,-1343.4636 -1263.5841,-1369.1097 z "
|
136
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
137
|
+
<path
|
138
|
+
id="path3289"
|
139
|
+
d="M -1494.7312,-1376.7956 C -1506.4139,-1388.4878 -1515.9724,-1398.5043 -1515.9724,-1399.0545 C -1515.9724,-1399.6047 -1506.631,-1409.3884 -1495.2137,-1420.796 L -1474.455,-1441.537 L -1407.455,-1441.537 L -1340.455,-1441.537 L -1319.2137,-1420.2785 C -1307.531,-1408.5863 -1297.9724,-1398.5698 -1297.9724,-1398.0196 C -1297.9724,-1397.4693 -1307.3139,-1387.6857 -1318.7312,-1376.2781 L -1339.4899,-1355.5371 L -1406.4899,-1355.5371 L -1473.4899,-1355.5371 L -1494.7312,-1376.7956 z "
|
140
|
+
style="fill:#fe4545;stroke:#fe4545;stroke-width:4.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
141
|
+
<path
|
142
|
+
style="fill:#eb0000"
|
143
|
+
d="M -1455.6115,-1129.4532 L -1502.7505,-1234.0371 L -1455.7047,-1234.2969 C -1429.8295,-1234.4399 -1408.5024,-1234.4003 -1408.311,-1234.209 C -1408.1197,-1234.0177 -1408.0778,-1186.838 -1408.2178,-1129.3652 L -1408.4724,-1024.8692 L -1455.6115,-1129.4532 z M -1405.9505,-1129.2871 L -1405.9724,-1234.5371 L -1358.4851,-1234.5371 L -1310.9977,-1234.5371 L -1313.3363,-1229.2871 C -1316.3248,-1222.5783 -1401.6526,-1033.3745 -1404.0968,-1028.037 C -1405.8863,-1024.1292 -1405.929,-1026.4618 -1405.9505,-1129.2871 z M -1417.478,-1034.8158 C -1419.0641,-1037.5008 -1485.9253,-1141.3239 -1569.2807,-1270.5371 C -1579.7474,-1286.7621 -1589.8906,-1302.5121 -1591.8212,-1305.5371 L -1595.3312,-1311.0371 L -1592.1518,-1308.5371 C -1590.4032,-1307.1621 -1570.3686,-1289.6121 -1547.6306,-1269.5371 L -1506.2887,-1233.0371 L -1460.6654,-1132.5856 C -1435.5726,-1077.3372 -1415.1626,-1032.0135 -1415.3098,-1031.8663 C -1415.4571,-1031.719 -1416.4328,-1033.0463 -1417.478,-1034.8158 z M -1398.6871,-1034.537 C -1398.3948,-1035.362 -1387.5974,-1059.212 -1374.6929,-1087.537 C -1361.7883,-1115.8621 -1342.5664,-1158.1621 -1331.9775,-1181.5371 C -1321.3885,-1204.9121 -1311.6733,-1226.1245 -1310.3881,-1228.6759 C -1308.5122,-1232.4 -1299.8186,-1240.5826 -1266.2962,-1270.1759 C -1243.3308,-1290.4495 -1223.4908,-1307.8747 -1222.2072,-1308.8985 C -1220.6635,-1310.1299 -1221.6977,-1307.9296 -1225.2624,-1302.3985 C -1228.2263,-1297.7997 -1267.9146,-1236.2121 -1313.4586,-1165.5371 C -1397.0384,-1035.8381 -1399.6463,-1031.8297 -1398.6871,-1034.537 z M -1502.9724,-1237.2026 C -1502.9724,-1237.5687 -1496.2224,-1263.3989 -1487.9724,-1294.603 C -1479.7224,-1325.8072 -1472.9724,-1351.6077 -1472.9724,-1351.9375 C -1472.9724,-1352.2672 -1458.3474,-1352.5371 -1440.4724,-1352.5371 L -1407.9724,-1352.5371 L -1407.9724,-1294.5371 L -1407.9724,-1236.5371 L -1455.4724,-1236.5371 C -1481.5974,-1236.5371 -1502.9724,-1236.8366 -1502.9724,-1237.2026 z M -1405.9724,-1294.5371 L -1405.9724,-1352.5371 L -1373.4724,-1352.5371 C -1355.5974,-1352.5371 -1340.9724,-1352.2739 -1340.9724,-1351.9522 C -1340.9724,-1351.6305 -1334.4696,-1326.768 -1326.5218,-1296.7022 C -1318.5739,-1266.6364 -1311.7751,-1240.7996 -1311.4134,-1239.2871 L -1310.7556,-1236.5371 L -1358.364,-1236.5371 L -1405.9724,-1236.5371 L -1405.9724,-1294.5371 z M -1307.9724,-1237.7812 C -1307.9724,-1238.3277 -1337.8442,-1349.6817 -1338.3715,-1351.1008 C -1338.5889,-1351.6859 -1328.948,-1362.2609 -1316.9474,-1374.6008 L -1295.128,-1397.037 L -1255.5135,-1357.4988 L -1215.899,-1317.9605 L -1254.168,-1284.4988 C -1275.216,-1266.0948 -1295.9325,-1247.9585 -1300.2047,-1244.1958 C -1304.477,-1240.4331 -1307.9724,-1237.5465 -1307.9724,-1237.7812 z M -1597.9724,-1324.0532 C -1597.9724,-1325.4126 -1581.3898,-1384.4638 -1580.8802,-1384.9194 C -1580.5627,-1385.2032 -1490.4513,-1433.5843 -1481.3951,-1438.3333 C -1479.4326,-1439.3624 -1496.3215,-1422.5536 -1544.4724,-1375.5552 C -1556.0224,-1364.2817 -1572.7849,-1347.8583 -1581.7224,-1339.0588 C -1590.6599,-1330.2594 -1597.9724,-1323.5068 -1597.9724,-1324.0532 z M -1231.9724,-1338.7909 C -1240.4974,-1347.1345 -1256.4724,-1362.758 -1267.4724,-1373.5096 C -1325.8507,-1430.5695 -1335.2926,-1439.8572 -1334.4223,-1439.3657 C -1333.8999,-1439.0707 -1319.2974,-1431.2481 -1301.9724,-1421.9823 C -1284.6474,-1412.7164 -1261.9668,-1400.5517 -1251.571,-1394.9497 L -1232.6696,-1384.7641 L -1224.3148,-1354.9193 C -1219.7197,-1338.5046 -1216.0753,-1324.7473 -1216.2162,-1324.3475 C -1216.3571,-1323.9477 -1223.4474,-1330.4472 -1231.9724,-1338.7909 z M -1494.7312,-1376.7956 C -1506.4139,-1388.4878 -1515.9724,-1398.5043 -1515.9724,-1399.0545 C -1515.9724,-1399.6047 -1506.631,-1409.3884 -1495.2137,-1420.796 L -1474.455,-1441.537 L -1407.455,-1441.537 L -1340.455,-1441.537 L -1319.2137,-1420.2785 C -1307.531,-1408.5863 -1297.9724,-1398.5698 -1297.9724,-1398.0196 C -1297.9724,-1397.4693 -1307.3139,-1387.6857 -1318.7312,-1376.2781 L -1339.4899,-1355.5371 L -1406.4899,-1355.5371 L -1473.4899,-1355.5371 L -1494.7312,-1376.7956 z "
|
144
|
+
id="path2410" />
|
145
|
+
<path
|
146
|
+
style="fill:#d60000"
|
147
|
+
d="M -1455.6115,-1129.4532 L -1502.7505,-1234.0371 L -1455.7047,-1234.2969 C -1429.8295,-1234.4399 -1408.5024,-1234.4003 -1408.311,-1234.209 C -1408.1197,-1234.0177 -1408.0778,-1186.838 -1408.2178,-1129.3652 L -1408.4724,-1024.8692 L -1455.6115,-1129.4532 z M -1405.9505,-1129.2871 L -1405.9724,-1234.5371 L -1358.4851,-1234.5371 L -1310.9977,-1234.5371 L -1313.3363,-1229.2871 C -1316.3248,-1222.5783 -1401.6526,-1033.3745 -1404.0968,-1028.037 C -1405.8863,-1024.1292 -1405.929,-1026.4618 -1405.9505,-1129.2871 z M -1398.6871,-1034.537 C -1398.3948,-1035.362 -1387.5974,-1059.212 -1374.6929,-1087.537 C -1361.7883,-1115.8621 -1342.5664,-1158.1621 -1331.9775,-1181.5371 C -1321.3885,-1204.9121 -1311.6733,-1226.1245 -1310.3881,-1228.6759 C -1308.5122,-1232.4 -1299.8186,-1240.5826 -1266.2962,-1270.1759 C -1243.3308,-1290.4495 -1223.4908,-1307.8747 -1222.2072,-1308.8985 C -1220.6635,-1310.1299 -1221.6977,-1307.9296 -1225.2624,-1302.3985 C -1228.2263,-1297.7997 -1267.9146,-1236.2121 -1313.4586,-1165.5371 C -1397.0384,-1035.8381 -1399.6463,-1031.8297 -1398.6871,-1034.537 z M -1405.9724,-1294.5371 L -1405.9724,-1352.5371 L -1373.4724,-1352.5371 C -1355.5974,-1352.5371 -1340.9724,-1352.2739 -1340.9724,-1351.9522 C -1340.9724,-1351.6305 -1334.4696,-1326.768 -1326.5218,-1296.7022 C -1318.5739,-1266.6364 -1311.7751,-1240.7996 -1311.4134,-1239.2871 L -1310.7556,-1236.5371 L -1358.364,-1236.5371 L -1405.9724,-1236.5371 L -1405.9724,-1294.5371 z M -1307.9724,-1237.7812 C -1307.9724,-1238.3277 -1337.8442,-1349.6817 -1338.3715,-1351.1008 C -1338.5889,-1351.6859 -1328.948,-1362.2609 -1316.9474,-1374.6008 L -1295.128,-1397.037 L -1255.5135,-1357.4988 L -1215.899,-1317.9605 L -1254.168,-1284.4988 C -1275.216,-1266.0948 -1295.9325,-1247.9585 -1300.2047,-1244.1958 C -1304.477,-1240.4331 -1307.9724,-1237.5465 -1307.9724,-1237.7812 z M -1597.9724,-1324.0532 C -1597.9724,-1325.4126 -1581.3898,-1384.4638 -1580.8802,-1384.9194 C -1580.5627,-1385.2032 -1490.4513,-1433.5843 -1481.3951,-1438.3333 C -1479.4326,-1439.3624 -1496.3215,-1422.5536 -1544.4724,-1375.5552 C -1556.0224,-1364.2817 -1572.7849,-1347.8583 -1581.7224,-1339.0588 C -1590.6599,-1330.2594 -1597.9724,-1323.5068 -1597.9724,-1324.0532 z M -1231.9724,-1338.7909 C -1240.4974,-1347.1345 -1256.4724,-1362.758 -1267.4724,-1373.5096 C -1325.8507,-1430.5695 -1335.2926,-1439.8572 -1334.4223,-1439.3657 C -1333.8999,-1439.0707 -1319.2974,-1431.2481 -1301.9724,-1421.9823 C -1284.6474,-1412.7164 -1261.9668,-1400.5517 -1251.571,-1394.9497 L -1232.6696,-1384.7641 L -1224.3148,-1354.9193 C -1219.7197,-1338.5046 -1216.0753,-1324.7473 -1216.2162,-1324.3475 C -1216.3571,-1323.9477 -1223.4474,-1330.4472 -1231.9724,-1338.7909 z M -1494.7312,-1376.7956 C -1506.4139,-1388.4878 -1515.9724,-1398.5043 -1515.9724,-1399.0545 C -1515.9724,-1399.6047 -1506.631,-1409.3884 -1495.2137,-1420.796 L -1474.455,-1441.537 L -1407.455,-1441.537 L -1340.455,-1441.537 L -1319.2137,-1420.2785 C -1307.531,-1408.5863 -1297.9724,-1398.5698 -1297.9724,-1398.0196 C -1297.9724,-1397.4693 -1307.3139,-1387.6857 -1318.7312,-1376.2781 L -1339.4899,-1355.5371 L -1406.4899,-1355.5371 L -1473.4899,-1355.5371 L -1494.7312,-1376.7956 z "
|
148
|
+
id="path2412" />
|
149
|
+
<path
|
150
|
+
style="fill:#ae0000"
|
151
|
+
d="M -1405.942,-1129.7871 L -1405.9724,-1234.5371 L -1358.4373,-1234.5371 C -1313.4792,-1234.5371 -1310.9523,-1234.4422 -1311.8289,-1232.7871 C -1312.3387,-1231.8246 -1333.3277,-1185.3621 -1358.4711,-1129.5371 C -1383.6145,-1073.712 -1404.5746,-1027.362 -1405.049,-1026.537 C -1405.5367,-1025.689 -1405.9248,-1070.5679 -1405.942,-1129.7871 z M -1398.6871,-1034.537 C -1398.3948,-1035.362 -1387.5974,-1059.212 -1374.6929,-1087.537 C -1361.7883,-1115.8621 -1342.5664,-1158.1621 -1331.9775,-1181.5371 C -1321.3885,-1204.9121 -1311.6733,-1226.1245 -1310.3881,-1228.6759 C -1308.5122,-1232.4 -1299.8186,-1240.5826 -1266.2962,-1270.1759 C -1243.3308,-1290.4495 -1223.4908,-1307.8747 -1222.2072,-1308.8985 C -1220.6635,-1310.1299 -1221.6977,-1307.9296 -1225.2624,-1302.3985 C -1228.2263,-1297.7997 -1267.9146,-1236.2121 -1313.4586,-1165.5371 C -1397.0384,-1035.8381 -1399.6463,-1031.8297 -1398.6871,-1034.537 z M -1308.8935,-1241.8106 C -1309.5358,-1244.1352 -1316.4739,-1269.9415 -1324.3115,-1299.1579 L -1338.5616,-1352.2788 L -1316.8352,-1374.6579 L -1295.1087,-1397.037 L -1255.5346,-1357.5295 L -1215.9604,-1318.0219 L -1257.2164,-1281.8906 C -1279.9072,-1262.0183 -1300.5544,-1243.9199 -1303.0991,-1241.6717 L -1307.7257,-1237.5842 L -1308.8935,-1241.8106 z M -1231.9724,-1338.7909 C -1240.4974,-1347.1345 -1256.4724,-1362.758 -1267.4724,-1373.5096 C -1325.8507,-1430.5695 -1335.2926,-1439.8572 -1334.4223,-1439.3657 C -1333.8999,-1439.0707 -1319.2974,-1431.2481 -1301.9724,-1421.9823 C -1284.6474,-1412.7164 -1261.9668,-1400.5517 -1251.571,-1394.9497 L -1232.6696,-1384.7641 L -1224.3148,-1354.9193 C -1219.7197,-1338.5046 -1216.0753,-1324.7473 -1216.2162,-1324.3475 C -1216.3571,-1323.9477 -1223.4474,-1330.4472 -1231.9724,-1338.7909 z M -1597.4083,-1326.7392 C -1597.0239,-1327.9503 -1593.1972,-1341.4967 -1588.9046,-1356.8421 C -1584.612,-1372.1876 -1580.9587,-1384.8459 -1580.7862,-1384.9718 C -1580.6136,-1385.0977 -1576.1974,-1387.4612 -1570.9724,-1390.2241 C -1558.1941,-1396.981 -1490.6256,-1433.1287 -1484.9724,-1436.2322 C -1480.2997,-1438.7975 -1491.8345,-1427.0339 -1539.5165,-1380.6059 C -1550.4923,-1369.9188 -1567.8453,-1352.9313 -1578.0787,-1342.8559 C -1588.3121,-1332.7806 -1597.0049,-1324.5371 -1597.3961,-1324.5371 C -1597.7872,-1324.5371 -1597.7927,-1325.528 -1597.4083,-1326.7392 z "
|
152
|
+
id="path2414" />
|
153
|
+
</g>
|
154
|
+
<g
|
155
|
+
id="g1426"
|
156
|
+
transform="matrix(0.462133,0,0,0.462133,806.8796,93.55829)"
|
157
|
+
inkscape:export-filename="/home/qerub/Desktop/feedalizer.png"
|
158
|
+
inkscape:export-xdpi="44.940571"
|
159
|
+
inkscape:export-ydpi="44.940571">
|
160
|
+
<circle
|
161
|
+
transform="translate(-436.0367,-81.89454)"
|
162
|
+
id="circle1375"
|
163
|
+
r="24"
|
164
|
+
cy="189"
|
165
|
+
cx="68"
|
166
|
+
sodipodi:cx="68"
|
167
|
+
sodipodi:cy="189"
|
168
|
+
sodipodi:rx="24"
|
169
|
+
sodipodi:ry="24"
|
170
|
+
style="fill:#ffffff" />
|
171
|
+
<path
|
172
|
+
id="path1377"
|
173
|
+
d="M -276.0367,131.10546 L -310.0367,131.10546 C -310.0367,85.81811 -346.74935,49.10546 -392.0367,49.10546 L -392.0367,15.10546 C -327.97167,15.10546 -276.0367,67.04043 -276.0367,131.10546 z "
|
174
|
+
style="fill:#ffffff" />
|
175
|
+
<path
|
176
|
+
id="path1379"
|
177
|
+
d="M -252.0367,131.10546 C -252.0367,53.7856 -314.71684,-8.89454 -392.0367,-8.89454 L -392.0367,-43.89454 C -295.38687,-43.89454 -217.0367,34.45563 -217.0367,131.10546 L -252.0367,131.10546 z "
|
178
|
+
style="fill:#ffffff" />
|
179
|
+
</g>
|
180
|
+
<text
|
181
|
+
xml:space="preserve"
|
182
|
+
style="font-size:20.09537506px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Georgia"
|
183
|
+
x="23.999416"
|
184
|
+
y="154.71768"
|
185
|
+
id="text1431"
|
186
|
+
sodipodi:linespacing="100%"
|
187
|
+
inkscape:export-filename="/home/qerub/Desktop/feedalizer.png"
|
188
|
+
inkscape:export-xdpi="44.940571"
|
189
|
+
inkscape:export-ydpi="44.940571"><tspan
|
190
|
+
sodipodi:role="line"
|
191
|
+
id="tspan1433"
|
192
|
+
x="23.999416"
|
193
|
+
y="154.71768"
|
194
|
+
style="font-size:120.572258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Georgia">Feedalizer</tspan></text>
|
195
|
+
</g>
|
196
|
+
</svg>
|
@@ -13,7 +13,7 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_construction
|
16
|
-
assert_kind_of RSS::Maker::
|
16
|
+
assert_kind_of RSS::Maker::RSS20::Channel, @feedalizer.feed
|
17
17
|
assert_kind_of Hpricot::Doc, @feedalizer.source
|
18
18
|
end
|
19
19
|
|
@@ -37,7 +37,7 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
37
37
|
@feedalizer.scrape_items("div.item") do |item, element|
|
38
38
|
elements << element
|
39
39
|
|
40
|
-
assert_kind_of RSS::Maker::
|
40
|
+
assert_kind_of RSS::Maker::RSS20::Items::Item, item
|
41
41
|
assert_kind_of Hpricot::Elem, element
|
42
42
|
end
|
43
43
|
|
@@ -57,14 +57,23 @@ class TestFeedalizer < Test::Unit::TestCase
|
|
57
57
|
def test_grab_page
|
58
58
|
assert_kind_of Hpricot::Doc, @feedalizer.grab_page(TEST_FILE)
|
59
59
|
end
|
60
|
+
|
61
|
+
def test_existance_of_generator
|
62
|
+
f = @feedalizer.feed
|
63
|
+
|
64
|
+
f.about = f.title = f.description = "..."
|
65
|
+
|
66
|
+
assert @feedalizer.output.include?("Feedalizer")
|
67
|
+
end
|
60
68
|
|
61
69
|
def test_output
|
62
70
|
f = @feedalizer.feed
|
71
|
+
|
63
72
|
f.about = f.title = f.description = "..."
|
64
73
|
|
65
74
|
output = @feedalizer.output
|
66
75
|
|
67
|
-
assert output.include?(
|
68
|
-
assert output.size >
|
76
|
+
assert output.include?("<rss")
|
77
|
+
assert output.size > 320
|
69
78
|
end
|
70
79
|
end
|
metadata
CHANGED
@@ -1,64 +1,88 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.11
|
3
|
-
specification_version: 1
|
4
2
|
name: feedalizer
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-10-11 00:00:00 +02:00
|
8
|
-
summary: Transforms web pages into RSS feeds
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: christoffer.sawicki@gmail.com
|
12
|
-
homepage: http://termos.vemod.net/feedalizer
|
13
|
-
rubyforge_project: feedalizer
|
14
|
-
description: Feedalizer glues together Hpricot with Ruby's RSS library in a way that makes it dead easy to transform web pages into RSS feeds.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.1.1
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
6
|
authors:
|
29
7
|
- Christoffer Sawicki
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
- tests/test.html
|
34
|
-
- tests/tc_feedalizer.rb
|
35
|
-
- TODO
|
36
|
-
- COPYING
|
37
|
-
- README
|
38
|
-
- examples
|
39
|
-
- examples/mongrel-news.rb
|
40
|
-
- examples/pjvault.rb
|
41
|
-
- examples/sydsvenskan-nemi.rb
|
42
|
-
- bin/feedalizer
|
43
|
-
test_files: []
|
44
|
-
|
45
|
-
rdoc_options: []
|
46
|
-
|
47
|
-
extra_rdoc_files: []
|
48
|
-
|
49
|
-
executables:
|
50
|
-
- feedalizer
|
51
|
-
extensions: []
|
52
|
-
|
53
|
-
requirements: []
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
54
11
|
|
12
|
+
date: 2008-03-27 00:00:00 +01:00
|
13
|
+
default_executable:
|
55
14
|
dependencies:
|
56
15
|
- !ruby/object:Gem::Dependency
|
57
16
|
name: hpricot
|
58
17
|
version_requirement:
|
59
|
-
version_requirements: !ruby/object:Gem::
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
19
|
requirements:
|
61
|
-
- - "
|
20
|
+
- - ">="
|
62
21
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0
|
22
|
+
version: "0"
|
64
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: hoe
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.5.1
|
32
|
+
version:
|
33
|
+
description: Feedalizer is a *small* Ruby library that glues together Hpricot with the standard RSS library in a way that makes it easy to transform web pages into RSS feeds. If you ask me, it makes it *too* easy.
|
34
|
+
email:
|
35
|
+
- christoffer.sawicki@gmail.com
|
36
|
+
executables:
|
37
|
+
- feedalizer
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- CHANGELOG.txt
|
42
|
+
- COPYING.txt
|
43
|
+
- Manifest.txt
|
44
|
+
- README.txt
|
45
|
+
- TODO.txt
|
46
|
+
files:
|
47
|
+
- bin/feedalizer
|
48
|
+
- CHANGELOG.txt
|
49
|
+
- COPYING.txt
|
50
|
+
- examples/pjvault.rb
|
51
|
+
- examples/sydsvenskan-nemi.rb
|
52
|
+
- lib/feedalizer.rb
|
53
|
+
- logo.svg
|
54
|
+
- Manifest.txt
|
55
|
+
- Rakefile
|
56
|
+
- README.txt
|
57
|
+
- tests/test.html
|
58
|
+
- tests/test_feedalizer.rb
|
59
|
+
- TODO.txt
|
60
|
+
has_rdoc: true
|
61
|
+
homepage: http://termos.vemod.net/feedalizer
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options:
|
64
|
+
- --main
|
65
|
+
- README.txt
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
version:
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project: feedalizer
|
83
|
+
rubygems_version: 1.0.1
|
84
|
+
signing_key:
|
85
|
+
specification_version: 2
|
86
|
+
summary: Transforms web pages into RSS feeds
|
87
|
+
test_files: []
|
88
|
+
|
data/CHANGELOG
DELETED
data/README
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
___ _ _ _
|
2
|
-
| __|__ ___ __| |__ _| (_)______ _ _
|
3
|
-
| _/ -_) -_) _` / _` | | |_ / -_) '_|
|
4
|
-
|_|\___\___\__,_\__,_|_|_/__\___|_|
|
5
|
-
|
6
|
-
Project Website:
|
7
|
-
http://termos.vemod.net/feedalizer
|
8
|
-
|
9
|
-
= Dependencies
|
10
|
-
|
11
|
-
* Hpricot
|
12
|
-
http://code.whytheluckystiff.net/hpricot/
|
13
|
-
% gem install hpricot
|
14
|
-
|
15
|
-
= Documentation
|
16
|
-
|
17
|
-
First of all, see the included examples. Then read some Hpricot
|
18
|
-
documentation (http://code.whytheluckystiff.net/hpricot/).
|
19
|
-
|
20
|
-
(Yes, a tutorial would be nice.)
|
21
|
-
|
22
|
-
= Copyright
|
23
|
-
|
24
|
-
Copyright (c) Christoffer Sawicki <christoffer.sawicki@gmail.com> 2006
|
25
|
-
|
26
|
-
This program is free software; you can redistribute it and/or modify
|
27
|
-
it under the terms of the GNU General Public License version 2 as
|
28
|
-
published by the Free Software Foundation.
|
29
|
-
|
30
|
-
This program is distributed in the hope that it will be useful,
|
31
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
32
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
33
|
-
GNU General Public License for more details.
|
34
|
-
|
35
|
-
You should have received a copy of the GNU General Public License
|
36
|
-
along with this program; if not, write to the Free Software
|
37
|
-
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
data/examples/mongrel-news.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# This script was contributed by Chu Yeow Cheah, thanks!
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
6
|
-
|
7
|
-
require 'feedalizer'
|
8
|
-
require 'time'
|
9
|
-
|
10
|
-
url = 'http://mongrel.rubyforge.org/news.html'
|
11
|
-
|
12
|
-
feedalize(url) do
|
13
|
-
|
14
|
-
feed.title = 'Mongrel News'
|
15
|
-
feed.about = '...'
|
16
|
-
feed.description = 'Latest Mongrel news from the official site'
|
17
|
-
|
18
|
-
scrape_items('h2') do |rss_item, html_element|
|
19
|
-
|
20
|
-
siblings = html_element.parent.containers
|
21
|
-
html_element_index = siblings.index(html_element)
|
22
|
-
|
23
|
-
date, title = html_element.innerHTML.strip.split(':')
|
24
|
-
date = Time.parse(date.sub(/-/, ' ')) # date is before the first ':'
|
25
|
-
title.strip!
|
26
|
-
|
27
|
-
# Grab siblings after the <h2> and put into description.
|
28
|
-
description = ''
|
29
|
-
(html_element_index+1...siblings.size).each do |i|
|
30
|
-
next_sibling = siblings[i]
|
31
|
-
unless 'h2' == next_sibling.stag.name
|
32
|
-
description = description + next_sibling.to_s
|
33
|
-
else
|
34
|
-
break
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
rss_item.link = url
|
39
|
-
rss_item.title = title
|
40
|
-
rss_item.date = date
|
41
|
-
rss_item.description = description
|
42
|
-
end
|
43
|
-
|
44
|
-
output!
|
45
|
-
end
|