Folding@Home Stats

By Wade on May 27, 2012

Screenshots

This snippet pulls a team and users stats from the Extreme Overclocking API, as such your team needs to be added to the Extreme Overclocking site in order for the stats to work. It can be found here http://folding.extremeoverclocking.com/ (Though i think they've recently started syncing all team data, not only those who have submitted their team to the site)

More information about Folding@Home can be found here http://folding.stanford.edu

Simply change the 2 vars in the fah alias to your username and team number respectively.

Use:

To lookup your own stats:

/fah

To lookup another users stats:

/fah <username> <team number>

You can customize the colours and formatting by editing the fahlogo, fahblogo, fahc1 and fahc2 aliases.

Suggestions/Improvements/Bugs welcome :)

Attached screenshot seems to be really small, heres the fullsize http://img.iwader.co.uk/Screenshot-2012-05-27_18.52.39.png

alias fah {
  var %user <your_username>, %team <your_team_number>

  var %fuser $iif($2,$1,%user), %fteam $iif($2,$2,%team), %sock $+(fah.,%fuser,.,%fteam)
  if ($sock(%sock)) { closesock %sock }
  sockopen %sock folding.extremeoverclocking.com 80
  sockmark %sock %fuser %fteam
}

alias fahlogo { return $+(06,$chr(40),14,$1-,06,$chr(41),) }
alias fahblogo { return $+(06,$chr(91),14,$1-,06,$chr(93),) }
alias fahc1 { return $+(06,$1-,) }
alias fahc2 { return $+(14,$1-,) }

on *:SOCKOPEN:fah.*: {
  sockwrite -nt $sockname GET $+(/xml/user_summary.php?un=,$gettok($sock($sockname).mark,1,32),&t=,$gettok($sock($sockname).mark,2,32)) HTTP/1.0
  sockwrite -nt $sockname Host: folding.extremeoverclocking.com
  sockwrite -nt $sockname $crlf
  sockmark $sockname
}

on *:SOCKREAD:fah.*: {
  var %read
  sockread %read
  if ($regex(%read,/Invalid TeamID \/ TeamID Not Found/Si)) {
    sockmark $sockname Invalid TeamID
  }
  elseif ($regex(%read,/Invalid UserID Or User Name!/Si)) {
    sockmark $sockname Invalid Username
  }
  elseif ($regex(%read,/<Team_Name>(.*)<\/Team_Name>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<TeamID>(\d+)<\/TeamID>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Rank>(\d+)<\/Rank>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124) 
  }
  elseif ($regex(%read,/<Change_Rank_24hr>-?(\d+)<\/Change_Rank_24hr>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Change_Rank_7days>-?(\d+)<\/Change_Rank_7days>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Users_Active>(\d+)<\/Users_Active>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Users>(\d+)<\/Users>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Points_24hr_avg>(\d+)<\/Points_24hr_avg>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Points_Today>(\d+)<\/Points_Today>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Points_Week>(\d+)<\/Points_Week>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Points>(\d+)<\/Points>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<WUs>(\d+)<\/WUs>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<User_Name>(.*)<\/User_Name>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Team_Rank>(\d+)<\/Team_Rank>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Overall_Rank>(\d+)<\/Overall_Rank>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
  elseif ($regex(%read,/<Last_Update_Unix_TimeStamp>(\d+)<\/Last_Update_Unix_TimeStamp>/Si)) {
    sockmark $sockname $instok($sock($sockname).mark,$regml(1),0,124)
  }
}

on *:SOCKCLOSE:fah.*: {
  if ($sock($sockname).mark == Invalid TeamID) {
    msg $active $fahlogo(Folding@Home) $fahc1(Invalid TeamID) $+ $fahc2(!)
  }
  elseif ($sock($sockname).mark == Invalid Username) {
    msg $active $fahlogo(Folding@Home) $fahc1(Invalid Username) $+ $fahc2(!)
  }
  else {
    msg $active $fahlogo(Folding@Home) $fahc1(Team) $+ $fahc2(: $gettok($sock($sockname).mark,1,124)) $fahblogo($gettok($sock($sockname).mark,2,124)) $&
      $fahc1(Team Rank) $+ $fahc2(: $gettok($sock($sockname).mark,3,124) $fahblogo(24Hr: $fahrank($gettok($sock($sockname).mark,6,124))) $fahblogo(7Days: $fahrank($gettok($sock($sockname).mark,7,124)))) $&
      $fahc1(Users) $+ $fahc2(: $gettok($sock($sockname).mark,5,124) $fahblogo(Active: $gettok($sock($sockname).mark,4,124))) $&
      $fahc1(Points) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,11,124),b) $fahblogo(24HrAvg. $bytes($gettok($sock($sockname).mark,8,124),b)) $fahblogo(Today: $bytes($gettok($sock($sockname).mark,9,124),b)) $fahblogo(Week: $bytes($gettok($sock($sockname).mark,10,124),b))) $&
      $fahc1(Team WUs) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,12,124),b)) $&
      $fahc1(User Name) $+ $fahc2(: $gettok($sock($sockname).mark,13,124)) $&
      $fahc1(Rank) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,14,124),b) $fahblogo(24Hr: $fahrank($gettok($sock($sockname).mark,16,124))) $fahblogo(7Day: $fahrank($gettok($sock($sockname).mark,17,124)))) $&
      $fahc1(Project Rank) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,15,124),b)) $&
      $fahc1(Points) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,21,124),b) $fahblogo(24HrAvg. $bytes($gettok($sock($sockname).mark,18,124),b)) $fahblogo(Today: $bytes($gettok($sock($sockname).mark,19,124),b)) $fahblogo(Week: $bytes($gettok($sock($sockname).mark,20,124),b))) $&
      $fahc1(Work Units) $+ $fahc2(: $bytes($gettok($sock($sockname).mark,22,124),b)) $&
      $fahc1(Last Update) $+ $fahc2(: $asctime($gettok($sock($sockname).mark,23,124),ddd doo mmm yyyy) at $asctime($gettok($sock($sockname).mark,23,124),HH:nn:ss zzz))
  }
}

alias fahrank {
  if ($1 >= 1) { var %return $+(03,$chr(8593),$1) }
  elseif ($1 <= -1) { var %return $+(04,$chr(8595),$1) }
  else { var %return $1 }
  return %return
}

Comments

Sign in to comment.
Yawhatnever   -  Jun 09, 2012

nice work

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.