illpastethat

Stock Quote Script (Financial Data) v2.4

May 7th, 2016
525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 7.78 KB | None | 0 0
  1. ;Stock Quote Script (Financial Stock Data) v2.4
  2. ;Made by nick1
  3. ;View online and report bugs at http://hawkee.com/snippet/9578
  4. ;Last edit May 7, 2016
  5. ;2DO -- Add a dialog for this to select colors, public/private, what to display, etc.
  6.  
  7. ;DISCLAIMER: Data and information provided may be delayed.
  8. ;Data and information is provided for informational purposes only, and is not intended for trading purposes. - Currency in USD
  9. ;NOTE: API is deprecated and unofficial, see http://tinyurl.com/mircstock3 for column options
  10.  
  11. alias -l stockVersion {
  12.   return v2.4
  13. }
  14. alias stock {
  15.   var %ticks $ticks
  16.   tokenize 32 $strip($1-)
  17.   if ($1) {
  18.     if ($1 == eurusd) { var %ticker EURUSD=X }
  19.     elseif ((*s&p* iswm $1) || (*SP500* iswm $1)) { var %ticker ^GSPC }
  20.     elseif ($1 == nasdaq) { var %ticker ^IXIC }
  21.     elseif ($1 == nyse) { var %ticker ^NYA }
  22.     else {
  23.       var %ticker $1
  24.     }
  25.     set $+(%,stock.,%ticks,.msgtype) echo -a
  26.     set $+(%,stock.,%ticks,.ticker) $replace(%ticker,^,$(%255E,0))
  27.     sockopen $+(stock.,%ticks) query.yahooapis.com 80
  28.   }
  29.   elseif ($1 == $null) {
  30.     echo -act info 4Incorrect Syntax - Use10 /stock <ticker symbol>
  31.   }
  32. }
  33.  
  34. on *:input:*:{
  35.   $iif($istok(%nolinks,$active,44),return,noop)
  36.   $iif($istok(%youtubefetch,$active,44),return,noop)
  37.   if (($left($strip($1),1) == @) || ($left($strip($1),1) == !)) {
  38.     if (($remove($1,$left($strip($1),1)) == stock) || ($remove($1,$left($strip($1),1)) == stocks) || ($remove($1,$left($strip($1),1)) == stockquote) || ($remove($1,$left($strip($1),1)) == price) || ($remove($1,$left($strip($1),1)) == p) || ($remove($1,$left($strip($1),1)) == ystock)) {
  39.       if ($2) {
  40.         if ($2 == eurusd) { var %ticker EURUSD=X }
  41.         elseif ($2 == S&P500) || ($2-3 == s&p 500) { var %ticker ^GSPC }
  42.         elseif ($2 == nasdaq) { var %ticker ^IXIC }
  43.         elseif ($2 == nyse) { var %ticker ^NYA }
  44.         else {
  45.           var %ticker $2
  46.         }
  47.         var %ticks $ticks
  48.         set $+(%,stock.,%ticks,.msgtype) $iif($chan,$iif($left($1,1) == @,msg $active,echo -a),msg $active)
  49.         set $+(%,stock.,%ticks,.ticker) $replace(%ticker,^,$(%255E,0))
  50.         sockopen $+(stock.,%ticks) query.yahooapis.com 80
  51.       }
  52.       elseif ($2 == $null) {
  53.         echo -a 4Incorrect Syntax - Use10 $1 <ticker symbol>
  54.       }
  55.     }
  56.   }
  57. }
  58.  
  59. on $*:text:/^[!@](stock|stocks|stockquote|price|p|ystock)(\s|$)/Si:#:{
  60.   $iif($istok(%nolinks,$nick,44),return,noop)
  61.   $iif($istok(%youtubefetch,$chan,44),return,noop)
  62.   if ($($+(%,botflood.,$nick),2)) {
  63.     if ($($+(%,botflood.,$nick),2) >= 300) { ignore -u60 $address($nick,0) | msg $chan $+($nick,$chr(44)) You Have Been Put On Ignore For 60secs For Abusing The Bot. | halt }
  64.     elseif ($($+(%,botflood.,$nick),2) >= 200) { msg $chan $+($nick,$chr(44)) Please Do Not Abuse The Bot. | inc -z $+(%,botflood.,$nick) 20 | halt }
  65.     else { inc -z $+(%,botflood.,$nick) 25 }
  66.   }
  67.   else { inc -z $+(%,botflood.,$nick) 25 }
  68.   var %ticks $ticks
  69.   tokenize 32 $strip($1-)
  70.   if ($2) {
  71.     if ($2 == eurusd) { var %ticker EURUSD=X }
  72.     elseif ($2 == S&P500) || ($2-3 == s&p 500) { var %ticker ^GSPC }
  73.     elseif ($2 == nasdaq) { var %ticker ^IXIC }
  74.     elseif ($2 == nyse) { var %ticker ^NYA }
  75.     else {
  76.       var %ticker $2
  77.     }
  78.     set $+(%,stock.,%ticks,.msgtype) $iif($chan,$iif($left($1,1) == @,msg $chan,notice $nick),msg $nick)
  79.     set $+(%,stock.,%ticks,.ticker) $replace(%ticker,^,$(%255E,0))
  80.     sockopen $+(stock.,%ticks) query.yahooapis.com 80
  81.   }
  82.   elseif ($2 == $null) {
  83.     notice $nick 4Incorrect Syntax - Use10 $1 <ticker symbol>
  84.   }
  85. }
  86.  
  87. on *:sockopen:stock.*: {  
  88.   var %sw sockwrite -nt $sockname
  89.   var %enc1 $(/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28",0)
  90.   var %enc2 $("%29&env=store://datatables.org/alltableswithkeys,0)
  91.   %sw GET $+(%enc1,$($+(%,$sockname,.ticker),2),%enc2) HTTP/1.1
  92.   %sw Host: query.yahooapis.com
  93.   %sw $crlf
  94. }
  95. alias -l months {
  96.   return January,February,March,April,May,June,July,August,September,October,November,December
  97. }
  98.  
  99. on *:SOCKREAD:stock.*: {
  100.   if ($sockerr) { echo -a SOCKET ERROR: $sockerr | halt }
  101.   var %ticks $remove($sockname,stock.)
  102.   var %url $+(http://finance.yahoo.com/q?s=,$($+(%,stock.,%ticks,.ticker),2))
  103.   sockread &t
  104.   bwrite temp $+ %ticks -1 -1 &t
  105.   bread temp $+ %ticks 0 $file(temp $+ %ticks).size &binvar2
  106.   if (*Average/><Name/>* iswm $bvar(&t,1-).text) {
  107.     $($+(%,stock.,%ticks,.msgtype),2) $+(7,$($+(%,stock.,%ticks,.ticker),2),) 04This symbol could not be found. $&
  108.       Please try again or search for it at12 %url
  109.     unset $+(%,stock.,$remove($sockname,stock.),*)
  110.     sockclose $sockname
  111.   }
  112.   elseif ($bfind(&binvar2,1,<query) != 0) && ($bfind(&binvar2,1,</query>) != 0) {
  113.     set $+(%,stock.,%ticks,.xml) $bvar(&binvar2,$+($bfind(&binvar2,1,<query),-,$calc($bfind(&binvar2,$bfind(&binvar2,1,<query),</query>) + 7))).text
  114.     var %change_percentchange $iif($left($stockparser(%ticks,change_percentchange),1) == +,03,04) $+ $replace($stockparser(%ticks,Change_PercentChange),$chr(32) $+ $chr(45) $+ $chr(32),$chr(44) $+ $chr(32))
  115.     $($+(%,stock.,%ticks,.msgtype),2) $+(7,$upper($stockparser(%ticks,symbol)),) $&
  116.       $parens($+(7,$replace($stockparser(%ticks,name),&amp;,&,&#39;,'))) $&
  117.       10Last: $stockparser(%ticks,LastTradePriceOnly) $&
  118.       $parens(%change_percentchange) $&
  119.       10Vol: $bytes($stockparser(%ticks,AverageDailyVolume),bd) $&
  120.       10Mkt. Cap: $stockparser(%ticks,MarketCapitalization) $&
  121.       10Link:12 %url
  122.     ;The above section is meant to be customized yourself based on what options you want
  123.     ;Look at the list of options below to customize yourself, just ask if you need help
  124.     ;For example add in 10Daily Range: $parens($stockparser(%ticks,DaysRange)) $& for the daily range
  125.     unset $+(%,stock.,$remove($sockname,stock.),*)
  126.     sockclose $sockname
  127.   }
  128. }
  129.  
  130. alias -l parens { return $+(01,$chr(40),$1-,01,$chr(41)) }
  131.  
  132. alias stockParser {
  133.   ;Syntax $stockparser(ticks,DATA_TYPE) - Options for DATA_TYPE working as of v2.4 are:
  134.   ;{Ask,AverageDailyVolume,Bid,BookValue,Change_PercentChange,Change,Currency,LastTradeDate,EarningsShareEPSEstimateCurrentYear,
  135.   ;EPSEstimateNextYear,EPSEstimateNextQuarter,DaysLow,DaysHigh,YearLow,YearHigh,MarketCapitalization,EBITDA,ChangeFromYearLow,
  136.   ;PercentChangeFromYearLow,ChangeFromYearHigh,PercebtChangeFromYearHigh,LastTradeWithTime,LastTradePriceOnly,DaysRange,
  137.   ;FiftydayMovingAverage,TwoHundreddayMovingAverage,ChangeFromTwoHundreddayMovingAverage,PercentChangeFromTwoHundreddayMovingAverage,
  138.   ;ChangeFromFiftydayMovingAverage,PercentChangeFromFiftydayMovingAverage,Name,Open,PreviousClose,ChangeinPercent,PriceSales,
  139.   ;PriceBook,PERatio,PEGRatio,PriceEPSEstimateCurrentYear,PriceEPSEstimateNextYear,Symbol,ShortRatio,LastTradeTime,OneyrTargetPrice,
  140.   ;Volume,YearRange,StockExchange,PercentChange}
  141.   var %xml $($+(%,stock.,$1,.xml),2)
  142.   if (*< $+ $2 $+ >* !iswm %xml) {
  143.     return $null
  144.   }
  145.   else {
  146.     return $remove($gettok(%xml,$calc($findtok(%xml,< $+ $2,1,62) + 1),62),</ $+ $2)
  147.   }
  148. }
  149.  
  150. on *:start: .timerStockUpdate 1 60 StockUpdate
  151.  
  152. alias stockUpdate {
  153.   ;echo -atc info 12[04Stock Script12] Checking for updates...
  154.   sockopen stockUpdate hawkee.com 80
  155. }
  156.  
  157. on *:sockopen:stockUpdate: {  
  158.   sockwrite -nt $sockname GET /snippet/9578/ HTTP/1.1
  159.   sockwrite -nt $sockname Host: hawkee.com
  160.   sockwrite -nt $sockname $crlf
  161. }
  162.  
  163. on *:SOCKREAD:stockUpdate: {
  164.   if ($sockerr) { echo -a SOCKET ERROR: $sockerr $sockname $asctime | halt }
  165.   sockread %sockreader
  166.   if (*<title>* iswm %sockreader) {
  167.     tokenize 32 %sockreader
  168.     if ($StockVersion != $7) {
  169.       echo -atc info 12[04Stock Script12] Current: $StockVersion Latest: $7 Status: Please update at www.hawkee.com/snippet/9578/
  170.     }
  171.     unset %sockreader
  172.     sockclose $sockname
  173.   }
  174. }
Add Comment
Please, Sign In to add comment