methods=RSS=Rss=Channel/i.generator.rss,RSS=Rss=Channel/i.ttl.rss,RSS=Rss=Channel=Item/i.author.rss,RSS=Rss=Channel=Item/i.comments.rss,RSS=Rss=Channel=Item/i.pubDate.rss,RSS=Rss=Channel=Item/i.guid.rss
sublibraries=
requires=
classes=RSS=Rss,RSS=Rss=Channel,RSS=Rss=SkipDays,RSS=Rss=SkipHours,RSS=Rss=Channel=Image,RSS=Rss=Channel=Cloud,RSS=Rss=Channel=Item,RSS=Rss=Channel=Item=Source,RSS=Rss=Channel=Item=Enclosure,RSS=Rss=Channel=Item=Category,RSS=Rss=Channel=TextInput,RSS=RDF,RSS=RDF=Channel,RSS=RDF=Channel=Image,RSS=RDF=Channel=Textinput,RSS=RDF=Channel=Items,RSS=RDF=Channel=ImageFavicon,RSS=RDF=Image,RSS=RDF=Textinput,RSS=RDF=Item,RSS=Rss=Channel=Item=Guid,DublinCoreModel,RSS=SyndicationModel,RSS=TaxonomyTopicModel,RSS=TaxonomyTopicModel=TaxonomyTopic,RSS=TaxonomyTopicsModel,RSS=TaxonomyTopicsModel=TaxonomyTopics,RSS=ImageItemModel,RSS=ImageItemModel=ImageItem,RSS=ImageFaviconModel,RSS=ImageFaviconModel=ImageFavicon,RSS=BaseTrackBackModel,RSS=TrackBackModel10,RSS=TrackBackModel10=TrackBackPing,RSS=TrackBackModel10=TrackBackAbout,RSS=TrackBackModel20,RSS=TrackBackModel20=TrackBackPing,RSS=TrackBackModel20=TrackBackAbout,RSS=ContentModel,RSS=XMLStyleSheet,RSS=XMLStyleSheetMixin,RSS=Maker=ChannelBase=CategoriesBase,RSS=Maker=ChannelBase=CategoriesBase=CategoryBase,RSS=Maker=RSS09=Channel=Categories,RSS=Maker=RSS10=Channel=Categories,RSS=Maker=RSS20=Channel=Categories,RSS=Maker=RSS09=Channel=Categories=Category,RSS=Maker=RSS10=Channel=Categories=Category,RSS=Maker=RSS20=Channel=Categories=Category,RSS=Maker=ChannelBase,RSS=Maker=RSS09=Channel,RSS=Maker=RSS10=Channel,RSS=Maker=RSS20=Channel,RSS=Maker,RSS=Maker=RSSBase,RSS=Maker=RSS10,RSS=Maker=RSS20,RSS=Maker=XMLStyleSheets=XMLStyleSheet,RSS=Maker=ChannelBase=SkipDaysBase,RSS=Maker=RSS09=Channel=SkipDays,RSS=Maker=RSS20=Channel=SkipDays,RSS=Maker=ChannelBase=SkipDaysBase=DayBase,RSS=Maker=RSS09=Channel=SkipDays=Day,RSS=Maker=RSS20=Channel=SkipDays=Day,RSS=Maker=ChannelBase=SkipHoursBase,RSS=Maker=RSS09=Channel=SkipHours,RSS=Maker=RSS20=Channel=SkipHours,RSS=Maker=ChannelBase=SkipHoursBase=HourBase,RSS=Maker=RSS09=Channel=SkipHours=Hour,RSS=Maker=RSS20=Channel=SkipHours=Hour,RSS=Maker=ImageBase,RSS=Maker=RSS09=Image,RSS=Maker=RSS10=Image,RSS=Maker=RSS20=Image,RSS=Maker=ItemsBase,RSS=Maker=RSS09=Items,RSS=Maker=RSS10=Items,RSS=Maker=RSS20=Items,RSS=Maker=ItemsBase=ItemBase,RSS=Maker=RSS09=Items=Item,RSS=Maker=RSS10=Items=Item,RSS=Maker=RSS20=Items=Item,RSS=Maker=RSS20=Items=Item=Guid,RSS=Maker=RSS20=Items=Item=Enclosure,RSS=Maker=RSS20=Items=Item=Source,RSS=Maker=RSS20=Items=Item=Categories,RSS=Maker=TextinputBase,RSS=Maker=RSS09=Textinput,RSS=Maker=RSS10=Textinput,RSS=Maker=RSS20=Textinput,RSS=Parser,RSS=NotWellFormedError,RSS=XMLParserNotFound,RSS=NotValidXMLParser,RSS=NSError,RSS=Element,RSS=RootElementMixin,RSS=Error,RSS=InvalidRSSError,RSS=OverlappedPrefixError,RSS=MissingTagError,RSS=TooMuchTagError,RSS=MissingAttributeError,RSS=UnknownTagError,RSS=NotExpectedTagError,RSS=NotAvailableValueError,RSS=UnknownConversionMethodError,RSS=ConversionError,RSS=NotSetError
is_sublibrary=false

