'============================================================== ' RSS/RDF Syndicate Reader v0.95 ' http://www.kattanweb.com/webdev '-------------------------------------------------------------- ' Copyright(c) 2002, KattanWeb.com ' ' Change Log: '-------------------------------------------------------------- '============================================================== Const adOpenStatic = 3 Const adCmdTable = &H0002 Const adOpenKeyset = 1 Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 'const sqlServer = "dsn=rssfeeds;uid=rss_user;pwd=hOC2jBiQFxAOKy9PoUXDhoix8Ec7BRLfHkz7trh7ZMn27H_lESSkRk7m-jX5ibiN;" const sqlServer = "dsn=rssfeeds;uid=rss_user;pwd=rss;" Const rssInit = 1 Const rssError = 2 Const rssBadRSS= 3 Const rssOK = 0 Private Const BITS_TO_A_BYTE=8 Private Const BYTES_TO_A_WORD=4 Private Const BITS_TO_A_WORD=32 Private m_lOnBits(30) Private m_l2Power(30) m_lOnBits(0)=CLng(1) m_lOnBits(1)=CLng(3) m_lOnBits(2)=CLng(7) m_lOnBits(3)=CLng(15) m_lOnBits(4)=CLng(31) m_lOnBits(5)=CLng(63) m_lOnBits(6)=CLng(127) m_lOnBits(7)=CLng(255) m_lOnBits(8)=CLng(511) m_lOnBits(9)=CLng(1023) m_lOnBits(10)=CLng(2047) m_lOnBits(11)=CLng(4095) m_lOnBits(12)=CLng(8191) m_lOnBits(13)=CLng(16383) m_lOnBits(14)=CLng(32767) m_lOnBits(15)=CLng(65535) m_lOnBits(16)=CLng(131071) m_lOnBits(17)=CLng(262143) m_lOnBits(18)=CLng(524287) m_lOnBits(19)=CLng(1048575) m_lOnBits(20)=CLng(2097151) m_lOnBits(21)=CLng(4194303) m_lOnBits(22)=CLng(8388607) m_lOnBits(23)=CLng(16777215) m_lOnBits(24)=CLng(33554431) m_lOnBits(25)=CLng(67108863) m_lOnBits(26)=CLng(134217727) m_lOnBits(27)=CLng(268435455) m_lOnBits(28)=CLng(536870911) m_lOnBits(29)=CLng(1073741823) m_lOnBits(30)=CLng(2147483647) m_l2Power(0)=CLng(1) m_l2Power(1)=CLng(2) m_l2Power(2)=CLng(4) m_l2Power(3)=CLng(8) m_l2Power(4)=CLng(16) m_l2Power(5)=CLng(32) m_l2Power(6)=CLng(64) m_l2Power(7)=CLng(128) m_l2Power(8)=CLng(256) m_l2Power(9)=CLng(512) m_l2Power(10)=CLng(1024) m_l2Power(11)=CLng(2048) m_l2Power(12)=CLng(4096) m_l2Power(13)=CLng(8192) m_l2Power(14)=CLng(16384) m_l2Power(15)=CLng(32768) m_l2Power(16)=CLng(65536) m_l2Power(17)=CLng(131072) m_l2Power(18)=CLng(262144) m_l2Power(19)=CLng(524288) m_l2Power(20)=CLng(1048576) m_l2Power(21)=CLng(2097152) m_l2Power(22)=CLng(4194304) m_l2Power(23)=CLng(8388608) m_l2Power(24)=CLng(16777216) m_l2Power(25)=CLng(33554432) m_l2Power(26)=CLng(67108864) m_l2Power(27)=CLng(134217728) m_l2Power(28)=CLng(268435456) m_l2Power(29)=CLng(536870912) m_l2Power(30)=CLng(1073741824) Private Function LShift(lValue,iShiftBits) If iShiftBits=0 Then LShift=lValue Exit Function ElseIf iShiftBits=31 Then If lValue And 1 Then LShift=&H80000000 Else LShift=0 End If Exit Function ElseIf iShiftBits<0 Or iShiftBits>31 Then Err.Raise 6 End If If (lValue And m_l2Power(31-iShiftBits)) Then LShift=((lValue And m_lOnBits(31-(iShiftBits+1)))*m_l2Power(iShiftBits)) Or &H80000000 Else LShift=((lValue And m_lOnBits(31-iShiftBits))*m_l2Power(iShiftBits)) End If End Function Private Function RShift(lValue,iShiftBits) If iShiftBits=0 Then RShift=lValue Exit Function ElseIf iShiftBits=31 Then If lValue And &H80000000 Then RShift=1 Else RShift=0 End If Exit Function ElseIf iShiftBits<0 Or iShiftBits>31 Then Err.Raise 6 End If RShift=(lValue And &H7FFFFFFE)\m_l2Power(iShiftBits) If (lValue And &H80000000) Then RShift=(RShift Or (&H40000000\m_l2Power(iShiftBits-1))) End If End Function Private Function RotateLeft(lValue,iShiftBits) RotateLeft=LShift(lValue,iShiftBits) Or RShift(lValue,(32-iShiftBits)) End Function Private Function AddUnsigned(lX,lY) Dim lX4 Dim lY4 Dim lX8 Dim lY8 Dim lResult lX8=lX And &H80000000 lY8=lY And &H80000000 lX4=lX And &H40000000 lY4=lY And &H40000000 lResult=(lX And &H3FFFFFFF)+(lY And &H3FFFFFFF) If lX4 And lY4 Then lResult=lResult Xor &H80000000 Xor lX8 Xor lY8 ElseIf lX4 Or lY4 Then If lResult And &H40000000 Then lResult=lResult Xor &HC0000000 Xor lX8 Xor lY8 Else lResult=lResult Xor &H40000000 Xor lX8 Xor lY8 End If Else lResult=lResult Xor lX8 Xor lY8 End If AddUnsigned=lResult End Function Private Function F(x,y,z) F=(x And y) Or ((Not x) And z) End Function Private Function G(x,y,z) G=(x And z) Or (y And (Not z)) End Function Private Function H(x,y,z) H=(x Xor y Xor z) End Function Private Function I(x,y,z) I=(y Xor (x Or (Not z))) End Function Private Sub FF(a,b,c,d,x,s,ac) a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),ac)) a=RotateLeft(a,s) a=AddUnsigned(a,b) End Sub Private Sub GG(a,b,c,d,x,s,ac) a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),ac)) a=RotateLeft(a,s) a=AddUnsigned(a,b) End Sub Private Sub HH(a,b,c,d,x,s,ac) a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),ac)) a=RotateLeft(a,s) a=AddUnsigned(a,b) End Sub Private Sub II(a,b,c,d,x,s,ac) a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),ac)) a=RotateLeft(a,s) a=AddUnsigned(a,b) End Sub Private Function ConvertToWordArray(sMessage) Dim lMessageLength Dim lNumberOfWords Dim lWordArray() Dim lBytePosition Dim lByteCount Dim lWordCount Const MODULUS_BITS=512 Const CONGRUENT_BITS=448 lMessageLength=Len(sMessage) lNumberOfWords=(((lMessageLength+((MODULUS_BITS-CONGRUENT_BITS)\BITS_TO_A_BYTE))\(MODULUS_BITS\BITS_TO_A_BYTE))+1)*(MODULUS_BITS\BITS_TO_A_WORD) ReDim lWordArray(lNumberOfWords-1) lBytePosition=0 lByteCount=0 Do Until lByteCount >=lMessageLength lWordCount=lByteCount\BYTES_TO_A_WORD lBytePosition=(lByteCount Mod BYTES_TO_A_WORD)*BITS_TO_A_BYTE lWordArray(lWordCount)=lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage,lByteCount+1,1)),lBytePosition) lByteCount=lByteCount+1 Loop lWordCount=lByteCount\BYTES_TO_A_WORD lBytePosition=(lByteCount Mod BYTES_TO_A_WORD)*BITS_TO_A_BYTE lWordArray(lWordCount)=lWordArray(lWordCount) Or LShift(&H80,lBytePosition) lWordArray(lNumberOfWords-2)=LShift(lMessageLength,3) lWordArray(lNumberOfWords-1)=RShift(lMessageLength,29) ConvertToWordArray=lWordArray End Function Private Function WordToHex(lValue) Dim lByte Dim lCount For lCount=0 To 3 lByte=RShift(lValue,lCount*BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE-1) WordToHex=WordToHex & Right("0" & Hex(lByte),2) Next End Function Public Function MD5(sMessage) Dim x Dim k Dim AA Dim BB Dim CC Dim DD Dim a Dim b Dim c Dim d Const S11=7 Const S12=12 Const S13=17 Const S14=22 Const S21=5 Const S22=9 Const S23=14 Const S24=20 Const S31=4 Const S32=11 Const S33=16 Const S34=23 Const S41=6 Const S42=10 Const S43=15 Const S44=21 x=ConvertToWordArray(sMessage) a=&H67452301 b=&HEFCDAB89 c=&H98BADCFE d=&H10325476 For k=0 To UBound(x) Step 16 AA=a BB=b CC=c DD=d FF a,b,c,d,x(k+0),S11,&HD76AA478 FF d,a,b,c,x(k+1),S12,&HE8C7B756 FF c,d,a,b,x(k+2),S13,&H242070DB FF b,c,d,a,x(k+3),S14,&HC1BDCEEE FF a,b,c,d,x(k+4),S11,&HF57C0FAF FF d,a,b,c,x(k+5),S12,&H4787C62A FF c,d,a,b,x(k+6),S13,&HA8304613 FF b,c,d,a,x(k+7),S14,&HFD469501 FF a,b,c,d,x(k+8),S11,&H698098D8 FF d,a,b,c,x(k+9),S12,&H8B44F7AF FF c,d,a,b,x(k+10),S13,&HFFFF5BB1 FF b,c,d,a,x(k+11),S14,&H895CD7BE FF a,b,c,d,x(k+12),S11,&H6B901122 FF d,a,b,c,x(k+13),S12,&HFD987193 FF c,d,a,b,x(k+14),S13,&HA679438E FF b,c,d,a,x(k+15),S14,&H49B40821 GG a,b,c,d,x(k+1),S21,&HF61E2562 GG d,a,b,c,x(k+6),S22,&HC040B340 GG c,d,a,b,x(k+11),S23,&H265E5A51 GG b,c,d,a,x(k+0),S24,&HE9B6C7AA GG a,b,c,d,x(k+5),S21,&HD62F105D GG d,a,b,c,x(k+10),S22,&H2441453 GG c,d,a,b,x(k+15),S23,&HD8A1E681 GG b,c,d,a,x(k+4),S24,&HE7D3FBC8 GG a,b,c,d,x(k+9),S21,&H21E1CDE6 GG d,a,b,c,x(k+14),S22,&HC33707D6 GG c,d,a,b,x(k+3),S23,&HF4D50D87 GG b,c,d,a,x(k+8),S24,&H455A14ED GG a,b,c,d,x(k+13),S21,&HA9E3E905 GG d,a,b,c,x(k+2),S22,&HFCEFA3F8 GG c,d,a,b,x(k+7),S23,&H676F02D9 GG b,c,d,a,x(k+12),S24,&H8D2A4C8A HH a,b,c,d,x(k+5),S31,&HFFFA3942 HH d,a,b,c,x(k+8),S32,&H8771F681 HH c,d,a,b,x(k+11),S33,&H6D9D6122 HH b,c,d,a,x(k+14),S34,&HFDE5380C HH a,b,c,d,x(k+1),S31,&HA4BEEA44 HH d,a,b,c,x(k+4),S32,&H4BDECFA9 HH c,d,a,b,x(k+7),S33,&HF6BB4B60 HH b,c,d,a,x(k+10),S34,&HBEBFBC70 HH a,b,c,d,x(k+13),S31,&H289B7EC6 HH d,a,b,c,x(k+0),S32,&HEAA127FA HH c,d,a,b,x(k+3),S33,&HD4EF3085 HH b,c,d,a,x(k+6),S34,&H4881D05 HH a,b,c,d,x(k+9),S31,&HD9D4D039 HH d,a,b,c,x(k+12),S32,&HE6DB99E5 HH c,d,a,b,x(k+15),S33,&H1FA27CF8 HH b,c,d,a,x(k+2),S34,&HC4AC5665 II a,b,c,d,x(k+0),S41,&HF4292244 II d,a,b,c,x(k+7),S42,&H432AFF97 II c,d,a,b,x(k+14),S43,&HAB9423A7 II b,c,d,a,x(k+5),S44,&HFC93A039 II a,b,c,d,x(k+12),S41,&H655B59C3 II d,a,b,c,x(k+3),S42,&H8F0CCC92 II c,d,a,b,x(k+10),S43,&HFFEFF47D II b,c,d,a,x(k+1),S44,&H85845DD1 II a,b,c,d,x(k+8),S41,&H6FA87E4F II d,a,b,c,x(k+15),S42,&HFE2CE6E0 II c,d,a,b,x(k+6),S43,&HA3014314 II b,c,d,a,x(k+13),S44,&H4E0811A1 II a,b,c,d,x(k+4),S41,&HF7537E82 II d,a,b,c,x(k+11),S42,&HBD3AF235 II c,d,a,b,x(k+2),S43,&H2AD7D2BB II b,c,d,a,x(k+9),S44,&HEB86D391 a=AddUnsigned(a,AA) b=AddUnsigned(b,BB) c=AddUnsigned(c,CC) d=AddUnsigned(d,DD) Next MD5=LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d)) End Function function stripBadChars(istr) goodchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" l = len(istr) outstr = "" for t= 1 to l if instr(goodchars,mid(istr,t,1)) > 0 then outstr = outstr & mid(istr,t,1) wscript.echo mid(istr,t,1) next stripBadchars = outstr end function class kwRSS_reader Private Items() Private CurrentItem, TotalItems Public ChannelRSSURI, ChannelURL, ChannelTitle, ChannelDesc, ChannelLanguage Public ImageTitle, ImageLink, ImageURL Public TextInputURL, TextInputTitle, TextInputDesc, TextInputName public Status '>>>>>>>> Setup Initialize event, called automtially when creating an instant of this class using ' Set rss = new kwRSS_reader Private Sub Class_Initialize CurrentItem = -1 TotalItems = -1 Redim Items(2, 10) '1st dimension = item's title/link/desc, 2nd dimension the item number Status = rssInit End Sub '>>>>>>>> Setup Terminate event, called automtially when killing an instant of this class using ' Set rss = nothing Private Sub Class_Terminate Erase Items End Sub '>>>>>>>> Load an RSS/RDF file and process it. Public Function ParseLocation(URL) rssname = stripBadChars(url) wscript.echo "Rssname : " & rssname rssupdate = true 'application(rssname & "time") = cdate("1974-10-24") wscript.echo "Just about to retrieve the xml" ChannelRSSURI = URL set xmlObj = wscript.createobject("Msxml2.DOMDocument.3.0") set xmlhttp= wscript.createobject("Msxml2.XMLHTTP.3.0") 'var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0"); wscript.echo "XML objects created...." ' xmlObj.validateOnParse = false ' xmlObj.async = false ' xmlObj.preserveWhiteSpace = false ' ' xmlhttp.open "GET", ChannelRSSURI, False ' xmlhttp.send ' rssXML_Data = xmlhttp.responseXML.xml wscript.echo "retrieved news " xmlObj.validateOnParse = false xmlObj.async = false xmlObj.preserveWhiteSpace = false xmlhttp.open "GET", ChannelRSSURI, False xmlhttp.send rssXML_Data = xmlhttp.responseXML.xml ' rssXML_Data = application(rssname & "xml") if len(rssXML_Data) = 0 then Status = rssError wscript.echo "" & vbcrlf wscript.echo "RSS Status : " & status & vbcrlf Exit Function end if ' --------- PHP-Nuke & PostNuke compatabilaty -------------------------------- rssXML_Data = replace(rssXML_Data, "", "rss-0.91.dtd""-->") ' ---------------------------------------------------------------------------- xmlObj.loadXML(rssXML_Data) If xmlObj.parseError.errorCode = 0 then ValidLocation = true else ValidLocation = false end if set xmlhttp = nothing if not ValidLocation then Status = rssBadRSS wscript.echo "" & vbcrlf 'response.flush Exit Function end if set rootNode = xmlObj.selectSingleNode("rdf:RDF") if rootNode is nothing then set rootNode = xmlObj.selectSingleNode("rss") if rootNode is nothing then Status = rssError wscript.echo "" & vbcrlf 'response.flush else Reader rootNode, 0.91 end if else Reader rootNode, 1.0 end if set rootNode = nothing set xmlObj = nothing Status = rssOK End Function '>>>>>>>> Private sub to read the RSS/RDF according to its version Private Sub Reader(rootNode, ver) itemNum = -1 set SingleNode = rootNode.selectSingleNode("//channel/title") if Not SingleNode is nothing then ChannelTitle = SingleNode.text set SingleNode = rootNode.selectSingleNode("//channel/link") if Not SingleNode is nothing then ChannelURL = SingleNode.text set SingleNode = rootNode.selectSingleNode("//channel/description") if Not SingleNode is nothing then ChannelDesc = SingleNode.text set SingleNode = rootNode.selectSingleNode("//channel/language") if Not SingleNode is nothing then ChannelLanguage = SingleNode.text if ver = 1 then set child = rootNode.selectSingleNode("image") else set child = rootNode.selectSingleNode("//channel/image") end if if not child is nothing then set SingleNode = child.selectSingleNode("title") if Not SingleNode is nothing then ImageTitle = SingleNode.text set SingleNode = child.selectSingleNode("link") if Not SingleNode is nothing then ImageLink = SingleNode.text set SingleNode = child.selectSingleNode("url") if Not SingleNode is nothing then ImageURL = SingleNode.text end if set child = nothing if ver = 1 then set child = rootNode.selectSingleNode("textinput") else set child = rootNode.selectSingleNode("//channel/textinput") end if if not child is nothing then set SingleNode = child.selectSingleNode("title") if Not SingleNode is nothing then TextInputTitle = SingleNode.text set SingleNode = child.selectSingleNode("description") if Not SingleNode is nothing then TextInputDesc = SingleNode.text set SingleNode = child.selectSingleNode("name") if Not SingleNode is nothing then TextInputName = SingleNode.text set SingleNode = child.selectSingleNode("link") if Not SingleNode is nothing then TextInputURL = SingleNode.text end if set child = nothing set children = rootNode.selectNodes("//item") TotalItems = children.length for each child in children itemNum = itemNum + 1 if itemNum > ubound(Items, 2) then Redim Preserve Items(2, ubound(Items, 2) + 5) end if for each ItemChild in child.ChildNodes select case ItemChild.baseName case "title" Items(0, itemNum) = ItemChild.text case "link" Items(1, itemNum) = ItemChild.text case "description" Items(2, itemNum) = ItemChild.text end select next next if TotalItems > 0 then CurrentItem = 0 End Sub '>>>>>>>> Returns the title of the the current item Public Function GetTitle() GetTitle = Items(0, CurrentItem) End Function '>>>>>>>> Returns the url/link of the the current item Public Function GetLink() GetLink = Items(1, CurrentItem) End Function '>>>>>>>> Returns the description of the the current item Public Function GetDesc() GetDesc = Items(2, CurrentItem) End Function '>>>>>>>> Goes to the next item Public Function MoveNext CurrentItem = CurrentItem + 1 End Function '>>>>>>>> Goes to the first item Public Function FirstItem if TotalItems > 0 then CurrentItem = 0 else CurrentItem = -1 end if End Function '>>>>>>>> Checks if the current location is a valid item or not Public Function ValidItem if CurrentItem > -1 and CurrentItem < TotalItems then ValidItem = true else ValidItem = false end if End Function '>>>>>>>> Checks if we are at EOF or not Public Function EOF if CurrentItem < TotalItems then EOF = false else EOF = true end if End Function '>>>>>>>> Returns status of the class Public Function GetStatus() GetStatus = Status end function '>>>>>>>> Returns Image provided in the RSS/RDF file as a linked image. Public Function GetImage() if ImageURL <> "" then if ImageLink <> "" then GetImage = "" GetImage = GetImage & "" if ImageLink <> "" then GetImage = GetImage & "" else GetImage = "" end if end function '>>>>>>>> Returns the code for the TextInput provided in the RSS/RDF file. Public Function GetTextInput() if TextInputURL <> "" then GetTextInput = "
" & vbCrLf & _ "" & vbCrLf & _ "" & vbCrLf & _ " " & vbCrLf & _ "" & vbCrLf & _ "" & vbCrLf & _ " " & vbCrLf & _ "" & vbCrLf & _ "" & vbCrLf & _ " " & vbCrLf & _ "" & vbCrLf & _ "
" & TextInputDesc & "
" & vbCrLf & _ "
" else GetTextInput = "" end if end function end class sub showRSSNewsFeeds(rssNewsFeed,id) ' Example for reading RSS or RDF Site Summary files. ' The file is commented, to be as a simple manual as i hate to write manuals :) ' First thing to do is to include the rss reader file, as the first line above. ' First step is to create an instance of the class Set RSS = new kwRSS_reader ' rssURL = "http://feeds.engadget.com/weblogsinc/engadget" rssUrl = rssNewsFeed wscript.echo rssurl ' Second step is to call the RSS parser with a valid RSS address. ' The address must be a full qualified internet address, not relative. ' Example on a valid address: http://www.kattanweb.com/webdev/rss.asp ' on error resume next RSS.ParseLocation(rssURL) If Err.Number <> 0 Then WScript.Echo "Problem with the news feed" ' Here you can get the needed variables. ' Available variables are: ' ChannelRSSURI, ChannelURL, ChannelTitle, ChannelDesc, ChannelLanguage ' ImageTitle, ImageLink, ImageURL ' TextInputURL, TextInputTitle, TextInputDesc, TextInputName ' for more information about each variable are in the writer example "write_rss.asp ' WScript.Echo "

