View previous topic :: View next topic |
Author |
Message |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Wed May 14, 2014 8:20 pm Post subject: Updated horoscope pls |
|
|
Can I please request for a new horoscope script. Because I think Yahoo Horoscope for Eggdrop by FordLawnmower has stopped working. Thank You |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Thu May 15, 2014 8:07 am Post subject: |
|
|
Code: | package require http
# to activate on a #channel : .chanset #channel +horo
setudef flag horo
bind pub - .horo horo_pub
proc horo_pub {nick uhost hand chan text} {
if {![channel get $chan horo]} { return }
set q [lindex [split [string tolower $text]] 0]
set horos "Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces"
if {$q eq ""} {
puthelp "NOTICE $nick :\002Usage\002 : \00304$::lastbind $horos\003"
return 0
}
if {[regexp -nocase -- $q $horos]} {
set url [http::geturl "http://www.lcblack.com/horoscope?sign=$q" -timeout 4000]
set data [split [http::data $url] \n]
http::cleanup $url
regexp {<div class="horoscope">(.*?)</p>} $data "" output
regsub -all -- "<p>" $output "" output
regsub -all -- \} $output "" output
regsub -all -- \{ $output "" output
puthelp "PRIVMSG $chan :\00312$output\003"
} else {
puthelp "NOTICE $nick :\00303$horos\003"
}
return 0
} |
btw , FordLawnmower's script still Works fine.... i just made a test. His script requires tcl-tls package . _________________ Life iS Just a dReaM oN tHE wAy to DeaTh |
|
Back to top |
|
 |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Fri May 16, 2014 3:06 am Post subject: The new script is working great |
|
|
I apologize for the misunderstanding with Yahoo Horoscope. I guess i have yet to fix my tcl-tls package problems. The script is probably working but my system needs to be updated. The new script works like a charm and im using now. Thanks a lot =) |
|
Back to top |
|
 |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Tue Jul 08, 2014 9:28 pm Post subject: New horoscope script pls |
