Translation

Ads

Granjuxx
Professional IT services. Special offers for small companies Websites.
Hostnet
Hosting starting at R$9,90. Free domains. 30 days free trial.


Place your ad here.

Public audience report XHTML valid

Home Blog Lotus Create a LotusScript RSS feed for Notes websites

Social

Create a LotusScript RSS feed for Notes websites PDF Print
User Rating: / 0
PoorBest 
Written by Bruno Grange   
Wednesday, 03 September 2008 00:06
RSS is seems to be becoming more and more popular, I thought I would find out about it and add a feed from my Lotus Notes website. Here is the simple code and some hints and tips.


RSS stands for Really Simple Syndication

Example RSS feed: http://www.notesninjas.com/A555F9/nn.nsf/rss091!openagent&.xml

For an explanation of RSS check out this great page: http://webservices.xml.com/pub/a/ws/2002/11/19/rssfeedquality.html

The agent should be a of type "Run Once..." and to make the borwsers etc think it is xml, call it ny using:

-> http://dbpath/RSS!openagent&.xml

My agent code:

On Error Goto ErrHdlr
Print "Content-type: application/rss+xml\n\n"
Print "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?>"
Print "<rss version=""0.91"">"
Print "<channel>"
Print "<title>Lotus Notes Ninjas</title>"
Print "<link>http://www.NotesNinjas.com</link>"
Print"<description>Lotus Notes tips hints and news Updated every few days - FOR PERSONAL USE ONLY</description>"
Print"<category>Lotus Notes</category>"
Print "<language>en-gb</language>"
Print "<ttl>720</ttl>" ' mins to wait until reloading
Print "<generator>http://www.NotesNinjas.com/#RSS</generator>" ' what generated this

Dim dow(7) As String
dow(1)="Sun"
dow(2)="Mon"
dow(3)="Tue"
dow(4)="Wed"
dow(5)="Thu"
dow(6)="Fri"
dow(7)="Sat"

Dim mon(12)
mon(1)="Jan"
mon(2)="Feb"
mon(3)="Mar"
mon(4)="Apr"
mon(5)="May"
mon(6)="Jun"
mon(7)="Jul"
mon(8)="Aug"
mon(9)="Sep"
mon(10)="Oct"
mon(11)="Nov"
mon(12)="Dec"

Dim s As New notessession
Dim db As notesdatabase
Set db = s.currentdatabase
Dim v As notesview
Set v = db.getview("Hints_By_Title")

count=1
Dim doc As notesdocument
Set doc = v.getfirstdocument()

Dim niPubDate As notesitem

'pub date
Set niPubDate = doc.getfirstitem("DocCreated")
If Not(niPubDate Is Nothing) Then
Set ndt = niPubDate.datetimevalue

If ndt Is Nothing Then
'use default doc.created or doc.lastmodified
lslocaltime = doc.lastmodified
Else
lsLocalTime =ndt.lslocaltime
End If
Else
'use default doc.created or doc.lastmodified
lslocaltime = doc.lastmodified
End If

Print "<pubDate>" &   dow(Weekday(Today)) & ", " &  Day(Today) & " " & _
mon(Month(Today)) & " " & Year(Today) & _
" " & Right("0" & Hour(Now),2) & ":" & Right("0" & Minute(Now),2) & ":" & _
Right("0" & Second(Now),2) & " GMT" & _
"</pubDate>"

Print "<lastBuildDate>" &   dow(Weekday(lsLocalTime)) & ", " & Day(lsLocalTime) & " " & _
mon(Month(lsLocalTime)) & " " & Year(lsLocalTime) & _
" 00:00:01 GMT" & _
"</lastBuildDate>"

Print "<copyright>Copyright: (C) Adam Foster, http://www.AdFos.com</copyright>"
Print "<docs>http://www.AdFos.com</docs>"

Print "<image>"
Print"<title>Lotus Notes Ninjas</title>"
Print "<url>http://www.notesninjas.com/A555F9/nn.nsf/32e1ea7a6b090c16802569e200807da8/$Body/0.43C!OpenElement</url>"
Print "<link>http://www.NotesNinjas.com</link>"
Print "</image>"


Dim ab As notesrichtextitem

'RSS spec 0.91 says that 15 is the maximum number of items
Do Until count>14 Or doc Is Nothing
Print "<item>"
Print "<title>" & doc.subject(0) & "</title>"
' In this code Abstract is a rich text item
Set ab = doc.getfirstitem("Abstract")

Print "<description>" & Left(ab.text,150) & "</description>"

'pub date
Set niPubDate = doc.getfirstitem("DocCreated")
If Not(niPubDate Is Nothing) Then
Set ndt = niPubDate.datetimevalue

If ndt Is Nothing Then
'use default doc.created or doc.lastmodified
lslocaltime = doc.lastmodified
Else
lsLocalTime =ndt.lslocaltime
End If
Else
'use default doc.created or doc.lastmodified
lslocaltime = doc.lastmodified
End If

Print "<pubDate>" &   dow(Weekday(lsLocalTime)) & ", " & Day(lsLocalTime) & " " & _
mon(Month(lsLocalTime)) & " " & Year(lsLocalTime) & _
" " & Right("0" & Hour(lsLocalTime),2) & ":" & Right("0" & Minute(lsLocalTime),2)  & _
":" & Right("0" & Second(lsLocalTime),2) & " GMT" & _
"</pubDate>"
'category
Print "<category>Lotus Notes</category>"
Print "<link>http://www.notesninjas.com/A555F9/nn.nsf/ByAlias/" & doc.alias(0) & "</link>"
Print "</item>"
Set doc =v.getnextdocument(doc)
count=count+1

Loop

Print "</channel>"
Print "</rss>"
Print "<!-- Code: http://www.NotesNinjas.com/#RSS   (c) Adam Foster -->"
End
ErrHdlr:
Print "</channel>"
Print "</rss>"
Print "<!-- Error:" & Err & "  " & Error$ & "  Line: " & Erl & " -->"
Print "<!-- Code: http://www.NotesNinjas.com/#RSS   (c) Adam Foster -->"
End


RSS Specification

Here is a good description of the 2.0 Spec: http://blogs.law.harvard.edu/tech/rss

Checking your RSS Feed is well formed

A free online RSS feed checker: http://www.xml.com/pub/a/tools/ruwf/check.html

Using this I worked out that you cannot put & in your feed anywhere, which can be a problem with Lotus Notes URLs.

NB: Dates are supposed to be RFC 822 or RFC822 or RFC-822 however you denote it. I find this means that years need to be 4 digits.

Also: URLs cannot have spaces in.

It also allowed me to check syntaxes etc.


Try it in a free RSS Reader

I used the free reader at: http://reader.rocketinfo.com/desktop  or at http://my.yahoo.com .

How to add your RSS feed into your main website as an alternative URL

Stick this in the head part of the webpage:

<link href="http://www.notesninjas.com/A555F9/nn.nsf/rss091!openagent&.xml" rel="alternate" type="application/rss+xml" title="rss" />

This is how the bbc does it anyway: 

From: http://news.bbc.co.uk/  

See: <link href="http://news.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss091.xml" rel="alternate" type="application/rss+xml" title="rss" />

You can test this by entering http://www.NotesNinjas.com into: http://www.skyzyx.com/rss/?feed


A Java RSS solution for Lotus Notes

There is a Java solution in the sandbox on http://www.Notes.net
Related Articles:
 

Add comment


Security code
Refresh