" & cleanEllipse(RSS.ChannelTitle,20) & "

" ' WScript.Echo "" 'boxCaption = "" & cleanEllipse(RSS.ChannelTitle,20) & "" wscript.echo "RSS.status : " & RSS.status & "
" if rss.status = 0 then 'call MakeHeadedBox(boxcaption, "100%",0) ' Some function available: ' [rss].FirstItem: will go to the first item in the rss file (not needed usually, as when the rss is parsed, ' the pointer will be on the first item. ' [rss].ValidItem: true/false according if the current item is a valid one (or exist) rssItemCount = 0 Set objConn = wscript.CreateObject("ADODB.Connection") Set objRec = wscript.CreateObject("ADODB.Recordset") Set objAddConn = wscript.CreateObject("ADODB.Connection") ' Set objAddRec = wscript.CreateObject("ADODB.Recordset") objConn.Open sqlServer objAddConn.Open sqlServer objAddConn.begintrans ' objAddRec.Open "ustructrssitems",objAddConn , adOpenStatic, adLockPessimistic, adCmdTable 'adOpenKeyset, adLockBatchOptimistic 'objAddRec.Open "ustructrssitems",objAddConn , adOpenKeyset, adLockBatchOptimistic Set objAddRec= wscript.CreateObject("ADODB.Recordset") objAddRec.ActiveConnection = objAddConn objAddRec.CursorType = adOpenKeyset objAddRec.LockType = adLockBatchOptimistic objAddRec.Source = "ustructrssitems" objAddRec.Open while not RSS.EOF ' function available for items: ' [rss].GetTitle: gets the title of the item ' [rss].GetLink: gets the link of the item ' [rss].GetDesc: gets the description of the item %> sqlstr = "select count(*) as cnt from ustructrssitems where titlehash = '" & MD5(RSS.GetTitle ) & "';" wscript.echo sqlstr set objRec = objConn.execute(sqlstr) if not objrec.bof and not objrec.eof then itemcount = objrec("cnt") else wscript.echo "fuck" end if wscript.echo"itemcount : " & itemcount if cint(itemcount) = 0 then wscript.echo "Adding..." ' addnewItem(objAddRec,id,rss.gettitle,rss.getlink,rss.getdesc) objAddRec.addnew objAddRec("feedid") = id objAddRec("caption") = rss.gettitle objAddRec("link") = rss.getlink objAddRec("bodytext") = rss.getdesc objAddRec("titlehash") = md5(rss.gettitle) objAddRec("bodyhash") = md5(rss.getdesc) objAddRec("readdt") = sqllongdate(now) objAddRec("moddt") = sqllongdate(now) If Err.Number <> 0 Then wscript.echo "Insert Failed: " & Err.number & ", " & Err.Description end if end if 'objrec.clear RSS.MoveNext wend objAddRec.Updatebatch objAddConn.committrans objAddRec.close set objAddRec = nothing objAddConn.close set objAddConn = nothing objrec.close set objrec = nothing objconn.close set objconn = nothing sqlstr = "update ustructrssfeeds set feedname='" & rss.channeltitle & "', feednamehash='" & md5(rss.channeltitle) & "',lastupdate='" & sqllongdate(now) & "' where feedid=" & id& ";" wscript.echo sqlstr Set objConn = wscript.CreateObject("ADODB.Connection") objConn.Open sqlServer objConn.execute(sqlstr) objconn.close set objconn = nothing ' [rss].GetTextInput: gets the textinput search box, using a simple table. ' if you don't want the default form, make your own one using the TextInputURL, TextInputTitle, ' TextInputDesc, TextInputName variables if RSS.GetTextInput <> "" then wscript.echo RSS.GetTextInput end if ' [rss].GetImage: gets the image with link (if available) ' if you don't want the default style, make your own one using the ImageTitle, ImageLink, ImageURL variables if RSS.GetImage <> "" then ' WScript.Echo RSS.GetImage end if ' Setting RSS to nothing will free the memory Set RSS = nothing 'call closebox() 'response.flush end if end sub function SQLLongDate(olddate) dy = day(cdate(olddate)) mn = month(cdate(olddate)) yr = year(cdate(olddate)) mh = hour(cdate(olddate)) mm = minute(cdate(olddate)) ss = second(cdate(olddate)) if len(mh) <= 1 then mh = "0" & mh if len(mm) <= 1 then mm = "0" & mm if len(ss) <= 1 then ss = "0" & ss 'response.write "Day : " & dy & "
" & vbcrlf 'response.write "Month : " & mn & "
" & vbcrlf 'response.write "Year : " & yr & "
" & vbcrlf 'mv = mn & "/" & dy & "/" & yr mv= yr & "-" & mn & "-" & dy & " " mv = mv & mh & ":" & mm & ":" & ss SQLLongDate = mv end function sub addnewitem(sqlconnection,feedid,itemtitle,itemlink,itemdesc) wscript.echo "Adding..." sqlconnection.addnew sqlconnection("feedid") = feedid sqlconnection("caption") = itemtitle sqlconnection("link") = itemlink sqlconnection("bodytext") = itemdesc sqlconnection("titlehash") = md5(itemtitle) sqlconnection("bodyhash") = md5(itemdesc) sqlconnection("readdt") = sqllongdate(now) sqlconnection("moddt") = sqllongdate(now) end sub function StripHTML(ByRef asHTML) Dim loRegExp ' Regular Expression Object ' Create built In Regular Expression object Set loRegExp = New RegExp loRegExp.Global = True ' Set the pattern To look For HTML tags loRegExp.Pattern = "<[^>]*>" ' Return the original String stripped of HTML StripHTML = loRegExp.Replace(asHTML, "") ' Release object from memory Set loRegExp = Nothing End function function numbersOnly(ival) notallwd = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!£$%^&*()_+=[]{}#~<>?/\`'.," allwd = "01234567890" l = len(ival) ws = "" for t = 1 to l cc = mid(ival,t,1) if instr(allwd,cc) > 0 then ws = ws & cc next numbersonly = ws end function sub GatherRSS() Set objConn = wscript.CreateObject("ADODB.Connection") Set objRec = wscript.CreateObject("ADODB.Recordset") objConn.Open sqlServer sqlstr = "select * from ustructrssfeeds where lastupdate < '" & sqllongdate(dateadd("h",-1,now)) & "' or lastupdate is null;" wscript.echo sqlstr set objRec = objConn.execute(sqlstr) if not objRec.bof and not objrec.eof then do while not objrec.eof wscript.echo "GO!" feedid = objrec("feedid") feedurl = objrec("feedurl") call showRSSNewsFeeds(feedurl,feedid) objrec.movenext loop end if end sub sub GetNew() ChannelRSSURI = "http://www.taggrr.com/updaterss.asp" set xmlhttp= wscript.createobject("Msxml2.XMLHTTP.3.0") xmlhttp.open "POST", ChannelRSSURI, False xmlhttp.send WScript.Echo xmlhttp.responsetext end sub WScript.Echo "RSS UpdaterII" call GetNew()