<%
'' AMAZON-RSS.ASP
'' Sean P. Nolan
'' http://www.yaywastaken.com/
''
'' This code is free for you to use as you see fit. Copy it, rewrite it,
'' run it yourself, whatever. But no warranties or guarantees either. Who
'' knows what the hell it does. Not me, that's for sure!
''
'' Generates an RSS 0.91 feed from an Amazon book query
''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const MAX_PAGES_DEFAULT = 10
Dim szTitle, szMaxPages, nMaxPages
Response.ContentType = "text/xml"
Server.ScriptTimeout = 60 * 4 ' 4-minute maximum
Response.Expires = 0
szMaxPages = Request.QueryString("maxpages")
If (szMaxPages = "") Then
nMaxPages = MAX_PAGES_DEFAULT
Else
nMaxPages = CLng(szMaxPages)
End If
szTitle = "Amazon: " & XMLify(Request.QueryString("keywords"))
%><?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="0.91">
<channel>
<link>http://www.yaywastaken.com/amazon/</link>
<title><%= szTitle %></title>
<description>Create your own custom Amazon RSS feed!</description>
<language>en-us</language>
<image>
<url>http://www.yaywastaken.com/amazon.gif</url>
<link>http://www.yaywastaken.com/amazon/</link>
<title><%= szTitle %></title>
</image>
<%
RenderItems Request.QueryString("keywords"), _
Request.QueryString("browse") , _
Request.QueryString("author") , _
Request.QueryString("shortdesc"), _
nMaxPages
%>
</channel>
</rss>
<%
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' RenderItems
Sub RenderItems(szKeywords, szBrowseNode, szAuthor, szShortDesc, nMaxPages)
Dim szURLFmt, szURL, xmlDoc, ipage, http, xmlErr
Dim fParsed, xslDoc, szXSLPath, szOutput
On Error Resume Next
If (szShortDesc <> "") Then
szXSLPath = "amazon-lite.xsl"
Else
szXSLPath = "amazon-heavy.xsl"
End If
Set xslDoc = Server.CreateObject("Msxml2.DOMDocument")
xslDoc.async = False
xslDoc.load(Server.MapPath(szXSLPath))
If (szBrowseNode <> "") Then
szURLFmt = "http://xml.amazon.com/onca/xml3?" & _
"t=yaywastaken-20&" & _
"dev-t=XXXXXXXXXXXX&BrowseNodeSearch=" & _
Server.URLEncode(szBrowseNode) & _
"&mode=books&type=heavy&page=%%%PAGE%%%&f=xml"
ElseIf (szAuthor <> "") Then
szURLFmt = "http://xml.amazon.com/onca/xml3?" & _
"t=yaywastaken-20&" & _
"dev-t=XXXXXXXXXXXX&AuthorSearch=" & _
Server.URLEncode(szAuthor) & _
"&mode=books&type=heavy&page=%%%PAGE%%%&f=xml"
Else
szURLFmt = "http://xml.amazon.com/onca/xml3?" & _
"t=yaywastaken-20&" & _
"dev-t=XXXXXXXXXXXX&KeywordSearch=" & _
Server.URLEncode(szKeywords) & _
"&mode=books&type=heavy&page=%%%PAGE%%%&f=xml"
End If
If (Request("loc") <> "") Then
szURLFmt = szURLFmt & "&locale=" & LCase(Trim(Request("loc")))
End If
If (Request("mode") <> "") Then
szURLFmt = Replace(szURLFmt, "mode=books", _
"mode=" & LCase(Trim(Request("mode"))))
End If
ipage = 1
Do
szURL = Replace(szURLFmt, "%%%PAGE%%%", ipage)
Set http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.open "GET", szURL, False
http.send ""
If (http.status <> 200) Then
Exit Do
End If
Set xmlDoc = Server.CreateObject("Msxml2.DOMDocument")
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.resolveExternals = False
fParsed = xmlDoc.loadXML(http.responseText)
If (Not fParsed) Then
Exit Do
End If
Set xmlErr = Nothing
Set xmlErr = xmlDoc.selectSingleNode("ProductInfo/ErrorMsg")
If (Not xmlErr Is Nothing) Then
Exit Do
End If
szOutput = xmlDoc.transformNode(xslDoc)
Response.Write szOutput
ipage = ipage + 1
If (ipage > nMaxPages) Then
Exit Do
End If
Loop
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Helpers
Function XMLify(sz)
XMLify = Replace(sz, "&", "&")
XMLify = Replace(XMLify, "<", "<")
XMLify = Replace(XMLify, ">", ">")
XMLify = Replace(XMLify, """", """)
XMLify = Replace(XMLify, "'", "'")
End Function
%>