All pastes #349475 Raw Edit

Someone

public text v1 · immutable
·published 2007-02-10 20:55 UTC
rendered paste body
package require http

bind pub - .nhl nhl

proc nhl {n u h c t} {

	if {$t == ""} { set search "*"
	} else {
		set arg [split $t]
		if {[llength $arg] != 1} { putserv "PRiVMSG $c :Wrong arguments used, try '.nhl \[search-term\]'"; return
		} else { set search "*[join [lindex $arg 0]]*" }
	}

	set x [::http::geturl http://mobileapp.espn.go.com/nhl/mp/html/scoreboard]

	set e [split [::http::data $x] \n]

	# it seems all the data is on the first line of the html, so we'll just use that
	set e [lindex $e 0]
	set line_found 0

	set matches ""

	set time ""
	set score ""

	set count 0

	# brings us closer to the data
	regexp {</b><br><font size=1>.+</font><br><a href=".+">.+</a><br>} $e e

	# pulls out each game of data
	while { [regexp {<font size=1>.+</font><br><a href=".+">.+</a><br>} $e matches] && $count < 100} {\

		incr count

		set e $matches 

		if {[string match -nocase $search $matches]} {
			set myRegExp [regexp {<font size=1>(.+?)</font><br><a href=".+?">(.+?)</a><br>} $matches matches time score]

			if {$myRegExp && [string match -nocase $search $matches]} {
				set line_found 1

				# if we have scores and not TEAM at TEAM, make the scores bold
				if { ![regexp {[A-z0-9\.' ]+? at [A-z0-9\.' ]+?} $score] } {
					set team1 ""
					set team2 ""
					set score1 ""
					set score2 ""

					regexp {([A-z0-9\.' ]+?) ([0-9]+?) ([A-z0-9\.' ]+?) ([0-9]+?)} $score _ team1 score1 team2 score2
					regsub -all { / } $time {/} time
					set score "$team1 \002$score1\002 $team2 \002$score2\002"

					set score [string toupper $score]
					set time [string toupper $time]

					# print out time and score for this line
					puthelp "privmsg $c :$score ($time)"

				} elseif { $search != "*" } {

					set score [string toupper $score]
					set time [string toupper $time]

					# print out time and score for this line
					puthelp "privmsg $c :$score ($time)"
				}
			}
		}
		# gives us the remaining games to loop through, without the one we've just printed
		# if there isn't anymore, break out of while loop
		set pattern {<font size=1>.+?</font><br><a href=".+?">.+?</a><br>(<font size=1>.+</font><br><a href=".+">.+</a><br>$)}
		if { ![regexp $pattern $e _ e] } {
			
			if {$line_found == 0} {
				putserv "privmsg $c :There are no current scores for today."
			}

			break
		}
	}
}