Re: Re: Re: Re: Re: Untitled

By Tacky Crow, 11 Years ago, written in TCL/iTCL, viewed 576 times. This paste is a reply to Re: Re: Re: Re: Untitled by Ungracious Prairie Dog
URL http://pb.stoleyour.com/view/339a1eda Embed
Download Paste or View RawExpand paste to full width of browser
  1. package require http
  2. package require json
  3.  
  4. bind pub - !gw2 pub:gw2Stats
  5.  
  6. namespace eval gw2Utils {
  7.  
  8.         set tsvPath "tsvgw2/"
  9.        
  10.         proc parsePairs { tsvName } {
  11.                 set f [open [file nativename $gw2Utils::tsvPath$tsvName] r]
  12.                 while { [eof $f] == 0 } {
  13.                         set splitLine [split [gets $f] "\t"]
  14.                         set pairMap([lindex $splitLine 0]) [lindex $splitLine 1]
  15.                 }
  16.                
  17.                 return [array get pairMap]
  18.         }
  19.        
  20.         proc insertCommas { num {sep ,} } {
  21.                 while { [regsub {^([-+]?\d+)(\d\d\d)} $num "\\1$sep\\2" num] } {}
  22.                 return $num
  23.         }
  24.        
  25.         array set serverID [parsePairs "gw2servers.tsv"]
  26. }
  27.  
  28. proc pub:gw2Stats { nick uhost handle channel arg } {
  29.         set urlMatch "http://gw2stats.net/api/matches.json"
  30.         set urlRank "http://gw2stats.net/api/ratings.json"
  31.         set jsonMatch [http::data [http::geturl $urlMatch]]
  32.         set jsonRank [http::data [http::geturl $urlRank]]
  33.         set apiMatch [json::json2dict $jsonMatch]
  34.         set apiRank [json::json2dict $jsonRank]
  35.         set argList [regexp -inline -all -- {\S+} $arg]
  36.         set command [string trim [string tolower [lindex $argList 0]]]
  37.  
  38.         if { $command == "match" } {
  39.                 set region [string trim [string tolower [lindex $argList 1]]]
  40.                 set group [string trim [string tolower [lindex $argList 2]]]
  41.                
  42.                 if { ![dict exists [dict get $apiMatch "region"] $region] } {
  43.                         putserv "PRIVMSG $channel :$nick: Invalid region '$region'!"
  44.                         return
  45.                 }
  46.                
  47.                 if { [catch {set worlds [dict get [lindex [dict get [dict get $apiMatch "region"] $region] [expr { $group - 1 }]] "worlds"] } e] } {
  48.                         putserv "PRIVMSG $channel :$nick: Invalid group '$group'!"
  49.                         return
  50.                 }
  51.  
  52.                 set output ""
  53.                 foreach world $worlds {
  54.                         set name [dict get $world "name"]
  55.                         set score [dict get $world "score"]
  56.                         set output "$output$name: $score, "
  57.                 }
  58.                
  59.                 set output [string range $output 0 end-2]
  60.                
  61.                 putserv "PRIVMSG $channel :$nick: $output"
  62.         }
  63.        
  64.         if { $command == "rank" } {
  65.                 set region [string trim [string tolower [lindex $argList 1]]]
  66.                 set server [string trim [string tolower [lindex $argList 2]]]
  67.                
  68.                 if { ![dict exists $apiRank $region] } {
  69.                         putserv "PRIVMSG $channel :$nick: Invalid region '$region'!"
  70.                         return
  71.                 }
  72.                
  73.                 if { [lsearch [array names gw2Utils::serverID] $server] > -1 && $server != "" } {
  74.                         set serverCode $gw2utils::serverID($server)
  75.                         set stats [dict get [dict get [dict get [dict get $apiRank $region] "ratings"] $serverCode] "data"]
  76.                         set rank [dict get $stats "current_rank"]
  77.                         set rating [dict get $stats "current_rating"]
  78.                         putserv "PRIVMSG $channel :$nick: $server $rank $rating"
  79.                 }
  80. }

Replies to Re: Re: Re: Re: Re: Untitled rss

Title Name When
Re: Re: Re: Re: Re: Re: Untitled Perl Bushbaby 11 Years ago.

Reply to "Re: Re: Re: Re: Re: Untitled"

Here you can reply to the paste above