Posted to tcl by dkf at Thu May 06 10:38:44 GMT 2010view raw

  1. package require http
  2. package require tdom
  3.  
  4. proc getItemTitles {url} {
  5. set t [http::geturl $url]
  6. set doc [dom parse [http::data $t]]
  7. http::cleanup $t
  8.  
  9. set titles {}
  10. foreach node [$doc selectNodes /channel/item/title] {
  11. lappend titles [$node text]
  12. }
  13.  
  14. $doc delete
  15. return $titles
  16. }
  17.  
  18. array set currentTitles {}
  19. proc fetchAndPrint {url} {
  20. global currentTitles
  21. set titles [getItemTitles $url]
  22. if {![info exist currentTitles($url)] || $currentTitles($url) ne $titles} {
  23. set currentTitles($url) $titles
  24. foreach t $titles {
  25. puts "Got item: $t"
  26. }
  27. } else {
  28. puts "no change"; # debug...
  29. }
  30. }
  31.  
  32. proc every {t script} {
  33. uplevel #0 $script
  34. after $t [info level 0]
  35. }
  36.  
  37. # 60k milliseconds is a minute
  38. every 60000 {fetchAndPrint http://rit.me.uk/livescore/cricrss.php}
  39. # Run the event loop
  40. vwait forever
  41.