Advertisement
Wolfstorm

Uptime Command

May 14th, 2015
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. //Uptime v3 (After Nightbot API Delete - March 2016) ###
  2.  
  3. on *:text:!uptime*:#: {
  4. tokenize 1 $iif($2,$2,lapis_lauri)
  5. if ($mysocket(twitchuptime,https://api.twitch.tv/kraken/streams?channel= $+ $1)) {
  6. hadd $v1 channel #
  7. hadd $v1 stream $1
  8. }
  9. }
  10.  
  11. alias twitchuptime {
  12. if ($2 == error) msg $hget($1,channel) An error occurred, please try again.
  13. else {
  14. if ($bfind(&mysocket,1,"_total":0).text) { msg #lapis_lauri Lapis_lauri is not live currently. }
  15. elseif ($bfind(&mysocket,1,created_at).text) { msg #lapis_lauri Lapis_lauri has been live for $duration($calc($calc($gmt -$ctime($replacex($gettok($bvar(&mysocket,$v1,100).text,3,34),T,$chr(32))))-3600)) }
  16. }
  17. }
  18.  
  19. alias mysocket {
  20. if (www.?*.??* iswm $2) tokenize 32 $1 http:// $+ $2
  21. if (http://?*.??* iswm $2) || (https://?*.??* iswm $2) {
  22. var %e = $iif($gettok($2,1,47) == https:,-e),%a $gettok($2,2,47),%p $iif($gettok(%a,2,58) isnum 60-65535,$v1,$iif(%e,443,80)),%a $gettok(%a,1,58),%s $sha1($2,0) $+ .mysocket
  23. mysocket.k %s
  24. hmake %s
  25. hadd %s command $1
  26. hadd %s full $2
  27. hadd %s port %p
  28. hadd %s host %a
  29. hadd %s path $iif($gettok($2,3-,47),/ $+ $v1 $+ $iif($right($2,1) == /,/),/)
  30. hadd %s limit 2097152
  31. hadd %s r 0
  32. sockopen %e %s %a %p
  33. .timermysocket. $+ %s -io 0 30 mysocket.t %s
  34. if ($isid) return %s
  35. }
  36. else $iif($isid,return,echo -a Invalid input, us as: /mysocket <command> <link>)
  37. }
  38.  
  39. alias -l mysocket.t if ($sock($1).lr > 30) { $hget($1,command) $1 error open Connection timeout | mysocket.k $1 }
  40.  
  41. alias -l mysocket.k hfree -w $1 | sockclose $1 | .timermysocket. $+ $1 off | .remove $1 | unset %c.t
  42.  
  43. on *:sockopen:*.mysocket: {
  44. tokenize 32 $sockname
  45. if ($sockerr) mysocket.e $1 open
  46. else {
  47. sockwrite -tn $1 GET $hget($1,path) HTTP/1.1
  48. sockwrite -tn $1 Host: $hget($1,host)
  49. sockwrite -tn $1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/45.0
  50. sockwrite -tn $1 Accept: text/html
  51. sockwrite -tn $1 Connection: close
  52. sockwrite -t $1 $crlf
  53. }
  54. }
  55.  
  56. on *:sockread:*.mysocket: {
  57. tokenize 32 $sockname
  58. if ($sockerr) mysocket.e $1 read
  59. elseif ($hget($1,r)) mysocket.r $1
  60. else {
  61. sockread -f %c.t
  62. while ($sockbr > 2) { hadd $1 %c.t | sockread -f %c.t }
  63. if ($sockbr) { hadd $1 r $calc($sock($1).rcvd +$iif($hget($1,Content-Length:) <= $hget($1,limit),$v1,$v2)) | if ($sock($1).rq) mysocket.r $1 }
  64. }
  65. }
  66.  
  67. on *:sockclose:*.mysocket:mysocket.d $sockname
  68.  
  69. alias -l mysocket.r sockread $sock($1).rq &b | bwrite $1 -1 &b | if ($sock($1).rcvd >= $hget($1,r)) mysocket.d $1
  70.  
  71. alias -l mysocket.e $hget($1,command) $1 error $2 $sockerr $sock($1).wsmsg | mysocket.k $1
  72.  
  73. alias -l mysocket.d {
  74. if ($hget($1,Transfer-Encoding:) == chunked) {
  75. var %y = 1
  76. bread $1 0 $file($1).size &f
  77. while ($bfind(&f,%y,$crlf).text) {
  78. var %v = $v1,%h $bvar(&f,%y,$calc(%v -%y)).text,%r $base(%h,16,10),%y $calc(%v +4+%r)
  79. if (%r == 0) break
  80. else bcopy &mysocket $calc(1+$bvar(&mysocket,0)) &f $calc(2+%v) %r
  81. }
  82. }
  83. else bread $1 0 $file($1).size &mysocket
  84. if ($hget($1,HTTP/1.1) != 200 OK) $hget($1,command) $1 error status $v1
  85. else $hget($1,command) $1 $iif($bvar(&mysocket,0),done,error read No data received.)
  86. mysocket.k $1
  87. :error
  88. if ($error) mysocket.k $1
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement