View previous topic :: View next topic |
Author |
Message |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Fri Jan 13, 2023 2:35 am Post subject: stock exchange script for Australia |
|
|
Gday all, how's everyone doing?
I'm looking for a simple stock exchange script for Australia if someone can help make a simple one for me please
like say !asx Code-here and it shows some basic info
eg: !asx CBA etc
such as Current Price, Last Price, etc
https://www.marketindex.com.au/asx/cba <--example if you go down to snapshot if that info can be displayed in channel if possible please
Thanks |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Fri Jan 13, 2023 9:26 am Post subject: |
|
|
There is a pile of info in the "Snapshot", way too much to present in a channel post.
Maybe pick a few key entries to present?
Better yet, type out an example of what a channel post would look like:) _________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Fri Jan 13, 2023 9:54 am Post subject: |
|
|
SpiKe^^ wrote: | There is a pile of info in the "Snapshot", way too much to present in a channel post.
Maybe pick a few key entries to present?
Better yet, type out an example of what a channel post would look like:) |
Oh right sorry
How about just the following
Open Price:
Last Price:
Bid / Ask:
Day Range:
Prev Close:
Last Trade:
Market Cap:
Change:
Is that more reasonable  |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Sun Jan 22, 2023 12:12 am Post subject: |
|
|
Looking over the html source file much closer, shows they hide their quote data very well. Quote: | <td>Last (Price)</td>
<td class="text-right">
<span data-quoteapi="price"></span>
</td>
</tr>
<tr>
<td>Change</td>
<td class="text-right" data-quoteapi="changeSignCSS">
<span data-quoteapi="change showNegativeSign=false">0.00</span>
(<span data-quoteapi="pctChange showNegativeSign=true">0.00</span>)
</td>
</tr>
|
The headers are there but none of the data.
I do not know how to get any quote data from this site.
Maybe you know a usable source site for this stock quote data, or a way to force any data from this site? _________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Sun Jan 22, 2023 12:44 am Post subject: |
|
|
SpiKe^^ wrote: | Looking over the html source file much closer, shows they hide their quote data very well. Quote: | <td>Last (Price)</td>
<td class="text-right">
<span data-quoteapi="price"></span>
</td>
</tr>
<tr>
<td>Change</td>
<td class="text-right" data-quoteapi="changeSignCSS">
<span data-quoteapi="change showNegativeSign=false">0.00</span>
(<span data-quoteapi="pctChange showNegativeSign=true">0.00</span>)
</td>
</tr>
|
The headers are there but none of the data.
I do not know how to get any quote data from this site.
Maybe you know a usable source site for this stock quote data, or a way to force any data from this site? |
Hello Spike,
How about directly from the source
https://www2.asx.com.au/markets/company/cba
Is that more usable ?
https://www2.asx.com.au/
If that's a bust only other one i found would be
https://au.finance.yahoo.com/
https://au.finance.yahoo.com/quote/CBA.AX?p=CBA.AX&.tsrc=fin-srch
I really do appreciate your efforts into this, thank you so much |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Sun Jan 22, 2023 3:10 am Post subject: Re: maybe au.finance.yahoo.com/quote/ |
|
|
Market Cap:
Open:
Prev Close:
Bid:
Ask:
Day's Range:
Just those please spike  |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Wed Jan 25, 2023 6:32 pm Post subject: ausStocks.tcl version 0.1 24Jan2023 |
|
|
Tested some, give it a shot:)
Code: |
## ausStocks.tcl version 0.1 24Jan2023 ##
# public command syntax: !asx <symbol>
# example: !asx csl
package require http
package require tls
http::register https 443 {tls::socket -autoservername true}
bind pub - !asx asx:bindpub
proc asx:bindpub {nk uh hn ch tx} {
set symbol [string toupper [lindex [split [string trim $tx]] 0]]
if {[string length $symbol] < 3 || [string length $symbol] > 6} { return 0 }
set address "https://au.finance.yahoo.com/quote/${symbol}.AX?p=${symbol}.AX"
set token [::http::geturl $address -timeout 7500]
set html [::http::data $token] ; ::http::cleanup $token
set html [join [lrange [split $html "\n"] 4 6] {}]
set ils {company xinfo lastprice change percent notice prevclose open bid ask}
foreach vname [lappend ils dayrange 52weeks volume avgvolume marketcap] {
set $vname "N/A"
}
set qmap [list %k $nk %h $ch]
regexp {<h1 class=\"D\(ib\) Fz\(18px\)\">(.*?)</h1>(.*)$} $html - company html
regexp {^</div>[^>]+><span>(.*?)</span>(.*)$} $html - xinfo html
regexp {regularMarketPrice[^>]+>(.*?)</fin-str(.*)$} $html - lastprice html
regexp {regularMarketChange[^>]+><[^>]+>(.*?)</span(.*)$} $html - change html
regexp {MarketChangePercent[^>]+><[^>]+>(.*?)</span(.*)$} $html - percent html
regexp {quote-market-notice[^>]+><span>(.*?)</span>(.*)$} $html - notice html
if {[matchstr "-*" $change]} {
set change "\00304$change\003" ; set percent "\00304$percent\003"
} elseif {[matchstr "+*" $change]} {
set change "\00303$change\003" ; set percent "\00303$percent\003"
}
lappend qmap %y $company %x $xinfo %l $lastprice %c $change %p $percent
regexp {PREV_CLOSE-value\">(.*?)</td></tr>(.*)$} $html - prevclose html
regexp {\"OPEN-value\">(.*?)</td></tr>(.*)$} $html - open html
regexp {\"BID-value\">(.*?)</td></tr>(.*)$} $html - bid html
regexp {\"ASK-value\">(.*?)</td></tr>(.*)$} $html - ask html
lappend qmap %n $notice %r $prevclose %o $open %b $bid %a $ask
regexp {DAYS_RANGE-value\">(.*?)</td></tr>(.*)$} $html - dayrange html
regexp {FIFTY_TWO_WK_RANGE-value\">(.*?)</td>(.*)$} $html - 52weeks html
regexp {regularMarketVolume[^>]+>(.*?)</fin-streamer(.*)$} $html - volume html
regexp {AVERAGE_VOLUME_3MONTH-value\">(.*?)</td>(.*)$} $html - avgvolume html
regexp {\"MARKET_CAP-value\">(.*?)</td></tr>(.*)$} $html - marketcap html
lappend qmap %d $dayrange %w $52weeks %v $volume %g $avgvolume %m $marketcap
set hmap [list "'" "'" "&" "&" """ "\""]
#### e f i j q s t u z ####
# %y = company name ex. Apollo Minerals Limited (AON.AX)
# %x = asx info ?? ex. ASX - ASX Delayed price. Currency in AUD
# %l = last price ex. 108.66
# %c = price change ex. -0.08
# %p = change percent ex. (-0.07%)
# %n = market notice ex. As of 10:17AM AEDT. Market open.
# %r = previous close ex. 108.74
# %o = open ex. 108.74
# %b = bid ex. 108.66 x 36400
# %a = ask ex. 108.69 x 7100
# %d = day's range ex. 108.38 - 109.15
# %w = 52-week range ex. 86.98 - 109.20
# %v = volume ex. 3,747,153
# %g = avg. volume ex. 2,190,023
# %m = market cap ex. 183.463B
# %k = nick ex. SpiKe^^
# %h = channel ex. #pc-mirc-help
set say [list "\00306<ASX>\003 %y \002%l AUD\002 Change: \002%c %p\002 %n"]
set s "Previous close: \002%r\002 Open: \002%o\002 Bid: \002%b\002 "
append s "Ask: \002%a\002 Day's range: \002%d\002 Market cap: \002%m\002"
lappend say $s
foreach ln $say {
set ln [string map $qmap $ln] ; set ln [string map $hmap $ln]
puthelp "PRIVMSG $ch :$ln"
}
return 0
}
putlog "Loaded ausStocks.tcl version 0.1 24Jan2023"
|
_________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
CrazyCat Revered One

Joined: 13 Jan 2002 Posts: 1108 Location: France
|
Posted: Wed Jan 25, 2023 7:07 pm Post subject: |
|
|
short advice: don't register globaly https but register it when needed (before query) and unregister when cleaning the connection.
If another script globaly unregister https, yours will not work anymore.
Keep in mind that your script is not the only one running on the eggdrop. _________________ https://www.eggdrop.fr - French IRC network
Offer me a coffee - Do not ask me help in PM, we are a community. |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Wed Jan 25, 2023 7:46 pm Post subject: |
|
|
thommey said put it there, and stop using ::http::unregister https:) _________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Wed Jan 25, 2023 8:14 pm Post subject: Re: ausStocks.tcl version 0.1 24Jan2023 |
|
|
Thank you so much spike, you are the man sir
i'll def give it a better whirl tomorrow when markets open up xD
So far it's working as expected  |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Sat Jan 28, 2023 9:16 am Post subject: ausStocks.tcl version 0.2 27Jan2023 |
|
|
Version 0.2 adds some bare minimum sanity/error checks w/ reporting:
1) restricts user input to 3 - 6 alphanumeric characters.
2) adds some error checking on the http connection & get.
3) put the entire script code in the namespace ausStocks.
Code: |
## ausStocks.tcl version 0.2 27Jan2023 ##
## Version 0.2 adds some bare minimum sanity checks w/ reporting:
# 1) restricts user input to 3 - 6 alphanumeric characters.
# 2) adds some error checking on the http connection & get.
# 3) put the entire script code in the namespace ausStocks.
# public command syntax: !asx <symbol>
# example: !asx csl
##########################################
namespace eval ausStocks {
package require http
package require tls
::http::register https 443 {::tls::socket -autoservername true}
#::http::register https 443 [list ::tls::socket -servername au.finance.yahoo.com]
bind pub - !asx [namespace current]::asx:bindpub
proc asx:bindpub {nk uh hn ch tx} {
set sym [string toupper [lindex [split [string trim $tx]] 0]]
if {[string length $sym] ni {3 4 5 6} || [regexp {[^0-9A-Z]} $sym]} {
puthelp "PRIVMSG $ch :\00306<ASX>\003 Command syntax: \002!asx <symbol>\002"
return 0
}
set address "https://au.finance.yahoo.com/quote/${sym}.AX?p=${sym}.AX"
::http::config -useragent "Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
#::http::register https 443 {::tls::socket -autoservername true}
#::http::register https 443 [list ::tls::socket -servername au.finance.yahoo.com]
# Thanks thommey #
if {[catch {::http::geturl $address -timeout 7500} tok]} { error $tok }
if {[::http::status $tok] ne "ok"} {
error "TCP error: [::http::status $tok][::http::cleanup $tok]"
} elseif {[::http::ncode $tok] != 200} {
error "HTTP error: [::http::code $tok][::http::cleanup $tok]"
}
set html [::http::data $tok] ; ::http::cleanup $tok
set html [join [lrange [split $html "\n"] 4 6] {}]
set company "" ; set xinfo "" ; set lastprice ""
regexp {<h1 class=\"D\(ib\) Fz\(18px\)\">(.*?)</h1>(.*)$} $html - company html
regexp {^</div>[^>]+><span>(.*?)</span>(.*)$} $html - xinfo html
regexp {regularMarketPrice[^>]+>(.*?)</fin-str(.*)$} $html - lastprice html
if {$company eq "" || $xinfo eq "" || $lastprice eq ""} {
puthelp "PRIVMSG $ch :\00306<ASX>\003 Invalid Company Symbol: \002$sym\002"
return 0
}
set qmap [list %k $nk %h $ch %y $company %x $xinfo %l $lastprice]
set ils {change percent notice prevclose open bid ask dayrange}
foreach vname [lappend ils 52weeks volume avgvolume marketcap] {
set $vname "N/A"
}
regexp {regularMarketChange[^>]+><[^>]+>(.*?)</span(.*)$} $html - change html
regexp {MarketChangePercent[^>]+><[^>]+>(.*?)</span(.*)$} $html - percent html
regexp {quote-market-notice[^>]+><span>(.*?)</span>(.*)$} $html - notice html
if {[matchstr "-*" $change]} {
set change "\00304$change\003" ; set percent "\00304$percent\003"
} elseif {[matchstr "+*" $change]} {
set change "\00303$change\003" ; set percent "\00303$percent\003"
}
lappend qmap %c $change %p $percent %n $notice
regexp {PREV_CLOSE-value\">(.*?)</td></tr>(.*)$} $html - prevclose html
regexp {\"OPEN-value\">(.*?)</td></tr>(.*)$} $html - open html
regexp {\"BID-value\">(.*?)</td></tr>(.*)$} $html - bid html
regexp {\"ASK-value\">(.*?)</td></tr>(.*)$} $html - ask html
regexp {DAYS_RANGE-value\">(.*?)</td></tr>(.*)$} $html - dayrange html
lappend qmap %r $prevclose %o $open %b $bid %a $ask %d $dayrange
regexp {FIFTY_TWO_WK_RANGE-value\">(.*?)</td>(.*)$} $html - 52weeks html
regexp {regularMarketVolume[^>]+>(.*?)</fin-streamer(.*)$} $html - volume html
regexp {AVERAGE_VOLUME_3MONTH-value\">(.*?)</td>(.*)$} $html - avgvolume html
regexp {\"MARKET_CAP-value\">(.*?)</td></tr>(.*)$} $html - marketcap html
lappend qmap %w $52weeks %v $volume %g $avgvolume %m $marketcap
set hmap [list "'" "'" "&" "&" """ "\""]
#### e f i j q s t u z ####
# %y = company name ex. Apollo Minerals Limited (AON.AX)
# %x = asx info ?? ex. ASX - ASX Delayed price. Currency in AUD
# %l = last price ex. 108.66
# %c = price change ex. -0.08
# %p = change percent ex. (-0.07%)
# %n = market notice ex. As of 10:17AM AEDT. Market open.
# %r = previous close ex. 108.74
# %o = open ex. 108.74
# %b = bid ex. 108.66 x 36400
# %a = ask ex. 108.69 x 7100
# %d = day's range ex. 108.38 - 109.15
# %w = 52-week range ex. 86.98 - 109.20
# %v = volume ex. 3,747,153
# %g = avg. volume ex. 2,190,023
# %m = market cap ex. 183.463B
# %k = nick ex. GreedyHamster
# %h = channel ex. #MarketHub
set say [list "\00306<ASX>\003 %y \002%l AUD\002 Change: \002%c %p\002 %n"]
set s "Previous close: \002%r\002 Open: \002%o\002 Bid: \002%b\002 "
append s "Ask: \002%a\002 Day's range: \002%d\002 Market cap: \002%m\002"
lappend say $s
foreach ln $say {
set ln [string map $qmap $ln] ; set ln [string map $hmap $ln]
putserv "PRIVMSG $ch :$ln"
}
return 0
}
putlog "Loaded ausStocks.tcl version 0.2 27Jan2023"
} ;## end of: namespace eval ausStocks ##
|
_________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Sat Jan 28, 2023 11:09 pm Post subject: Re: ausStocks.tcl version 0.2 27Jan2023 |
|
|
Thanks Spike and LOL @ GreedyHamster love it  |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 826 Location: Tennessee, USA
|
Posted: Mon Feb 13, 2023 2:44 pm Post subject: ausStocks.tcl version 0.3 10Feb2023 |
|
|
Version 0.3 tries to make this script a little more user friendly:
1) script will now follow the redirect to the "Similar Symbol Lookup" page.
2) use .chanset #channel +asx to enable this script by channel.
3) and/or use the new channel setting: set asx(chan) "#chan #anotherchan"
4) can now use a company list file to limit invalid query symbols.
5) added public error messages for all ::http::geturl issues.
6) and lots of other small tweeks.
Code: |
########## ausStocks.tcl ver. 0.3 by SpiKe^^ ########## 10Feb2023 ##########
## Version 0.3 tries to make this script a little more user friendly:
# 1) script will now follow the redirect to the "Similar Symbol Lookup" page.
# 2) use .chanset #channel +asx to enable this script by channel.
# 3) and/or use the new channel setting: set asx(chan) "#chan #anotherchan"
# 4) can now use a company list file to limit invalid query symbols.
# 5) added public error messages for all ::http::geturl issues.
# 6) and lots of other small tweeks.
################## Version History ##################
## Version 0.2 added some bare minimum sanity checks w/ reporting:
# 1) restricts user input to 3 - 6 alphanumeric characters.
# 2) adds some error checking on the http connection & get.
# 3) put the entire script code in the namespace ::ausStocks::
# public command syntax: !asx <symbol>
# example: !asx csl
######################################################
namespace eval ausStocks { variable asx
package require http
package require tls
setudef flag asx ;# <= Use .chanset #chan +asx to enable this script by channel.
################### begin settings ###################
# set active channel(s) for this script (or set empty to only use .chanset #ch +asx)
# or use: set asx(chan) "*" to make the script active in all bot channels.
# note: the channels set here can not be disabled by using .chanset #ch -asx
set asx(chan) ""
# script logo (placed before almost every line sent to the channel)
set asx(logo) "\00306\[ASX\]\003 "
# this filename is read at: source scripts/ausStocks.tcl
# and makes the namespaced variable: $::ausStocks::asx(companydict).
set asx(companylist_filename) "scripts/ausStocks.companylist.txt"
############ end settings ############ end settings ############
################################################################
::http::register https 443 {::tls::socket -autoservername true}
#::http::register https 443 [list ::tls::socket -servername au.finance.yahoo.com]
bind pub - !asx [namespace current]::bindpub
proc bindpub {nk uh hn ch tx} { variable asx
set c [string tolower $ch]
if {![channel get $ch asx] && ("*" ni $asx(chan)) && ($c ni $asx(chan))} {
return 0
}
set tx [string trimright [string toupper [lindex [split [string trim $tx]] 0]] "."]
if {[matchstr "*.*" $tx]} { set tmp [split $tx "."]
if {[llength $tmp] > 2 || [lindex $tmp 1] ne "AX"} {
puthelp "PRIVMSG $ch :$asx(logo)Invalid Company Symbol: \002${tx}\002"
return 0
}
set sym [lindex $tmp 0]
} else { set sym $tx }
if {[string length $sym] ni {2 3 4 5 6} || [regexp {[^0-9A-Z]} $sym]} {
set say "$asx(logo)Command syntax: \002!asx <symbol>\002"
puthelp "PRIVMSG $ch :$say example: \002!asx csl\002"
return 0
}
if {$asx(companydict) ne ""} {
if {![dict exists $asx(companydict) $sym]} {
set say "$asx(logo)Invalid Company Symbol: \002${sym}\002"
puthelp "PRIVMSG $ch :$say (symbol not in the $asx(companylist_filename) file.)"
return 0
}
}
set addr "https://au.finance.yahoo.com"
set address "${addr}/quote/${sym}.AX?p=${sym}.AX"
set uagent "Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
set emap [list "\n" " | "]
foreach try {1 2} { ::http::config -useragent $uagent
if {[catch {::http::geturl $address -timeout 7500} tok]} {
set err "1 ::http::geturl error: [string map $emap $tok]"
} elseif {[::http::status $tok] ne "ok"} {
set err "2 TCP error: [::http::status $tok]"
} else { set ncode [::http::ncode $tok]
if {($try == 1 && $ncode ni {200 302}) || ($try == 2 && $ncode != 200)} {
set err "3 HTTP error: [::http::code $tok]"
}
}
if {$try == 1 && [info exists ncode] && $ncode == 302} {
upvar #0 $tok state
if {[dict exists $state(meta) location]} {
set loc [dict get $state(meta) location]
if {[matchstr "/lookup*" $loc]} { set address "${addr}$loc"
::http::cleanup $tok ; unset tok ; unset ncode
continue
}
set err "5 Redirect error: state(meta) 'location' not as expected ( $loc )."
} else {
set err "4 Redirect error: Unable to find 'location' in state(meta)."
}
}
break
}
if {[info exists err]} { putlog "$asx(logo) [string range $err 2 end]"
if {[string index $err 0] > 1} { ::http::cleanup $tok }
puthelp "PRIVMSG $ch :$asx(logo)Unable to get the requested data. Try again later."
return 0
}
set html [::http::data $tok] ; ::http::cleanup $tok
set html [join [lrange [split $html "\n"] 4 6] {}]
# is redirected 302 #
if {$try == 2} { set similarto "" ; set allcount "" ; set simdict {}
regexp {<span>Symbols similar to (.*?)</span></h2>(.*)$} $html - similarto html
regexp {<span>All \((.*?)\)</span></a></li>(.*)$} $html - allcount html
if {$similarto eq "" || $allcount eq ""} {
puthelp "PRIVMSG $ch :$asx(logo)Unable to get the requested data."
return 0
}
set re {<td class=\"data-col0[^>]+>[^>]+>(.*?)</a></td>[^>]+>(.*?)</td>(.*)$}
while {[dict size $simdict] < 5} {
if {![regexp $re $html - ssym sname html]} { break }
dict set simdict $ssym $sname
}
set say "$asx(logo)Symbol Lookup >"
if {[set dsize [dict size $simdict]] == 0} {
puthelp "PRIVMSG $ch :$say Found no symbols similar to: \002${sym}\002"
return 0
}
if {$dsize == 1} { append say " Found one symbol similar to '${sym}':"
puthelp "PRIVMSG $ch :$say \002${ssym}\002 $sname"
return 0
}
if {$dsize <= 3} { append say " Found $dsize symbols similar to '${sym}':"
} else { append say " Found $allcount symbols similar to '${sym}'." }
if {$allcount > 5} { append say " Showing the first 5:"
} elseif {$allcount > 3} { append say " Showing all of them:" }
dict for {sy co} $simdict { append say " \002${sy}\002 $co" }
puthelp "PRIVMSG $ch :$say"
return 0
} ;# end: is redirected 302 #
set company "" ; set xinfo ""
regexp {<h1 class=\"D\(ib\) Fz\(18px\)\">(.*?)</h1>(.*)$} $html - company html
regexp {^</div>[^>]+><span>(.*?)</span>(.*)$} $html - xinfo html
if {$company eq "" || $xinfo eq ""} {
puthelp "PRIVMSG $ch :$asx(logo)Invalid Company Symbol: \002${sym}\002"
return 0
}
set qmap [list %k $nk %h $ch %y $company %x $xinfo]
set ils {lastprice change percent notice prevclose open bid ask dayrange 52weeks}
foreach vname [lappend ils volume avgvolume marketcap] { set $vname "N/A" }
regexp {regularMarketPrice[^>]+>(.*?)</fin-str(.*)$} $html - lastprice html
regexp {regularMarketChange[^>]+><[^>]+>(.*?)</span(.*)$} $html - change html
regexp {MarketChangePercent[^>]+><[^>]+>(.*?)</span(.*)$} $html - percent html
regexp {quote-market-notice[^>]+><span>(.*?)</span>(.*)$} $html - notice html
if {[matchstr "-*" $change]} {
set change "\00304$change\003" ; set percent "\00304$percent\003"
} elseif {[matchstr "+*" $change]} {
set change "\00303$change\003" ; set percent "\00303$percent\003"
}
lappend qmap %l $lastprice %c $change %p $percent %n $notice
regexp {PREV_CLOSE-value\">(.*?)</td></tr>(.*)$} $html - prevclose html
regexp {\"OPEN-value\">(.*?)</td></tr>(.*)$} $html - open html
regexp {\"BID-value\">(.*?)</td></tr>(.*)$} $html - bid html
regexp {\"ASK-value\">(.*?)</td></tr>(.*)$} $html - ask html
regexp {DAYS_RANGE-value\">(.*?)</td></tr>(.*)$} $html - dayrange html
lappend qmap %r $prevclose %o $open %b $bid %a $ask %d $dayrange
regexp {FIFTY_TWO_WK_RANGE-value\">(.*?)</td>(.*)$} $html - 52weeks html
regexp {regularMarketVolume[^>]+>(.*?)</fin-streamer(.*)$} $html - volume html
regexp {AVERAGE_VOLUME_3MONTH-value\">(.*?)</td>(.*)$} $html - avgvolume html
regexp {\"MARKET_CAP-value\">(.*?)</td></tr>(.*)$} $html - marketcap html
lappend qmap %w $52weeks %v $volume %g $avgvolume %m $marketcap
set hmap [list "'" "'" "&" "&" """ "\""]
#### e f i j q s t u z ####
# %y = company name ex. Apollo Minerals Limited (AON.AX)
# %x = asx info ?? ex. ASX - ASX Delayed price. Currency in AUD
# %l = last price ex. 108.66
# %c = price change ex. -0.08
# %p = change percent ex. (-0.07%)
# %n = market notice ex. As of 10:17AM AEDT. Market open.
# %r = previous close ex. 108.74
# %o = open ex. 108.74
# %b = bid ex. 108.66 x 36400
# %a = ask ex. 108.69 x 7100
# %d = day's range ex. 108.38 - 109.15
# %w = 52-week range ex. 86.98 - 109.20
# %v = volume ex. 3,747,153
# %g = avg. volume ex. 2,190,023
# %m = market cap ex. 183.463B
# %k = nick ex. GreedyHamster
# %h = channel ex. #MarketHub
set say [list "$asx(logo)%y \002%l AUD\002 Change: \002%c %p\002 %n"]
set s "Previous close: \002%r\002 Open: \002%o\002 Bid: \002%b\002 "
append s "Ask: \002%a\002 Day's range: \002%d\002 Market cap: \002%m\002"
lappend say $s
foreach ln $say {
set ln [string map $qmap $ln] ; set ln [string map $hmap $ln]
putserv "PRIVMSG $ch :$ln"
}
return 0
}
proc onsource {} { variable asx
set asx(chan) [split [string tolower [string trim $asx(chan)]]]
set asx(companylist_filename) [string trim $asx(companylist_filename)]
set asx(companydict) [dict create]
if {[file exists $asx(companylist_filename)]} {
set open [open $asx(companylist_filename) r]
set asx(companydict) [read -nonewline $open] ; close $open
}
}
onsource
putlog "Loaded ausStocks.tcl version 0.3 10Feb2023"
} ;## end of: namespace eval ausStocks ##
|
_________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
rainman Voice
Joined: 21 Apr 2021 Posts: 10
|
Posted: Tue Feb 14, 2023 4:49 am Post subject: Re: ausStocks.tcl version 0.3 10Feb2023 |
|
|
Thanks Spike once again man, you're an awesome coder  |
|
Back to top |
|
 |
|