RSS 򰷤Υ饤֥Ǥ

=== 
  * [[url:http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser]]
  * RSS 0.91 [[url:http://backend.userland.com/rss091]]
  * RSS 1.0  [[url:http://purl.org/rss/1.0/spec]]  
  * RSS 2.0  [[url:http://www.rssboard.org/rss-specification]]

=== 

RSS ParserRSS 0.9x/1.0/2.0򥵥ݡȤƤޤRSS 0.90
ϥݡȤƤޤ󡥤ʤ

RSS Υ⥸塼Ϥ줾졢
 * Dublin Core ⥸塼 [[url:http://web.resource.org/rss/1.0/modules/dc/]] 
 * Syndication ⥸塼 [[url:http://web.resource.org/rss/1.0/modules/syndication/]]
 * Content ⥸塼 [[url:http://web.resource.org/rss/1.0/modules/content/]]
 * Trackback ⥸塼 [[url:http://madskills.com/public/xml/rss/module/trackback/]]
 * Image ⥸塼 [[url:http://web.resource.org/rss/1.0/modules/image/]]
򥵥ݡȤƤޤ
Content ⥸塼 content:encoded ݡȤƤޤ

=== ѡ

RSS ѡ RSS::Parser 饹Ȥޤ
RSS::Parser.parse  String  RSS ѡޤ(ѤXMLѡ
ˤäƤ File  IO ֥ȤʤɤǤѡǽǤ)
 * RSS 1.0ѡ [[c:RSS::RDF]] ֥
 * RSS 0.9x/2.0ѡ [[c:RSS::Rss]] ֥
򤽤줾֤ޤѡ
String  well formed  XML ̵ϡ
㳰 [[c:RSS::NotWellFormedError]] ȯޤwell formed 
XML RSS 0.9x/1.0/2.0 ΤǤʤϡnil ֤


㤨СRSS 1.0 ХǡդǥѡˤϰʲΤ
ˤޤǡѿ rss_source ˤ RSS 1.0 ʸ
󤬳ǼƤΤȤޤ

  require 'rss'
  rss = RSS::Parser.parse(rss_source, true)

RSS::Parser.parse Ͼά true ꤵ줿
ȤߤʤΤǡϰʲΤ褦ˤ񤱤ޤ

  require 'rss'
  rss = RSS::Parser.parse(rss_source)

ǽϥХǡդǥѡơvalid ǤϤʤ RSS ä
ϥХǡ̵ǥѡˤϰʲΤ褦˽񤭤ޤ

  require 'rss'
  rss = nil
  begin
    rss = RSS::Parser.parse(rss_source)
  rescue RSS::InvalidRSSError
    rss = RSS::Parser.parse(rss_source, false)
  end

 rss_source  RSS 0.9x/1.0/2.0 Τɤ줫ʬʤ
ˤͭǤRSS 1.0ȤƥХǡ
դǥѡХǡ˼Ԥ RSS 0.9x/(
줿)1.0/2.0 Τ줫Ȥƥѡޤ

==== ΤʤǤΰ

ѡϥǥեȤǤΤʤ(ͽ˵ꤵƤʤ
)̵뤷ޤ⤷ΤʤǤ㳰ȯ
СRSS::Parser.parse 軰 false ꤷ
ȡѡΤʤǤ
[[c:RSS::UnknownTagError]] 㳰ȯޤ

ʲΤ褦ˤȡ긷̩RSS 1.0ѡǤޤ

  RSS::Parser.parse(rss_source, true, false)

=== ѡ줿RSS

RSS ϥѡ [[c:String]] ֥Ȥ [[c:RSS::RDF]],
[[c:RSS::RDF::Channel]], [[c:RSS::Rss]] Υ֥Ȥˤʤޤƥ
֥Ȥǻǥ֥Ȥ˥뤿ˡ̾
Ʊ̾Υޤ

==== ꡼(reader)

rdf:RDF ǤλǤǤ channel Ǥ򻲾ȤˤϡʲΤ褦
ˤޤ

  rss = RSS::Parser.parse(rss_source)
  rss.channel # => /rdf:RDF/channel; RSS::RDF::Channel

⤷ǤǤ°ʤ String ֤äƤޤ
Ǥάǽʤnil֤ä뤫⤷ޤ󡣤
ǤǤޤ°ľƱͤǤ

  rss = RSS::Parser.parse(rss_source)
  rss.channel.description # => /rdf:RDF/channel/text(); String

°˥ƱͤǤchannelǤrdf:about°
ˤϰʲΤ褦ˤޤ°ͤStringnil


  rss = RSS::Parser.parse(rss_source)
  rss.channel.about # => /rdf:RDF/channel/@about°; String ޤ nil

Ʊ̾ʣλǤ뤫⤷ʤȤƱͤǤ
꡼˰ꤷʤȺǽλǤ֤äƤޤ㤨С
rdf:RDFǤκǽitemǤ˥ˤϰʲΤ褦ˤ
ޤ

  rss = RSS::Parser.parse(rss_source)
  rss.item # => /rdf:RDF/item[1]; RSS::RDF::Item

3ܤitemǤ˥ˤϰʲΤ褦ˤޤά
ʤä꡼ΰArray#[]ΰƱ褦˰ޤ

  rss = RSS::Parser.parse(rss_source)
  rss.item(2) # => /rdf:RDF/item[3]; RSS::RDF::Item

Ǥ٤ƤȤ̾ʣ꡼Ȥʤ
٤ƤitemǤˤϰʲΤ褦ˤޤ

  rss = RSS::Parser.parse(rss_source)
  rss.items # => /rdf:RDF/itemǤ; [RSS::RDF::Item, ...]

==== 饤(writer)

rdf:RDFǤλǤǤchannelǤꤹˤϰʲΤ褦
ˤޤRSS::RDF::Channel.newˤrdf:about°
ͤꤹ뤳ȤǤޤ

  rss = RSS::Parser.parse(rss_source)
  rss.channel = RSS::RDF::Channel.new(rdf_about_value)

°ͤꤹƱͤǤ

  rss = RSS::Parser.parse(rss_source)
  rss.channel.about = "http://cozmixng.www.cozmixng.org/"

Ʊ̾ʣλǤ¸ߤϾۤʤޤ̾ʣ
ǤΥ᥽åɤǤơФ
Array#<<Array#[]=ʤɤѤǤꤷޤ

  rss = RSS::Parser.parse(rss_source)
  item = RSS::RDF::Item.new(rdf_about_value)
  rss.items << item
  rss.items.last == item # => true

: item=/set_itemʤɤRubyäݤʤΤǻȤʤǤ


=== 

RSS ParserȤäƤΤǸ򤵤줬ǤRSSϤ
ȤǤޤ

==== 

to_sRSSʸ֤ޤ

RSSϤήϰʲΤ褦ˤʤޤ

  * RSS֥ȡRSS::RDFȤRSS::Rss饹
    Υ֥ȡˤ

  * ϥ󥳡ǥ󥰤ꤹ(ά)

  * RSS֥Ȥto_s᥽åɤƤ

==== xml-stylesheet

xml-stylesheetϤ뤳ȤǤޤ

RSSΥ롼ǡRSS::RDFޤRSS::Rss˥֥
Ȥxml_stylesheetsȤ̾äƤޤ
RSS::XMLStyleSheet֥Ȥ뤳ȤRSS
xml-stylesheetϢŤ뤳ȤǤޤ

  rss.xml_stylesheets << RSS::XMLStyleSheet.new(...)

RSS::XMLStyleSheet.newˤϰʲΤ褦Hashޤ
ϢϤޤRSS::XMLStyleSheet֥
ȤͿ줿ˤäƽޤ

Hash:

  {
    :href => "...",
    :type => "...",
    :title => "...",
    :media => "...",
    :charset => "...",
    :alternate => "...",
  }

Ϣ:

  [
    [:href, "..."],
    [:type, "..."],
    [:title, "..."],
    [:media, "..."],
    [:charset, "..."],
    [:alternate, "..."],
  ]

ƤΥϾάǽǤ

㤨Сxml-stylesheetȤsample.xslꤹϰʲ
褦ˤޤ

  rss.xml_stylesheets << RSS::XMLStyleSheet.new({:href => "sample.xsl"})

{:type => "text/xsl"}ꤷʤȤʤȤ
ǤĥҤ.xslޤϡ.cssξŬ˿¬Ƥ
ΤǾάǽǤ

==== RSS֥Ȥ

¸RSSѡˡ줫鿷RSSˤRSS
MakerǤ


ʲΤ褦˻Ȥޤ

  require "rss"

  rss = RSS::Maker.make("С") do |maker|
    maker.XXX = YYY
    ...
  end

㤨С

  * http://example.com/ˤ
  * Example SiteȤʸ
  * ExampleȤȤ
  * http://example.com/index.rdfȤ̾RSS 1.0

ˤϰʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"
  end

⤷

  * http://example.com/article.htmlˤ
  * Sample ArticleȤȥ

ȥޤ᤿аʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
  end

⤷Υȥ꤬

  * 2004/11/1 10:10

ΤΤʤ餳ޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")
  end

ץ

  item.date = ...



  item.dc_date = ...

Ǥ⹽ޤ#dc_date=#date=ñʤ̾



ˡ

  * http://example.com/article2.htmlˤ
  * Sample Article2Ȥ
  * 2004/11/2 10:10˺줿

ȥĤʤʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")
  end

⤷¤ؤ

  maker.items.do_sort = true

ɲäʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    maker.items.do_sort = true

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")
  end

⤷Ȥ

  * Example SiteȤ̾
  * http://example.com/logo.pngȤ

ϰʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    maker.items.do_sort = true

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")

    maker.image.title = "Example Site"
    maker.image.url = "http://example.com/logo.png"
  end

⤷

  * http://example.com/search.cgi
  * keywordȤѥ᥿̾ǸǤ
  * Search Example SiteȤ̾
  * Search Example Site's all textȤդ

CGIäʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    maker.items.do_sort = true

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")

    maker.image.title = "Example Site"
    maker.image.url = "http://example.com/logo.png"

    maker.textinput.title = "Search Example Site"
    maker.textinput.description = "Search Example Site's all text"
    maker.textinput.name = "keyword"
    maker.textinput.link = "http://example.com/search.cgi"
  end

⤷

  * http://example.com/index.xslˤ

xml-stylesheetɲäϰʲΤ褦ˤޤ

  require "rss"

  rss = RSS::Maker.make("1.0") do |maker|
    xss = maker.xml_stylesheets.new_xml_stylesheet
    xss.href = "http://example.com/index.xsl"

    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    maker.items.do_sort = true

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")

    maker.image.title = "Example Site"
    maker.image.url = "http://example.com/logo.png"

    maker.textinput.title = "Search Example Site"
    maker.textinput.description = "Search Example Site's all text"
    maker.textinput.name = "keyword"
    maker.textinput.link = "http://example.com/search.cgi"
  end

⤷RSS 2.0ϰʲΤ褦ˡ
RSS::Maker.makeѹޤ

  require "rss"

  rss = RSS::Maker.make("2.0") do |maker|
    xss = maker.xml_stylesheets.new_xml_stylesheet
    xss.href = "http://example.com/index.xsl"

    maker.channel.about = "http://example.com/index.rdf"
    maker.channel.title = "Example"
    maker.channel.description = "Example Site"
    maker.channel.link = "http://example.com/"

    maker.items.do_sort = true

    item = maker.items.new_item
    item.link = "http://example.com/article.html"
    item.title = "Sample Article"
    item.date = Time.parse("2004/11/1 10:10")

    item = maker.items.new_item
    item.link = "http://example.com/article2.html"
    item.title = "Sample Article2"
    item.date = Time.parse("2004/11/2 10:10")

    maker.image.title = "Example Site"
    maker.image.url = "http://example.com/logo.png"

    maker.textinput.title = "Search Example Site"
    maker.textinput.description = "Search Example Site's all text"
    maker.textinput.name = "keyword"
    maker.textinput.link = "http://example.com/search.cgi"
  end

⤷RSS 0.91ϡRSS 2.0ξƱͤ
RSS::Maker.make "0.91"ѹޤ

=== ץ

RSS Parser Υץ륹ץȤ򤤤ĤҲ𤷤ޤ
ץȤ sample/ ʲäƤޤ

==== ץ1 - ܰ

ǤϡʣRSSѡitemǤɽ륹ץ
񤤤Ƥߤޤ礦

ޤRSS 0.9x/1.0/2.0ѡǤ褦˰ʲΤ褦requireޤ

  require 'rss'

ѡRSSϥե¸ƤưͿΤȤޤ

  ARGV.each do |fname|
    rss_source = nil
    File.open(fname) do |f|
      rss_source = f.read
    end

    rss = nil
    begin
      rss = RSS::Parser.parse(rss_source, false)
    rescue RSS::Error
    end

    if rss.nil?
      puts "#{fname}RSS 0.9x/1.0/2.0ΤǤ⤢ޤ"
    else
      print_items(rss)
    end
  end

Ȥprint_itemsȤ᥽åɤǤ

RSS::RDFRSS::RssˤΤitemsȤ᥽åɤimage
Ȥ᥽åɤƤޤ

itemsRSS::RDFξƤ/rdf:RDF/itemǤ֤
RSS::RssξƤ/rss/channel/itemǤ֤
ޤ

imageRSS::RDFξ/rdf:RDF/imageǤ֤ޤ
RSS::Rssξ/rss/channel/imageǤ֤ޤ

  def print_items(rss)
    rss.items.each do |item|
      puts "#{item.title} : #{item.description}"
    end
  end

ϤʸɤѹˤRSS::RDF#output_encoding=
RSS::Rss#output_encoding=Ȥޤ⤷ѴǤʤ
󥳡ǥ󥰤ꤵ줿
RSS::UnknownConversionMethodError㳰ȯޤ

print_itemsEUC-JPǽϤ褦˽񤭴Ƥߤޤ礦

  def print_items(rss)
    begin
      rss.output_encoding = "EUC-JP"
    rescue RSS::UnknownConversionMethodError
    end
    rss.items.each do |item|
      puts "#{item.title} : #{item.description}"
    end
  end



==== ץ2 - ɽ

Dublin Core⥸塼date°Ȥäƹitemɽ
Ƥߤޤ礦

ǽ˸줿Dublin Core⥸塼Ǥ˥ˤ
dc_̾פȤѰդƤޤƤǤ
˥ˤϡdc_Ǥʣ((-dc:rights
dc_rightsesȤˤʤäƤƵäƤޤ󡥤줫
Ƥ򲼤-))Ȥޤ

ʣǥϡǤƤɽʸפǤϤʤ
Ǥɽ֥ȡפ֤ޤǤɽ
ȡפǤƤɽʸפˤ
content᥽åɤ䤽̾Ǥvalue᥽åɤ
ѤޤǤƤɽʸפꤹˤ
content=᥽åɤ䤽̾Ǥvalue=᥽åɤ
Ѥޤ

  rss.channel.dc_title  # => ǤƤɽʸ
                        # "My site"ʤɡ

  rss.channel.dc_titles # => Ǥɽ֥ȡפ
                        # [DublinCoreTitle֥, ...]

  rss.channel.dc_titles.collect {|title| title.value}
                        # => ǤƤɽʸפ
                        # ["My site", ...]ʤɡ

  rss.channel.dc_titles.first.value == rss.channel.dc_title
                        # => true
  # ̩ˤϤ
  first_title = rss.channel.dc_titles.first
  first_title = first_title.value if first_title
  first_title == rss.channel.dc_title
                        # => true

ʤߤSyndication⥸塼Ǥ˥ˤϡsy_
̾פȤContent⥸塼Ǥ˥
ˤϡcontent_̾פȤѰդƤޤ

ץ1Ʊ褦˥ѡRSSϥե¸Ƥ
ͿΤȤޤ

  items = []
  ARGV.each do |fname|
    rss_source = nil
    File.open(fname) do |f|
      rss_source = f.read
    end

    rss = nil
    begin
      rss = RSS::Parser.parse(rss_source, true)
    rescue RSS::Error
    end

    if rss.nil?
      puts "#{fname}RSS 1.0ǤϤޤ"
    else
      begin
        rss.output_encoding = "euc-jp"
      rescue RSS::UnknownConversionMethodError
      end
      rss.items.each do |item|
        items << item if item.dc_date
      end
    end
  end
  print_items(items)

Ȥprint_itemsȤ᥽åɤǤ

Item#dc_dateTime֥Ȥnil֤ޤ
itemsˤdc_datenilǤϤʤΤޤޤƤʤ
ʤΤǰʲΤ褦˥ȤǤޤ

  def print_items(items)
    items.sort do |x, y|
      y.dc_date <=> x.dc_date
    end.each do |item|
      puts "#{item.dc_date.localtime.iso8601} : #{item.title} : #{item.description}"
    end
  end

==== ץ3 - ʣRSS֥

TODO: sample/blend.rb򸵤ˤץ񤯡
