Version 50 of RSS

Updated 2006-12-04 00:50:44 by dkf

Rich Site Summary (See http://blogs.law.harvard.edu/tech/rss or http://backend.userland.com/rss092 ) or RDF Site Summary [L1 ] or Really Simple Syndication [L2 ] (at least as of RSS 2.0 [L3 ]) is an XML application to describe web sites with rapidly changing content (e.g. news, or Slashdot, or this Wiki :).

There are some heated debates [L4 ] about what RSS is, but at its core it's an XML syntax for providing summaries of news based websites. An RSS document consists of one or more channels with one or more items. Each item is usually a news story with a title, a link and possibly a description. Newer versions of RSS [L5 ] provide for more properties for each item.

SC's Wiki was an early implementation of Wikit with an RSS feed. That is you can get the Recent Changes page as an RSS file.

Now this wiki does as well [L6 ].

DKF 4 Dec 2006: We should get jcw to update wikit to put in a magic incantation like this into each page's HTML header:

 <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml">

as this would make browsers like Firefox add information to the display to advertise the fact of the RSS feed to users. Which would be nice. :-)


TclRSS [L7 ] is a Tcl library for handling RSS (0.91/1.0) files.

MPJ: Here is an example of using TclRSS to read the Recent Changes page.

 package require http
 package require rss
 proc fetch {url} {
    set tok [http::geturl $url]
    set res [http::data $tok]
    http::cleanup $tok
    return $res
 }
 set rawrss [fetch http://mini.net/tcl/rss.xml]
 #set rawrss [fetch http://slashdot.org/slashdot.rss] ;# also works for slashdot
 set channel [rss::parse $rawrss]
 puts "Feed:[$channel title]"
 puts "===="; set count 0
 foreach item [$channel items] {
    puts "[incr count]. [$item title]"
    puts "$count. [$item link]"
    puts "$count. [$item description]"
    puts "===="
 } 

Update (16/06/2004): Playing around with RSS, for a upcoming application RssPoint, I added just a little code to RS's A little XML browser to create A little RSS browser.


LV So, what does one do with RSS? For what purpose does one make data available in this format? For what can one use it that they couldn't just use the html pages?

MR Larry, it lets people easily track updates or changes from a large number of websites very quickly, using an application called a news aggregator. Rather than having to visit 50 websites for news, all the latest headlines are downloaded automatically and shown in a way that makes it very quick to see only what is new, and read just what I want. Since very recently adding it to CourseForum and ProjectForum its been a godsend, letting me monitor dozens of Wiki sites with practically zero effort.


LV Ah, Mark, so it is a format that some applications can interpret and use to display a series of links. Allows one, it appears, to do some sort of dynamic personalization of headlines or whatever the site wants to advertise.

MR Sort of. See e.g. the main window screenshot linked to from http://ranchero.com/netnewswire/


Petteri K offers

    lynx -source http://www.iki.fi/petterik/rss.cgi > rss.cgi
    tclsh rss.cgi 0b00 

as a demonstration of RSS capabilities.

LV I am uncertain what this script is for. When I run it, all I see is a series of lines from ActiveState. I do not seem to see anything from the other URLs listed in the script. I added two URLs - one for Tcler's Wiki and one for Steve's Wiki (listed above) - surely their sites should have shown up in the rss.cgi's output.


A nice discussion from another Wiki [L8 ].


LV What Tcl-related sites provide RSS information? Is the Tcl-URL provided in RSS? Other information? Could the Tcl-URL editors make use of RSS someway?


Scott Gamon - I, for one, would love to see a RSS feed for Tcl-URL. Or a RSS feed for news:comp.lang.tcl .

NEM: (Discussion of my, now dead, cgi usenet/rss bridge removed). Google groups do Atom feeds of news groups, including Tcl: [L9 ]


Another tool available for providing a bridge between newsgroups and RSS is http://freshmeat.net/projects/nntp2rss/ .


See also tclog, and giggle (both weblog applications).


Here is a small Tcl script intended to be run as a cron job which checks a series of RSS feeds and sends an email when one is updated. RSS Monitor


I recently noticed an article at http://www.macdevcenter.com/pub/a/mac/2004/03/12/rss_scripting.html which demonstrates some rather basic shell scripts for retrieving and displaying RSS. In the following comments, someone shows a tremendously simple script in REBOL for doing similar functionality, and someone mentions that perl and python both have even better facilities.

Would it be useful to promote the TclRSS extention, mentioned above, into Tcllib?


Philip Quaife 6 Feb 05, I don't know what the fuss is with RSS, but I had a bash at decoding with regexps. Works with some rss or rdf feeds, but not sourceforge.

Takes a file and splits the fields into an array. Just prints out the array as an example. YMMV.

 #
 # Read RSS Feeds
 #


 set f [open $argv r]
 set data [read $f]
 close $f

 # Process an RSS File
 if {1 || [string first <rss $data] != -1} {
 foreach {- channel} [regexp -all -inline {<channel[^>]*>(.*?)</channel>} $data] {
        #get channel options
        set chopt [join [regexp -inline {.*?(?=<item>)} $channel]]
        puts "RSS CHANNEL\\$channel\\"
        regsub -all {<(.*)>([^<]*)</\1>} $chopt "\\1 {\\2}" opts
        array set options $opts
        parray options
        puts ""
        unset options
        foreach {- item} [regexp -all -inline {<item>(.*?)</item>} $channel] {
          regsub -all {<([^ ]+)[^<]*>([^<]*)</\1>} $item "\\1 {\\2}" opts
          array set options $opts
          puts "RSS ITEM  ([array names options])"
          parray options
          puts ""
          unset options
        }

 }
 }

 # Process a RDF file
 if {[string first <rdf $data] != -1} {
 foreach {- channel} [regexp -all -inline {<channel>(.*?)</channel>} $data] {
        #get channel options
        puts "RDF CHANNEL"
        regsub -all {<(.*)>([^<]*)</\1>} $channel "\\1 {\\2}" opts
        array set options $opts
        parray options
        puts ""
        unset options
        foreach {- item} [regexp -all -inline {<item>(.*?)</item>} $data] {
          regsub -all {<([^ ]+)[^<]*>([^<]*)</\1>} $item "\\1 {\\2}" opts
          array set options $opts
          puts "RDF ITEM ([array names options])"
          parray options
          puts ""
          unset options
        }
        break
 }
 }

"Bloglines" is a popular Web-based reader. It has nothing to do with Tcl, apparently--but is an example of a popular client.


See also RS's RSS - A little RSS reaper - TAX RSS


LV So, is the format used by people providing podcasts some version of RSS? The reason I ask is that jPodder, the podcast application I've been using, handles some feeds I've found, but others seem to just confuse it.


[Category Acronym|Category Internet]