|
|
Good day Heartbroken!
I've been using your horoscope script for a few months now. I enjoy using it a lot for my channel now but doesnt seem to be working anymore. Can you help me to find a working horoscope script? Anyone? |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Wed Jul 09, 2014 8:22 am Post subject: |
|
|
Code: | package require http
# to activate on a #channel : .chanset #channel +horo
setudef flag horo
bind pub - .horo horo_pub
proc horo_pub {nick uhost hand chan text} {
if {![channel get $chan horo]} { return 0 }
set q [lindex [split [string tolower $text]] 0]
set horos "Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces"
if {$q eq ""} { puthelp "NOTICE $nick :\002Usage\002 : \00304$::lastbind $horos\003"; return 0 }
if {[regexp -nocase -- $q $horos]} {
set url [http::geturl "http://www.lcblack.com/horoscope?sign=$q" -timeout 4000]
set data [split [http::data $url] \n]
http::cleanup $url
regexp {horoscope_date">(.*?)<.+horoscope_title">(.*?)<.+horoscope">(.*?)</p>} $data "" hdate htitle houtput
#regexp {aspects_title">(.*?)</h3>.+aspect_time">(.*?)<.+aspect_event">(.*?)<.+aspect_meaning">(.*?)<} $data "" atitle atime aevent ameaning
regexp {love">(.*?)<span>(.*?)<.+communication">(.*?)<span>(.*?)<.+work">(.*?)<span>(.*?)<} $data "" love lno comm cno work wno
set houtput [string map {\} "" \{ "" <p> ""} [string trim $houtput]]
#set aspects "\00302$atitle\003 - \00304$atime\003 - \00305$aevent\003 : \00314$ameaning\003"
set lcw "\00304$love\003 : \002$lno\002 - \00304$comm\003 : \002$cno\002 - \00304$work\003 : \002$wno\002"
#set aspects [string map {\} "" \{ ""} [string trim $aspects]]
set lcw [string map {\} "" \{ ""} [string trim $lcw]]
puthelp "PRIVMSG $chan :\00309$hdate\003 - \00312$htitle\003 :"
puthelp "PRIVMSG $chan :\00314$houtput\003"
#puthelp "PRIVMSG $chan :$aspects"
puthelp "PRIVMSG $chan :$lcw"
} else {
puthelp "NOTICE $nick :\00303$horos\003"
}
return 0
} |
Quote: | .horo aries
< bot > Wednesday, July 9 - Today's Horoscope :
< bot > Set long-range goals over the next two days. Start planning a vacation or trip. Don't quit your day job yet, but get your ducks in a row. Remember home obligations. Stick to practical actions.
< bot> Love : 9 - Communication : 9 - Work : 8
.horo cancer
< bot > Wednesday, July 9 - Today's Horoscope :
< bot > The work's intricate, but rewarding for the next two days. Ask for more and get it. Keep costs down as much as possible. Get into action. With diligence, you'll succeed. Take a deep bow.
< bot > Love : 9 - Communication : 8 - Work : 8 |
_________________ Life iS Just a dReaM oN tHE wAy to DeaTh |
|
Back to top |
|
 |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Wed Jul 09, 2014 8:47 pm Post subject: Good day |
|
|
Im getting an error Tcl error [horo_pub]: can't read "houtput": no such variable.
Am i doing something wrong? Thanks for the speedy response. |
|
Back to top |
|
 |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Wed Jul 09, 2014 9:57 pm Post subject: Updated version |
|
|
Ive tried the updated (April 12, 2014) version of yahoo horoscope by By FordLawnmower. It seems to be working. But please keep me posted heartbroken. I want to use your script also =) |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Thu Jul 10, 2014 7:11 am Post subject: |
|
|
i just check it once again and i follow it on partyline ,but i didn't get any err ...
anyway i re-edit to , if that "houtput" thingy exists or not in this edit...
should fixed the err with this way.
Code: | package require http
# to activate on a #channel : .chanset #channel +horo
setudef flag horo
bind pub - .horo horo_pub
proc horo_pub {nick uhost hand chan text} {
if {![channel get $chan horo]} { return 0 }
set q [lindex [split [string tolower $text]] 0]
set horos "Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces"
if {[llength $q] < 1 || ![regexp -nocase -- $q $horos]} {
puthelp "NOTICE $nick :\002Usage\002 : \00304$::lastbind $horos\003"
return 0
}
set url [http::geturl "http://www.lcblack.com/horoscope?sign=$q" -timeout 4000]
set data [split [http::data $url] \n]
http::cleanup $url
regexp {horoscope_date">(.*?)<.+horoscope_title">(.*?)<.+horoscope">(.*?)</p>} $data "" hdate htitle houtput
#regexp {aspects_title">(.*?)</h3>.+aspect_time">(.*?)<.+aspect_event">(.*?)<.+aspect_meaning">(.*?)<} $data "" atitle atime aevent ameaning
regexp {love">(.*?)<span>(.*?)<.+communication">(.*?)<span>(.*?)<.+work">(.*?)<span>(.*?)<} $data "" love lno comm cno work wno
if {[info exists houtput]} {
set houtput [string map {\} "" \{ "" <p> ""} [string trim $houtput]]
#set aspects "\00302$atitle\003 - \00304$atime\003 - \00305$aevent\003 : \00314$ameaning\003"
set lcw "\00304$love\003 : \002$lno\002 - \00304$comm\003 : \002$cno\002 - \00304$work\003 : \002$wno\002"
#set aspects [string map {\} "" \{ ""} [string trim $aspects]]
set lcw [string map {\} "" \{ ""} [string trim $lcw]]
puthelp "PRIVMSG $chan :\00309$hdate\003 - \00312$htitle\003 :"
puthelp "PRIVMSG $chan :\00314$houtput\003"
#puthelp "PRIVMSG $chan :$aspects"
puthelp "PRIVMSG $chan :$lcw"
} else {
putlog "err...nothing found."
}
return 0
} | you can also try incith-horoscope ( i dunno if its updated & Works . ) _________________ Life iS Just a dReaM oN tHE wAy to DeaTh |
|
Back to top |
|
 |
anotherrace Voice
Joined: 14 May 2014 Posts: 17
|
Posted: Fri Jul 11, 2014 2:09 am Post subject: update |
|
|
I tried your horoscope script heartbroken. The new version works great and i think its the best horoscope now. More power to you! |
|
Back to top |
|
 |
Dominatez Halfop

Joined: 14 Jan 2019 Posts: 46 Location: United Kingdom
|
Posted: Fri May 31, 2019 1:40 pm Post subject: |
|
|
I know this is bumping an old one, but i have started learning tcl, so not sure how i would sort the link out.
It has changed from
"http://www.lcblack.com/horoscope?sign=$q"
to
http://www.lcblack.com/pisces_horoscope" |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Fri May 31, 2019 4:42 pm Post subject: |
|
|
Code: | package require http
package require tls
package require htmlparse
setudef flag horoscope
set horo_cmds ".horo !horos !horoscope"
set horobot_PM 1
set horo_EggFlags -|-
foreach HoroCmd [split $horo_cmds { }] {
bind pub $horo_EggFlags $HoroCmd horo_Pubs
if {$horobot_PM != "" && $horobot_PM >= 1} {
bind msg $horo_EggFlags $HoroCmd horo_BotPM
}
}
::http::register https 443 [list ::tls::socket -ssl2 0 -ssl3 0 -tls1 1]
proc horo_BotPM {nick uhost hand text} {
Horo_MainProc $nick $uhost $hand $nick $text
}
proc horo_Pubs {nick uhost hand chan text} {
if {![channel get $chan horoscope]} { return }
Horo_MainProc $nick $uhost $hand $chan $text
}
proc Horo_MainProc {nick uhost hand chan text} {
set ValidHoros [list aries taurus gemini cancer leo virgo libra scorpio sagittarius capricorn aquarius pisces]
set HoroQuery [lindex [split [string trimleft [stripcodes abcgru $text]]] 0]
if {![llength $HoroQuery]} {
puthelp "PRIVMSG $chan :Usage: $::lastbind <Horoscope>"
return
} elseif {[lsearch -nocase $ValidHoros $HoroQuery] == -1} {
puthelp "PRIVMSG $chan :\"$HoroQuery\" is not a valid query!"
return
} else {
set HoroData [fetch_Horo_HTML https://www.lcblack.com/${HoroQuery}_horoscope]
set HoroRE {_date">(.*?)<.+?title">(.*?)</.+?cope">(.*?)</p>.+?love">(.*?)</li>.+?">(.*?)</li>.+?">(.*?)</li>}
if {[regexp -- $HoroRE $HoroData -> Date Title Horoscope Love Communication Work]} {
puthelp "PRIVMSG $chan :\00312$Date\003 [Clean_HoroHTML $Title]"
puthelp "PRIVMSG $chan :[Clean_HoroHTML $Horoscope]"
puthelp "PRIVMSG $chan :\002[Clean_HoroHTML $Love] \002[Clean_HoroHTML $Communication] \002[Clean_HoroHTML $Work]"
} else {
putcmdlog "[file tail [info script]] Regexp fails to match: https://www.lcblack.com/${HoroQuery}_horoscope"
}
}
return 0
}
proc Clean_HoroHTML Horo {
regsub -all -- {(?:<b>|</b>)} $Horo \002 Horo
regsub -all -- {<span>(.*?)</span>} $Horo \002\00304\\0\003 Horo
regsub -all -- "<.+?>" $Horo { } Horo
regsub -all -- {\s+} $Horo " " Horo
return [string trim $Horo]
}
proc fetch_Horo_HTML HoroURL {
if {[catch {set HoroTok [http::geturl $HoroURL -timeout 12000]} Error]} {
putcmdlog "[file tail [info script]]: [string map {\n " "} $Error]"
return
}
if {[http::status $HoroTok] eq "ok" && [http::ncode $HoroTok] == 200} {
set HoroHTML [http::data $HoroTok]
} else {
putcmdlog "[file tail [info script]]: [http::status $HoroTok] - [http::code $HoroTok]"
}
::http::cleanup $HoroTok
if {[string length $HoroHTML] && [info exists HoroHTML]} {
return [htmlparse::mapEscapes $HoroHTML]
}
}
putlog "[file tail [info script]] loaded!" |
_________________ Life iS Just a dReaM oN tHE wAy to DeaTh |
|
Back to top |
|
 |
Arnold_X-P Master

Joined: 30 Oct 2006 Posts: 220 Location: DALnet - Trinidad - Beni - Bolivia
|
Posted: Fri Jun 07, 2019 10:57 am Post subject: |
|
|
heartbroken, It is possible to change from https://www.lcblack.com/
to https://www.horoscope.com/us/index.aspx
to read from that new web
his contribution would be very generous _________________
thanks to that they help, that others learn  |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Sat Jun 08, 2019 2:15 pm Post subject: |
|
|
I haven't tested! thus, I do not know if it works or not yet ,
but, you can make a test and let me know if you see any Error.
This script requires Tcl 8.6 ,tcllib ,TclTLS and eggdrop1.8 bot!
Code: | # This script using some of Tcl8.6's commands,also needs Tcl-TLS for https links and tcllib for fixed outputs!
package require http
package require htmlparse
package require tls 1.6.4
package require textutil::split
package present Tcl 8.6
package require eggdrop 1.8
# to activate on your #channel : .chanset #channel +Horoscope in PartyLine
setudef flag Horoscope
namespace eval Horoscope {
# You can add multiple Horoscope commands with a space between.
variable HoroCMD ".horo !horo !horoscope"
# Would you like to use this script commands in your bot's pvt?
# 1 yes , 0 no
variable HoroEggPM 1
# users able to make horo queries in seconds:times
variable FludControl 10:3
# eggdrop user flags : general flags|channel flags
variable HoroCmdFlags -|-
# How many chars would allow to print in a line
variable HoroCharsInLineLen 312
# daily horo query link
variable DailyHoroURL {https://www.horoscope.com/us/horoscopes/general/horoscope-general-daily-today.aspx}
# rating stars regexp
variable HoroStarsRE {<div class="ratings">(.+?)</div>}
# daily horoscope regexp
variable HoroDailyRE {<strong class="date">(.*?)</p>}
# matches regexp
variable HoroMatchesRE {<h3>(.*?)</h3>.+?love\">(.*?)</p>.+?friend\">(.*?)</p>.+?career\">(.*?)</p>}
# for filled star highlight
variable UnicodeBlackStar \u2605
# for filled star outputs
variable UnicodeWhiteStar \u2606
# connection timeout time in seconds
variable TimeOutHoro 12
# ratings title:
variable MoodRatings "\00314Today's Star Ratings - Your general mood\003"
# end of settings
foreach CmdSign [split $HoroCMD { }] {
bind pub $HoroCmdFlags $CmdSign [namespace current]::HorosPubProcName
if {$HoroEggPM >= 1 && [string length $HoroEggPM]} {
bind msg $HoroCmdFlags $CmdSign [namespace current]::EggPvtHorosProcName
}
};
putlog "[file tail [info script]] Loaded!"
namespace path {::http:: ::htmlparse:: ::textutil::split::}
register https 443 [list tls::socket -ssl2 0 -ssl3 0 -tls1 1]
proc MainHoroProcName {nick uhost hand chan text} {
variable FludControl ;
set TargetHost [lindex [split $uhost @] 1]
if {![info exists ::HoroFludVar($TargetHost)] && ![info exists ::HoroFludVar($nick)]} {
array set ::HoroFludVar [list $nick [clock seconds] $TargetHost 0]
} else {
incr ::HoroFludVar($TargetHost)
}
if {([expr {[clock seconds] - $::HoroFludVar($nick)}] <= [lindex [split $FludControl :] 0]) && ($::HoroFludVar($TargetHost) >= [lindex [split $FludControl :] 1])} {
putserv "NOTICE $nick :$nick You able to use $::lastbind command [lindex [split $FludControl :] 1] times in [lindex [split $FludControl :] 0] seconds!";
return 0;
}
utimer [lindex [split $FludControl :] 0] [list unset -nocomplain ::HoroFludVar($TargetHost) ::HoroFludVar($nick)]
set HoroRequest [lindex [split [stripcodes * [string tolower $text]]] 0]
set ListOfHoros [dict create aries 1 taurus 2 gemini 3 cancer 4 leo 5 virgo 6 libra 7 scorpio 8 sagittarius 9 capricorn 10 aquarius 11 pisces 12]
if {![llength $HoroRequest]} {
putserv "NOTICE $nick :Usage: $::lastbind <Horoscope>";
return 0
} elseif {$HoroRequest ni [dict keys $ListOfHoros]} {
putserv "NOTICE $nick :\"$HoroRequest\" is not valid!";
return
} else {
set HoroWhatWeGot [::Horoscope::FetchDisHoros ${Horoscope::DailyHoroURL}?sign=[dict get $ListOfHoros $HoroRequest]]
if {[regexp -- $Horoscope::HoroDailyRE $HoroWhatWeGot -> TodaysHoro]} {
::Horoscope::PrintHoro $chan [::Horoscope::HoroCleanUp $TodaysHoro]
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroDailyRE";
}
if {[regexp -- $Horoscope::HoroStarsRE $HoroWhatWeGot -> HiLightStars]} {
puthelp "PRIVMSG $chan :$Horoscope::MoodRatings : [::Horoscope::HoroCleanUp $HiLightStars]";
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroStarsRE";
}
if {[regexp -- $Horoscope::HoroMatchesRE $HoroWhatWeGot -> Matches Love Friend Career]} {
puthelp "PRIVMSG $chan :[::Horoscope::HoroCleanUp [set AllMatches "\00314$Matches\003: $Love - $Friend - $Career"]]";
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroMatchesRE";
}
};
return 0
}
proc HorosPubProcName {nick uhost hand chan arg} {
if {![channel get $chan Horoscope]} { return 0 };
::Horoscope::MainHoroProcName $nick $uhost $hand $chan $arg
}
proc EggPvtHorosProcName {nick uhost hand chan arg} {
::Horoscope::MainHoroProcName $nick $uhost $hand $nick $arg
}
proc PrintHoro {HoroTarget HoroString} {
lmap HoroLines [splitn $HoroString $Horoscope::HoroCharsInLineLen] { puthelp "PRIVMSG $HoroTarget :[::Horoscope::HoroCleanUp $HoroLines]" }
}
proc HoroCleanUp HoroHTMLs {
regsub -all -- {<i class="icon-star-filled highlight"></i>} $HoroHTMLs \00307$Horoscope::UnicodeBlackStar\003 HoroHTMLs
regsub -all -- {<i class="icon-star-filled"></i>} $HoroHTMLs \00314$Horoscope::UnicodeWhiteStar\003 HoroHTMLs
#regsub -all -- {(:?<strong>|</strong>|<b>|</b>)} $HoroHTMLs \002 HoroHTMLs
regsub -all -- {(:?<h4>|</h4>)} $HoroHTMLs \002 HoroHTMLs
regsub -all -- {<p>([^\s]*)} $HoroHTMLs \00304\\0\003 HoroHTMLs
regsub -all -- "<.+?>" $HoroHTMLs {} HoroHTMLs
regsub -all -- {\s+} $HoroHTMLs " " HoroHTMLs
return [string trim $HoroHTMLs]
}
proc FetchDisHoros Link4Horo {
try {
set TokenHoro [geturl $Link4Horo -timeout [expr {round(1000 * $Horoscope::TimeOutHoro)}]]
} on error { HoroErrorMsg } {
putcmdlog "[file tail [info script]]: [string map {\n " "} $HoroErrorMsg]"
} finally {
if {[status $TokenHoro] eq "ok" && [ncode $TokenHoro] == 200} {
set TheHoroData [data $TokenHoro]
} else {
putcmdlog "[file tail [info script]]: [status $TokenHoro] , [code $TokenHoro]" }; cleanup $TokenHoro
if {[info exists TheHoroData] && [string length $TheHoroData]} {
return [mapEscapes $TheHoroData]
} else {
putcmdlog "[file tail [info script]]: Got no any data from: $Link4Horo"
}
}
}
} |
P.S. latest edit! _________________ Life iS Just a dReaM oN tHE wAy to DeaTh
Last edited by heartbroken on Tue Jun 11, 2019 5:46 pm; edited 5 times in total |
|
Back to top |
|
 |
Arnold_X-P Master

Joined: 30 Oct 2006 Posts: 220 Location: DALnet - Trinidad - Beni - Bolivia
|
Posted: Sun Jun 09, 2019 9:37 pm Post subject: |
|
|
heartbroken..
I apologize if it is possible for the tcl to work in eggdrop1.6.21 (tcl8.5) I would really appreciate it, and thanks for your help. _________________
thanks to that they help, that others learn  |
|
Back to top |
|
 |
heartbroken Op

Joined: 23 Jun 2011 Posts: 104 Location: somewhere out there
|
Posted: Mon Jun 10, 2019 8:23 am Post subject: |
|
|
This one tested & fixed. it is workin' now!
Ok This is my last edit . I've made some cosmetic changes for nicer outputs.
Code: | package require http
package require htmlparse
package require tls 1.6.4
setudef flag Horoscope
namespace eval Horoscope {
variable HoroCMD ".horo !horo !horoscope"
variable HoroEggPM 1
variable FludControl 10:3
variable HoroCmdFlags -|-
variable HoroWordsInLineLen 36
variable DailyHoroURL {https://www.horoscope.com/us/horoscopes/general/horoscope-general-daily-today.aspx}
variable HoroStarsRE {<div class="ratings">(.+?)</div>}
variable HoroDailyRE {<strong class="date">(.*?)</p>}
variable HoroMatchesRE {<h3>(.*?)</h3>.+?love\">(.*?)</p>.+?friend\">(.*?)</p>.+?career\">(.*?)</p>}
variable UnicodeBlackStar \u2605
variable UnicodeWhiteStar \u2606
variable TimeOutHoro 12
variable MoodRatings "\00303Today's Star Ratings - Your general mood\003"
foreach CmdSign [split $HoroCMD { }] {
bind pub $HoroCmdFlags $CmdSign [namespace current]::HorosPubProcName
if {$HoroEggPM >= 1 && [string length $HoroEggPM]} {
bind msg $HoroCmdFlags $CmdSign [namespace current]::EggPvtHorosProcName
}
};
putlog "[file tail [info script]] Loaded!"
namespace path {::http:: ::htmlparse::}
register https 443 [list tls::socket -ssl2 0 -ssl3 0 -tls1 1]
proc MainHoroProcName {nick uhost hand chan text} {
variable FludControl
set TargetHost [lindex [split $uhost @] 1]
if {![info exists ::HoroFludVar($TargetHost)] && ![info exists ::HoroFludVar($nick)]} {
array set ::HoroFludVar [list $nick [clock seconds] $TargetHost 1]
} else {
incr ::HoroFludVar($TargetHost)
}
if {([expr {[clock seconds] - $::HoroFludVar($nick)}] < [lindex [split $FludControl :] 0]) && ($::HoroFludVar($TargetHost) > [lindex [split $FludControl :] 1])} {
putserv "NOTICE $nick :$nick You able to use $::lastbind command [lindex [split $FludControl :] 1] times in [lindex [split $FludControl :] 0] seconds!";
return 0;
}
utimer [lindex [split $FludControl :] 0] [list unset -nocomplain ::HoroFludVar($TargetHost) ::HoroFludVar($nick)]
set HoroRequest [lindex [split [stripcodes abcgru [string tolower $text]]] 0]
array set ListOfHoros [list aries 1 taurus 2 gemini 3 cancer 4 leo 5 virgo 6 libra 7 scorpio 8 sagittarius 9 capricorn 10 aquarius 11 pisces 12]
if {![llength $HoroRequest]} {
putserv "NOTICE $nick :Usage: $::lastbind <Horoscope>";
return 0
} elseif {$HoroRequest ni [array names ListOfHoros]} {
putserv "NOTICE $nick :\"$HoroRequest\" is not valid!";
return
} else {
set HoroWhatWeGot [::Horoscope::FetchDisHoros ${Horoscope::DailyHoroURL}?sign=$ListOfHoros($HoroRequest)]
if {[regexp -- $Horoscope::HoroDailyRE $HoroWhatWeGot -> TodaysHoro]} {
::Horoscope::PrintHoro $chan [::Horoscope::HoroCleanUp $TodaysHoro]
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroDailyRE";
}
if {[regexp -- $Horoscope::HoroStarsRE $HoroWhatWeGot -> HiLightStars]} {
puthelp "PRIVMSG $chan :$Horoscope::MoodRatings : [::Horoscope::HoroCleanUp $HiLightStars]";
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroStarsRE";
}
if {[regexp -- $Horoscope::HoroMatchesRE $HoroWhatWeGot -> Matches Love Friend Career]} {
puthelp "PRIVMSG $chan :[::Horoscope::HoroCleanUp [set AllMatches "\00314$Matches\003: $Love - $Friend - $Career"]]";
} else {
putcmdlog "[file tail [info script]]: Somethings wrong with $Horoscope::HoroMatchesRE";
}
};
return 0
}
proc HorosPubProcName {nick uhost hand chan arg} {
if {![channel get $chan Horoscope]} { return 0 };
::Horoscope::MainHoroProcName $nick $uhost $hand $chan $arg
}
proc EggPvtHorosProcName {nick uhost hand chan arg} {
::Horoscope::MainHoroProcName $nick $uhost $hand $nick $arg
}
proc PrintHoro {HoroTarget HoroString} {
if {[set HoroLineLen [llength [set HoroLenght [split $HoroString]]]] > $Horoscope::HoroWordsInLineLen} {
for { set i 0 } { $i < $HoroLineLen } { incr i $Horoscope::HoroWordsInLineLen } {
if {$i == 0} {
puthelp "PRIVMSG $HoroTarget :[join [lrange $HoroLenght $i [expr {$i + ($Horoscope::HoroWordsInLineLen - 1)}]]]"
} {
puthelp "PRIVMSG $HoroTarget :[join [lrange $HoroLenght $i [expr {$i + ($Horoscope::HoroWordsInLineLen - 1)}]]]"
}
}
}
}
proc HoroCleanUp HoroHTMLs {
regsub -all -- {<i class="icon-star-filled highlight"></i>} $HoroHTMLs \00307$Horoscope::UnicodeBlackStar\003 HoroHTMLs
regsub -all -- {<i class="icon-star-filled"></i>} $HoroHTMLs \00314$Horoscope::UnicodeWhiteStar\003 HoroHTMLs
#regsub -all -- {(:?<strong>|</strong>|<b>|</b>)} $HoroHTMLs \002 HoroHTMLs
regsub -all -- {(:?<h4>|</h4>)} $HoroHTMLs \002 HoroHTMLs
regsub -all -- {<p>([^\s]*)} $HoroHTMLs \00304\\0\003 HoroHTMLs
regsub -all -- "<.+?>" $HoroHTMLs {} HoroHTMLs
regsub -all -- {\s+} $HoroHTMLs " " HoroHTMLs
return [string trim $HoroHTMLs]
}
proc FetchDisHoros Link4Horo {
if {[catch { set TokenHoro [geturl $Link4Horo -timeout [expr {round(1000 * $Horoscope::TimeOutHoro)}]] } HoroErrorMsg]} {
putcmdlog "[file tail [info script]]: [string map {\n " "} $HoroErrorMsg]"
}
if {[string equal -nocase [status $TokenHoro] ok] && [ncode $TokenHoro] == 200} {
set TheHoroData [data $TokenHoro]
} else {
putcmdlog "[file tail [info script]]: [status $TokenHoro] , [code $TokenHoro]"
};
cleanup $TokenHoro
if {[info exists TheHoroData] && [string length $TheHoroData]} {
return [mapEscapes $TheHoroData]
} else {
putcmdlog "[file tail [info script]]: Got no any data from: $Link4Horo"
}
}
} |
_________________ Life iS Just a dReaM oN tHE wAy to DeaTh |
|
Back to top |
|
 |
|