home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Internet / IRC / AVSearch.lha / AVSearch / AVSearch.amirx next >
Encoding:
Text File  |  2001-03-18  |  3.4 KB  |  146 lines

  1. /* Search Altavista thru Amirc or CLI.  © 2001 by Purp|eT. */
  2. /* $VER V2.0 Bug reports? suggestions? Mailto: purplet@dingoblue.net.au        */
  3.  
  4. /*   P R E F S    A R E A  */
  5.  
  6.  
  7. MaxHits = 5
  8.  
  9. SeparateOutput   = "N"    /*    [ Y/N ] */
  10. DeleteTempAfter  = "Y"    /*    [ Y/N ] */
  11.  
  12.  
  13. /*     E N D    P R E F S     */
  14.  
  15.  
  16.  
  17.  
  18. /* Don't Edit Anything Below This Point!! */
  19.  
  20. Options results
  21. parse arg SearchString;NL='0a'x;ES= d2c(27);Bold = d2c(2);TC = 1
  22.  
  23. if searchstring = "/FORCE" then do;setclip(AVSearch,"");exit;end
  24.  
  25.  
  26. amirc_bold='02'x
  27. amirc_uline='1F'x
  28. AV_Plus = '%2B'
  29. cr=''x
  30.  
  31. Tags    ="<B> </B> <U> </U> <BR>"
  32. NewTags ="amirc_bold amirc_bold amirc_uline amirc_uline cr"
  33.  
  34. Tags2 = "+"
  35. NewTags2 = "AV_Plus"
  36.  
  37. CheckIt = getclip(AVSearch)
  38.  
  39. If CheckIt = "RUN" then DO
  40.    techo("Search already in progress. Wait for current search to finish.")
  41.    Exit
  42. End
  43.  
  44. Setclip(AVSearch,"RUN")
  45.  
  46. If SearchString = "" then DO
  47.    Techo("Usage: /RX AVSearch <Search Keywords>")
  48.    Call EndProg
  49. End
  50.  
  51. If MaxHits > 10 then MaxHits = 10
  52. If MaxHits < 1 then MaxHits = 1
  53.  
  54. Techo("Searching for "bold""SearchString""Bold" on AltaVista, MaxHits = "bold""MaxHits""bold", Please wait...")
  55.  
  56. SearchString2 = SearchString
  57.  
  58. desc = SearchString2
  59.  
  60. DO UNTIL Tags2=''
  61.  PARSE VAR Tags2 Tag Tags2
  62.  PARSE VAR NewTags2 NewTag NewTags2
  63.  CALL TagCleanup(UPPER(Tag),NewTag)
  64. END
  65.  
  66. SearchString2 = desc
  67.  
  68. SearchString2 = Translate(SearchString2,"+"," ")
  69.  
  70. If Open(File1,'TCP:www.altavista.com/80','RW') = 0 then DO
  71.    Techo("Error: TCP: Error")
  72.    Call EndProg
  73. End
  74.  
  75. Call writeln(file1,'GET /cgi-bin/query?pg=q&sc=on&hl=on&act=2006&par=0&q='SearchString2'&search.x=21&search.y=6&kl=XX&stype=stext HTTP/1.0')
  76. Call writeln(file1,'User-Agent: MSIE/6.0')
  77. Call writeln(file1,'Accept: */*;q=1')
  78. Call writeln(file1,'Host: www.altavista.com')
  79. Call writeln(file1,'Referer: http://www.altavista.com/')
  80. Call writeln(file1,'')
  81.  
  82. call time(R)
  83.  
  84. Do i = 1 to MaxHits
  85.    HLine = readln(file1)
  86.    Do until pos(">"i".</",HLine) ~=0|time(E) >20
  87.       HLine = ReadLn(File1)
  88.       If Find(HLine,"found no document matching your") ~=0 then DO
  89.          Techo("No matches found for "Bold""SearchString)
  90.          Call EndProg
  91.       End
  92.       If pos("</HTML>",upper(HLine)) ~=0 then DO
  93.          Call EndProg
  94.       End
  95.    End
  96.    NextLine = Readln(File1)
  97.        ULine = substr(NextLine, Pos(upper("http://"),upper(NextLine)) , Pos('"',NextLine,Pos(upper("http://"),upper(NextLine)))-pos(upper("http://"),upper(NextLine))  )
  98.    techo(bold""i". "Bold""ULine)
  99.  
  100.    /* Begin Snorslex's Sheer Coding Brilliance ;-) */
  101.  
  102.    DO UNTIL Tags=''
  103.       PARSE VAR Tags Tag Tags
  104.       PARSE VAR NewTags NewTag NewTags
  105.       CALL TagCleanup(UPPER(Tag),NewTag)
  106.    END
  107.  
  108.    /* End Snorslex's Sheer Coding Brilliance ;-) */
  109.  
  110.    If Upper(SeparateOutput) = "Y" then Techo(Bold""Bold)
  111. End
  112. Call EndProg
  113. Exit
  114.  
  115. EndProg:
  116. Close(File1)
  117. Techo(Bold"Search Complete")
  118. SetClip(AVSearch,"")
  119. If Upper(DeleteTempAfter) = "Y" then DO
  120.    address command 'C:Delete >nil: 'AVSTempFile
  121. End
  122. Exit
  123. Return
  124.  
  125. Techo:
  126. parse arg EchoString
  127. "ECHO P="d2c(27)"b«AVSearch» C="TC" "EchoString
  128. say EchoString
  129. Return 0
  130.  
  131. /* Begin Snorslex's Sheer Coding Brilliance (Part II) :) */
  132.  
  133. TagCleanup: 
  134.    curr_tag=ARG(1)
  135.    curr_newtag=ARG(2)
  136.    DO FOREVER
  137.       posi=POS(curr_tag,UPPER(desc))
  138.       IF posi>0 THEN DO
  139.          desc=LEFT(desc,posi-1)||VALUE(curr_newtag)||SUBSTR(desc,posi+LENGTH(curr_tag),LENGTH(desc)-posi)
  140.       END
  141.       ELSE LEAVE
  142.    END
  143. RETURN
  144.  
  145. /* End Snor... you get the picture :) */
  146.