bradgessler-birdfeed 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +38 -0
- data/VERSION.yml +4 -0
- data/lib/birdfeed/feed.rb +17 -0
- data/lib/birdfeed/format/atom10.rb +45 -0
- data/lib/birdfeed/format/rss20.rb +37 -0
- data/lib/birdfeed/format.rb +27 -0
- data/lib/birdfeed/formats.rb +4 -0
- data/lib/birdfeed/item.rb +9 -0
- data/lib/birdfeed.rb +5 -0
- data/spec/fixtures/cnn_topstories.rss +99 -0
- data/spec/fixtures/flickr.atom +430 -0
- data/spec/fixtures/twitter.atom +268 -0
- data/spec/fixtures/twitter.rss +150 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/specs/bird_feed_spec.rb +4 -0
- data/spec/specs/feed_spec.rb +11 -0
- data/spec/specs/format/atom_10_spec.rb +83 -0
- data/spec/specs/format/rss_20_spec.rb +83 -0
- data/spec/specs/format_spec.rb +14 -0
- metadata +85 -0
data/README.txt
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
= BirdFeed - A dead simple RSS/Atom reader
|
2
|
+
|
3
|
+
BirdFeed is a well tested RSS parsing library that uses the
|
4
|
+
Nokogiri XML parser in an attempt to normalize the concept of an
|
5
|
+
Atom and RSS feed. We wrote this library to solve the problem of
|
6
|
+
consuming several different feed types for a moderation tool.
|
7
|
+
|
8
|
+
There are a few things that currently suck about BirdFeed. First,
|
9
|
+
we haven't used this code enough to iron out design flaws. Second,
|
10
|
+
there documentation is nil. I sacrificed documentation in favor
|
11
|
+
of spec tests because I was simply too short on time.
|
12
|
+
|
13
|
+
Abandon all hope ye who enter!
|
14
|
+
|
15
|
+
== LICENSE:
|
16
|
+
|
17
|
+
The MIT License
|
18
|
+
|
19
|
+
Copyright (c) 2009 Brad Gessler
|
20
|
+
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
22
|
+
a copy of this software and associated documentation files (the
|
23
|
+
'Software'), to deal in the Software without restriction, including
|
24
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
25
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
26
|
+
permit persons to whom the Software is furnished to do so, subject to
|
27
|
+
the following conditions:
|
28
|
+
|
29
|
+
The above copyright notice and this permission notice shall be
|
30
|
+
included in all copies or substantial portions of the Software.
|
31
|
+
|
32
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
33
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
34
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
35
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
36
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
37
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
38
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/VERSION.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module BirdFeed
|
2
|
+
class Feed
|
3
|
+
attr_accessor :title, :link, :description, :updated_at, :publisher, :xml, :items, :raw_content
|
4
|
+
|
5
|
+
def initialize(format, &block)
|
6
|
+
@items = []
|
7
|
+
@format = format
|
8
|
+
yield self if block_given?
|
9
|
+
end
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def parse(content)
|
13
|
+
Format.detect(content).parse(content)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module BirdFeed
|
4
|
+
class Atom10 < Format
|
5
|
+
attr_reader :xml, :doc
|
6
|
+
|
7
|
+
def initialize(xml)
|
8
|
+
@xml = xml
|
9
|
+
@doc = Nokogiri::XML(xml)
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def format
|
14
|
+
"Atom 1.0"
|
15
|
+
end
|
16
|
+
|
17
|
+
def parse(content)
|
18
|
+
Nokogiri::parse(content) do |xml|
|
19
|
+
return Feed.new(self) do |feed|
|
20
|
+
feed.raw_content = content
|
21
|
+
feed.title = xml.css('feed > title').text
|
22
|
+
feed.description = xml.css('feed > subtitle').text
|
23
|
+
feed.link = xml.css('feed > link').first.get_attribute('href')
|
24
|
+
feed.updated_at = xml.css('feed > updated').text
|
25
|
+
xml.css('feed > entry').each do |item_node|
|
26
|
+
feed.items << Item.new do |item|
|
27
|
+
item.xml = item_node.to_xml
|
28
|
+
item.node = item_node
|
29
|
+
item.title = item_node.css('title').text
|
30
|
+
item.description = item_node.css('content').text
|
31
|
+
item.link = item_node.css('link').attr('href')
|
32
|
+
item.id = item_node.css('id').text
|
33
|
+
item.author = item_node.css('author > name').text
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def valid?(xml)
|
41
|
+
not Nokogiri::parse(xml).search('feed[xmlns="http://www.w3.org/2005/Atom"]').empty?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module BirdFeed
|
4
|
+
class Rss20 < Format
|
5
|
+
class << self
|
6
|
+
def format
|
7
|
+
"RSS 2.0"
|
8
|
+
end
|
9
|
+
|
10
|
+
def parse(content)
|
11
|
+
Nokogiri::parse(content) do |xml|
|
12
|
+
return Feed.new(self) do |feed|
|
13
|
+
feed.raw_content = content
|
14
|
+
feed.title = xml.css('rss > channel > title').text
|
15
|
+
feed.description = xml.css('rss > channel > description').text
|
16
|
+
feed.link = xml.css('rss > channel > link').text
|
17
|
+
feed.updated_at = xml.css('rss > channel > pubDate').text
|
18
|
+
xml.css('rss > channel item').each do |item_node|
|
19
|
+
feed.items << Item.new do |item|
|
20
|
+
item.xml = item_node.to_xml
|
21
|
+
item.node = item_node
|
22
|
+
item.title = item_node.css('title').text
|
23
|
+
item.description = item_node.css('description').text
|
24
|
+
item.link = item_node.css('link').text
|
25
|
+
item.id = item_node.css('guid').text
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def valid?(content)
|
33
|
+
not Nokogiri::parse(content).css('rss[version="2.0"]').empty?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module BirdFeed
|
2
|
+
class Format
|
3
|
+
class << self
|
4
|
+
@@registered_formats = []
|
5
|
+
|
6
|
+
# Grab all of the sub classes and work our way up...
|
7
|
+
def detect(content)
|
8
|
+
@@registered_formats.detect do |format|
|
9
|
+
format.valid?(content)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Add a format to the registered formats list.
|
14
|
+
def register(format)
|
15
|
+
@@registered_formats << format
|
16
|
+
end
|
17
|
+
|
18
|
+
# Return a list of formats available in BirdFeed
|
19
|
+
def registered_formats
|
20
|
+
@@registered_formats
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
Dir.glob(File.join(File.dirname(__FILE__), %w[format *.rb])).each {|file| require file }
|
27
|
+
Dir.glob(File.join(File.dirname(__FILE__), %w[formats])).each {|file| require file }
|
data/lib/birdfeed.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://rss.cnn.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel>
|
3
|
+
<title>CNN.com</title>
|
4
|
+
<link>http://www.cnn.com/?eref=rss_topstories</link>
|
5
|
+
<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
|
6
|
+
<language>en-us</language>
|
7
|
+
<copyright>� 2009 Cable News Network LP, LLLP.</copyright>
|
8
|
+
<pubDate>Thu, 29 Jan 2009 14:19:49 EST</pubDate>
|
9
|
+
<ttl>5</ttl>
|
10
|
+
<image>
|
11
|
+
<title>CNN.com</title>
|
12
|
+
<link>http://www.cnn.com/?eref=rss_topstories</link>
|
13
|
+
<url>http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif</url>
|
14
|
+
<width>144</width>
|
15
|
+
<height>33</height>
|
16
|
+
<description>CNN.com delivers up-to-the-minute news and information on the latest top stories, weather, entertainment, politics and more.</description>
|
17
|
+
</image>
|
18
|
+
<thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://rss.cnn.com/rss/cnn_topstories?format=skin</thespringbox:skin><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://rss.cnn.com/rss/cnn_topstories" type="application/rss+xml" /><item>
|
19
|
+
<title>Recession lands men in 'Devil's Cave'</title>
|
20
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/US/01/29/porch.cave/index.html?eref=rss_topstories</guid>
|
21
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/wpPskrTYfzg/index.html</link>
|
22
|
+
<description>Enter the "Devil's Cave" by pulling aside the wooden grate beneath the porch of the abandoned suburban New Jersey home. Crawl inside to see the filthy, mismatched blankets and the garbage and empty soda and alcohol bottles strewn about. Catch your breath against the smell. For a group of Latin American men, the "Devil's Cave" was home for as they hunted work in tough economic times.<div class="feedflare">
|
23
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=SIaGsT6i"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=JBWjNt7z"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=rVmfJCHX"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=rVmfJCHX" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=rkhzE0Kt"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=yJU3Qhxm"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=yJU3Qhxm" border="0"></img></a>
|
24
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/wpPskrTYfzg" height="1" width="1"/></description>
|
25
|
+
<pubDate>Thu, 29 Jan 2009 14:10:13 EST</pubDate>
|
26
|
+
<feedburner:origLink>http://www.cnn.com/2009/US/01/29/porch.cave/index.html?eref=rss_topstories</feedburner:origLink></item>
|
27
|
+
<item>
|
28
|
+
<title>Ohio family of 4 found dead</title>
|
29
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/CRIME/01/29/ohio.family.dead/index.html?eref=rss_topstories</guid>
|
30
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/9dKD1x6bcCc/index.html</link>
|
31
|
+
<description>A family of four has been found dead in a Whitehall, Ohio, home, in what's believed to be a murder-suicide, authorities said Thursday.<div class="feedflare">
|
32
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=nNokrAdc"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=TxrIH0gx"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=QUGXvOFG"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=QUGXvOFG" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=hcMb9pNI"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=BxAZ7lAW"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=BxAZ7lAW" border="0"></img></a>
|
33
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/9dKD1x6bcCc" height="1" width="1"/></description>
|
34
|
+
<pubDate>Thu, 29 Jan 2009 14:09:19 EST</pubDate>
|
35
|
+
<feedburner:origLink>http://www.cnn.com/2009/CRIME/01/29/ohio.family.dead/index.html?eref=rss_topstories</feedburner:origLink></item>
|
36
|
+
<item>
|
37
|
+
<title>Blagojevich: How can you throw me out?</title>
|
38
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/POLITICS/01/29/illinois.governor/index.html?eref=rss_topstories</guid>
|
39
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/SDXUfcaZvMQ/index.html</link>
|
40
|
+
<description>Illinois Gov. Rod Blagojevich appeared before state senators today for the first time during his impeachment trial, saying he has done nothing wrong. "How can you throw a governor out of office who is clamoring and begging and pleading with you to give him a chance to bring witnesses in, to prove his innocence?" Blagojevich asked lawmakers.<div class="feedflare">
|
41
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=hftdIvZV"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=9uDvbNac"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=0DqMA50Y"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=0DqMA50Y" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=l3s1ioBR"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=ZdHKjPWX"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=ZdHKjPWX" border="0"></img></a>
|
42
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/SDXUfcaZvMQ" height="1" width="1"/></description>
|
43
|
+
<pubDate>Thu, 29 Jan 2009 13:27:02 EST</pubDate>
|
44
|
+
<feedburner:origLink>http://www.cnn.com/2009/POLITICS/01/29/illinois.governor/index.html?eref=rss_topstories</feedburner:origLink></item>
|
45
|
+
<item>
|
46
|
+
<title>Brush with death helps couple get money-smart</title>
|
47
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/LIVING/01/29/survival.wk2.devores/index.html?eref=rss_topstories</guid>
|
48
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/gOMqam9dgr4/index.html</link>
|
49
|
+
<description>At age 23 and just out of college, Eliot Kohan was diagnosed with leukemia. He was told he had four months to live. He survived. But he and his wife were left with thousands of dollars in medical bills. Their struggles taught them an important lesson in saving money. Now, learning to live frugally is paying off in today's economy.<div class="feedflare">
|
50
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=ySakpqiV"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=PoPIhdZF"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=ra8VuCPO"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=ra8VuCPO" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=4ER0LSUA"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=RcSr6xNu"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=RcSr6xNu" border="0"></img></a>
|
51
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/gOMqam9dgr4" height="1" width="1"/></description>
|
52
|
+
<pubDate>Thu, 29 Jan 2009 11:16:01 EST</pubDate>
|
53
|
+
<feedburner:origLink>http://www.cnn.com/2009/LIVING/01/29/survival.wk2.devores/index.html?eref=rss_topstories</feedburner:origLink></item>
|
54
|
+
<item>
|
55
|
+
<title>'Perfect storm' led to current economic crisis</title>
|
56
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/US/01/29/economic.crisis.explainer/index.html?eref=rss_topstories</guid>
|
57
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/VAy5-qzVmBI/index.html</link>
|
58
|
+
<description>The U.S. economy is clearly in terrible shape. What is less clear is how we got here.<div class="feedflare">
|
59
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=nTJmSCkF"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=ydcZsi7z"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=21uhvAgS"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=21uhvAgS" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=ZW7Zh3Ml"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=CRQWKIse"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=CRQWKIse" border="0"></img></a>
|
60
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/VAy5-qzVmBI" height="1" width="1"/></description>
|
61
|
+
<pubDate>Thu, 29 Jan 2009 07:59:02 EST</pubDate>
|
62
|
+
<feedburner:origLink>http://www.cnn.com/2009/US/01/29/economic.crisis.explainer/index.html?eref=rss_topstories</feedburner:origLink></item>
|
63
|
+
<item>
|
64
|
+
<title>Clark Howard: How to get a great car deal</title>
|
65
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/LIVING/personal/01/29/clark.howard.cars/index.html?eref=rss_topstories</guid>
|
66
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/dETdNDXibYc/index.html</link>
|
67
|
+
<description>Cars are such a deal right now that you might feel you are stealing when you buy one. Dealers have no customers, regardless of the price point, brand, style or size. Americans are afraid to buy because of the scary headlines and the times we are in right now.<div class="feedflare">
|
68
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=OE6End15"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=Axr3yAS3"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=vD2ZaVpa"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=vD2ZaVpa" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=aWcexziI"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=dFSxVlyl"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=dFSxVlyl" border="0"></img></a>
|
69
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/dETdNDXibYc" height="1" width="1"/></description>
|
70
|
+
<pubDate>Thu, 29 Jan 2009 13:02:45 EST</pubDate>
|
71
|
+
<feedburner:origLink>http://www.cnn.com/2009/LIVING/personal/01/29/clark.howard.cars/index.html?eref=rss_topstories</feedburner:origLink></item>
|
72
|
+
<item>
|
73
|
+
<title>Alaska volcano may erupt soon</title>
|
74
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/TECH/science/01/29/alaska.volcano/index.html?eref=rss_topstories</guid>
|
75
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/AHLfxCAcof0/index.html</link>
|
76
|
+
<description>A volcano in south-central Alaska could erupt within days or weeks. The level of seismic activity has increased markedly in recent days on Mount Redoubt, according to the Alaska Volcano Observatory. "We expect based on the past behavior of this volcano that this activity is going to culminate in an eruption," said Peter Cervelli, a research geophysicist with the observatory.<div class="feedflare">
|
77
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=yObM1AoY"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=dJSMQLQ3"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=oSkkifdy"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=oSkkifdy" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=SqGM8rxY"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=Dx5fMc4s"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=Dx5fMc4s" border="0"></img></a>
|
78
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/AHLfxCAcof0" height="1" width="1"/></description>
|
79
|
+
<pubDate>Thu, 29 Jan 2009 13:18:14 EST</pubDate>
|
80
|
+
<feedburner:origLink>http://www.cnn.com/2009/TECH/science/01/29/alaska.volcano/index.html?eref=rss_topstories</feedburner:origLink></item>
|
81
|
+
<item>
|
82
|
+
<title>Discovery may keep millions from going hungry</title>
|
83
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/TECH/science/01/29/waterproof.rice/index.html?eref=rss_topstories</guid>
|
84
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/pLzHFVooVDk/index.html</link>
|
85
|
+
<description>If every scientist hopes to make at least one important discovery in her career, then University of California-Davis professor Pamela Ronald and her colleagues may have hit the jackpot.<div class="feedflare">
|
86
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=qTxMnKR3"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=rDosjSEb"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=dVy0ThGz"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=dVy0ThGz" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=c0weMc7v"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=sACa6wDY"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=sACa6wDY" border="0"></img></a>
|
87
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/pLzHFVooVDk" height="1" width="1"/></description>
|
88
|
+
<pubDate>Thu, 29 Jan 2009 10:32:57 EST</pubDate>
|
89
|
+
<feedburner:origLink>http://www.cnn.com/2009/TECH/science/01/29/waterproof.rice/index.html?eref=rss_topstories</feedburner:origLink></item>
|
90
|
+
<item>
|
91
|
+
<title>Sepsis can strike, kill shockingly fast</title>
|
92
|
+
<guid isPermaLink="false">http://www.cnn.com/2009/HEALTH/01/29/ep.sepsis.infection/index.html?eref=rss_topstories</guid>
|
93
|
+
<link>http://rss.cnn.com/~r/rss/cnn_topstories/~3/ntr-g_QwF6A/index.html</link>
|
94
|
+
<description>One look at her photo, and you can't help but ask: How could someone so young and vibrant die so quickly from an infection?<div class="feedflare">
|
95
|
+
<a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=wvDOTr6L"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=41" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=VIb57tdZ"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=50" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=UnYd6Bl5"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=UnYd6Bl5" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=bD3rqNFY"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?d=52" border="0"></img></a> <a href="http://rss.cnn.com/~f/rss/cnn_topstories?a=8Vupfife"><img src="http://feeds2.feedburner.com/~f/rss/cnn_topstories?i=8Vupfife" border="0"></img></a>
|
96
|
+
</div><img src="http://feeds2.feedburner.com/~r/rss/cnn_topstories/~4/ntr-g_QwF6A" height="1" width="1"/></description>
|
97
|
+
<pubDate>Thu, 29 Jan 2009 13:15:30 EST</pubDate>
|
98
|
+
<feedburner:origLink>http://www.cnn.com/2009/HEALTH/01/29/ep.sepsis.infection/index.html?eref=rss_topstories</feedburner:origLink></item>
|
99
|
+
</channel></rss>
|