# auction.tcl # 1. Monitors changes in a specific online auction page # 2. Alerts you when a new bid has been made # 3. Offers to launch Web browser so you can act on latest bid source fileLib.tcl source getFromWeb.tcl source parse.tcl # CREATE WIDGETS FOR USER INTERFACE font create titleFont -family times -size 18 font create statusFont -family times -size 9 label .lTitle -text "Auction Watcher" -font titleFont label .lURLlabel -text "Enter URL of specific auction page to monitor" entry .eURL -width 55 label .lStatus -text "Waiting to begin..." -font statusFont button .bStart -text "Press to Monitor" -command monitor # PUT USER INTERFACE INTO "GRIDDED" WINDOW grid config .lTitle -column 0 -row 0 -columnspan 2 -sticky w grid config .lURLlabel -column 0 -row 1 -columnspan 3 -sticky w grid config .eURL -column 0 -row 2 -columnspan 3 -padx 5 grid config .bStart -column 0 -row 3 -pady 3 -sticky w grid config .lStatus -column 0 -row 4 -columnspan 3 -sticky w # MONITOR URL CHANGES proc monitor { } { # GET ORIGINAL COPY OF SITE set orgURL [.eURL get] .lStatus configure -text "Getting original copy of $orgURL" getFromWeb $orgURL html parse html "<BODY" 2000 "</BODY>" parsed.file set orgFile [ readEntireFile parsed.file] # IDLE PERIOD SET TO 120 SECONDS OR TWO MINUTES set idlePeriod 120 set compareLoop 1 while { $compareLoop } { for { set timer $idlePeriod} {$timer > 0} {incr timer -1} { .lStatus configure -text "Seconds until next update: $timer" update # WAIT ONE SECOND after 1000 } # GET NEXT COPY OF WEB PAGE .lStatus configure -text "Getting compare copy of $orgURL" getFromWeb $orgURL html.temp parse html.temp "<BODY" 2000 "</BODY>" parsed.file set compFile [ readEntireFile parsed.file] # PROMPT USER IF THE WEB PAGE CHANGED if { [string compare $orgFile $compFile] != 0 } { set response [tk_messageBox \ -icon question -type okcancel \ -message "A new bid was detected. \n \ Press OK to view bid." \ -title "New Bid Detected" ] if { $response == "ok" } { eval exec "netscape $orgURL" } } } }