| View previous topic :: View next topic |
| Author |
Message |
blameshift Voice
Joined: 27 Mar 2017 Posts: 12
|
Posted: Sun Nov 17, 2019 4:57 am Post subject: RSS feed reader for eggdrop help fix please |
|
|
Hello
Can someone fix this script for me please
i keep getting these error
<AnimeBot> [09:41:00] Tcl error in script for 'timer1':
<AnimeBot> [09:41:00] invalid command name "http::register"
<AnimeBot> [09:44:00] Tcl error in script for 'timer4':
<AnimeBot> [09:44:00] invalid command name "http::register"
<AnimeBot> Added feed Anime-Interviews to #anime as Anime-Interviews <AnimeBot> [09:47:00] Tcl error in script for 'timer8':
<AnimeBot> [09:47:00] invalid command name "http::register"
Here's the script
| Code: | ##############################################################################################
## .rss in the party line for commands and syntax. Example Feed Add Below: ##
##.rss add #Hawkee hawkee Hawkee http://www.hawkee.com/comment.rss.php?tool_type=snippet_id ##
##############################################################################################
## ____ __ ########################################### ##
## / __/___ _ ___ _ ___/ /____ ___ ___ ########################################### ##
## / _/ / _ `// _ `// _ // __// _ \ / _ \ ########################################### ##
## /___/ \_, / \_, / \_,_//_/ \___// .__/ ########################################### ##
## /___/ /___/ /_/ ########################################### ##
## ########################################### ##
##############################################################################################
## ## Start Setup. ## ##
##############################################################################################
namespace eval rssreader {
## Edit textf to change the color/state of the text shown ## ##
variable textf "\017\00304"
## Edit linkf to change the color/state of the links ## ##
variable linkf "\017\037"
## Change usetiny to shorten links with tinyurl. 1 = on , 0 = off ## ##
variable usetiny 1
## Change useisgd to shorten links with is.gd. 1 = on , 0 = off ## ##
variable useisgd 0
## Edit maxresults to the amount of results you want per query. This will not cause ## ##
## You to lose results. It will only spread them out over several querys. ## ##
variable maxresults 2
## Edit checkdelay to change the frequency feed pages are checked. Delay is in minutes. ## ##
variable checkdelay 3
## Edit startupdelay to add delay to startup/restart. Delay is in minutes. ## ##
variable startupdelay 2
##############################################################################################
## ## End Setup. ## ##
##############################################################################################
bind dcc - rss rssreader::settings
bind evnt -|- init-server rssreader::loadhash
bind evnt -|- prerehash rssreader::loadhash
proc settings {hand idx text} {
set choice [lindex $text 0]; set channel [lindex $text 1]
set name [lindex $text 2]; set logo [lindex $text 3]
set link [lindex $text 4]
if {[string equal -nocase "add" $choice] && $link != ""} {
set deleteinfo [string map {\[ ? \] ?} [hget "rssreader" $name]]
if {[set indx [lsearch -glob [timers] "*$deleteinfo*"]] != -1 && $deleteinfo != "0"} {
killtimer [lindex [lindex [timers] $indx] 2]
}
hadd "rssreader" "$name" "rssreader::main {$channel $logo $link}"
savehash
putdcc $idx "Added feed $name to $channel as $logo $link"
rssreader::main "$channel $logo $link"
} elseif {[string equal -nocase "addxml" $choice] && $link != ""} {
set deleteinfo [string map {\[ ? \] ?} [hget "rssreader" $name]]
if {[set indx [lsearch -glob [timers] "*$deleteinfo*"]] != -1 && $deleteinfo != "0"} {
killtimer [lindex [lindex [timers] $indx] 2]
}
hadd "rssreader" "$name" "rssreader::type2 {$channel $logo $link}"
savehash
putdcc $idx "Added feed $name to $channel as $logo $link"
rssreader::type2 "$channel $logo $link"
} elseif {[string equal -nocase "addssl" $choice] && $link != ""} {
set deleteinfo [string map {\[ ? \] ?} [hget "rssreader" $name]]
if {[set indx [lsearch -glob [timers] "*$deleteinfo*"]] != -1 && $deleteinfo != "0"} {
killtimer [lindex [lindex [timers] $indx] 2]
}
hadd "rssreader" "$name" "rssreader::type3 {$channel $logo $link}"
savehash
putdcc $idx "Added feed $name to $channel as $logo $link"
rssreader::type3 "$channel $logo $link"
} elseif {[string equal -nocase "list" $choice]} {
putdcc $idx "\[RSS list\]"
set count [hfind "rssreader" "*" 0]; set counter 1
while {$count >= $counter} {
putdcc $idx "[hfind "rssreader" "*" $counter]"
incr counter
}
} elseif {[string equal -nocase "info" $choice] && $channel != ""} {
putdcc $idx "[hget "rssreader" $channel]"
} elseif {[string equal -nocase "delete" $choice] && $channel != ""} {
set deleteinfo [string map {\[ ? \] ?} [hget "rssreader" $channel]]
hdel "rssreader" $channel
savehash
if {[set indx [lsearch -glob [timers] "*$deleteinfo*"]] != -1 && $deleteinfo != "0"} {
killtimer [lindex [lindex [timers] $indx] 2]
putdcc $idx "Removed $channel from RSS"
} else {
putdcc $idx "$channel not found"
}
} elseif {[string equal -nocase "timers" $choice]} {
putdcc $idx [timers]
} elseif {[string equal -nocase "rehash" $choice]} {
putdcc $idx "rehashing rss...."
hfree rsstempold
hfree rsstempnew
putdcc $idx "done"
} else {
putdcc $idx "\[RSS Syntax\]"
putdcc $idx "Add Feed: .rss add <#chan1,#chan2,#chanetc> <name> <logo> <link>"
putdcc $idx "Add Xml Feed: .rss addxml <#chan1,#chan2,#chanetc> <name> <logo> <link>"
putdcc $idx "Add SSL Feed: .rss addssl <#chan1,#chan2,#chanetc> <name> <logo> <link>"
putdcc $idx "Delete Feed: .rss delete <name>"
putdcc $idx "Info Feed: .rss info <name>"
putdcc $idx "List Feeds: .rss list"
putdcc $idx "Help Feeds: .rss"
}
}
proc main {text} {
set chan [lindex $text 0]; set logo [lindex $text 1]; set linker [lindex $text 2]
set title ""; set link ""; set description ""; set maxcount 1; set json ""
if {[set indx [lsearch -glob [timers] "*rssreader::main {$chan [string map {\[ ? \] ?} $logo] ${linker}}*"]] != -1} {
killtimer [lindex [lindex [timers] $indx] 2]
}
timer $rssreader::checkdelay "rssreader::main {$chan $logo $linker}"
set rssreaderurl "/ajax/services/feed/load?v=1.0&q=${linker}"
set rssreadersite "ajax.googleapis.com"; set rssout ""
if {[catch {set rssreadersock [socket -async $rssreadersite 80]} sockerr]} {
return 0
} else {
puts $rssreadersock "GET $rssreaderurl HTTP/1.0"
puts $rssreadersock "Host: $rssreadersite"
puts $rssreadersock "User-Agent: Opera 9.6"
puts $rssreadersock "Connection: close"
puts $rssreadersock ""
flush $rssreadersock
while {![eof $rssreadersock]} {
set rssreadervar " [string map {<![CDATA[ "" ]]> "" \$ \002\$\002 \[ \( \] \)} [gets $rssreadersock]] "
if {[regexp {\"responseStatus\":\s?400} $rssreadervar]} {
if {[set indx [lsearch -glob [timers] "*rssreader::main {$chan $logo ${linker}}*"]] != -1} {
killtimer [lindex [lindex [timers] $indx] 2]
}
type2 "$chan $logo $linker"
close $rssreadersock
return
} else {
regexp {\:\[(\{.*)$} $rssreadervar match rssout
set rssout [regexp -all -inline {\{(.*?)\}} $rssout]
if {$rssout != ""} {
set count 0
foreach {match matched} $rssout {
incr count
set matched [regexp -all -inline {(".*?":".*?"\,)} $match]
foreach {innermatch innermatched} $matched {
regexp {\"(.*?)\":\".*?\"\,} $innermatch match varname
regexp {\".*?\":\"(.*?)\"\,} $innermatch match value
set value [string map {\$ \002\$\002 \] \002\]\002 \[ \002\[\002} $value]
set $varname $value
}
if {[hfindexact "rsstempold" "${link}" 1] != $link} {
if {$title == ""} { set title $description }
set linked $link
if {$rssreader::usetiny} { set linked [string trimright [tiny $link]] }
if {$rssreader::useisgd} { set linked [string trimright [isgd $link]] }
if {$maxcount <= $rssreader::maxresults} {
putserv "PRIVMSG $chan :${logo} ${rssreader::textf}[dehex $title] ${rssreader::linkf}${linked}"
incr maxcount
hadd "rsstempnew" $link 1
}
}
}
hfree rsstempold
hcopy rsstempnew rsstempold
rssreader::savetemphash
}
}
}
close $rssreadersock
}
}
proc type2 {text} {
set chan [lindex $text 0]; set logo [lindex $text 1]; set linker [lindex $text 2]
set title ""; set link ""; set description ""
if {[set indx [lsearch -glob [timers] "*rssreader::type2 {$chan [string map {\[ ? \] ?} $logo] ${linker}}*"]] != -1} {
killtimer [lindex [lindex [timers] $indx] 2]
}
timer $rssreader::checkdelay "rssreader::type2 {$chan $logo $linker}"
regexp -- {https?\:\/\/(.*?)(\/.*)$} $linker wholematch rsstype2site rsstype2url
set itemfound 0 ; set maxcount 1
if {[catch {set rsstype2sock [socket -async $rsstype2site 80]} sockerr]} {
return 0
} else {
puts $rsstype2sock "GET $rsstype2url HTTP/1.0"
puts $rsstype2sock "Host: $rsstype2site"
puts $rsstype2sock "User-Agent: Opera 9.6"
puts $rsstype2sock "Connection: close"
puts $rsstype2sock ""
flush $rsstype2sock
while {![eof $rsstype2sock]} {
set rsstype2var " [string map {<![CDATA[ "" ]]> "" \$ \002\$\002 \[ \( \] \)} [gets $rsstype2sock]] "
if {[string match {*<item>*} $rsstype2var]} { set itemfound 1 }
if {[regexp {<title>(.*?)(?:<\/title>|$)} $rsstype2var match title]} { }
if {[regexp {<link>(.*?)(?:<\/link>|$)} $rsstype2var match link]} { }
if {[string match {*</item>*} $rsstype2var]} {
if {[hfindexact "rsstempold" "${link}" 1] != $link} {
if {$itemfound} {
if {$maxcount <= $rssreader::maxresults} {
set linked $link
if {$rssreader::usetiny} { set linked [string trimright [tiny $link]] }
if {$rssreader::useisgd} { set linked [string trimright [isgd $link]] }
putserv "PRIVMSG $chan :${logo} ${rssreader::textf}[dehex $title] ${rssreader::linkf}${linked}"
incr maxcount
hadd "rsstempnew" $link 1
}
}
}
}
}
set itemfound 0
hfree rsstempold
hcopy rsstempnew rsstempold
rssreader::savetemphash
close $rsstype2sock
}
}
proc type3 {text} {
set chan [lindex $text 0]; set logo [lindex $text 1]; set linker [lindex $text 2]
set title ""; set link ""; set description ""
if {[set indx [lsearch -glob [timers] "*rssreader::type3 {$chan [string map {\[ ? \] ?} $logo] ${linker}}*"]] != -1} {
killtimer [lindex [lindex [timers] $indx] 2]
}
timer $rssreader::checkdelay "rssreader::type3 {$chan $logo $linker}"
regexp -- {https?\:\/\/(.*?)(\/.*)$} $linker wholematch rsstype3site rsstype3url
set itemfound 0 ; set maxcount 1 ; set count 1 ; set counter 1
http::register https 443 [list tls::socket -tls1 1]
if { [info exists {my-ip}] == 1 && [string length ${my-ip}] > 0} {
http::register https 443 [list tls::socket -myaddr ${my-ip} -tls1 1]
} elseif { [info exists {my-hostname}] == 1 && [string length ${my-hostname}] > 0} {
http::register https 443 [list tls::socket -myaddr ${my-hostname} -tls1 1]
} else {
http::register https 443 [list tls::socket -tls1 1]
}
set type3searchtoken [::http::geturl "https://${rsstype3site}${rsstype3url}"]
set type3searchdata [string map {<!\[CDATA\[ \"\" \]\]> "" \$ \\\$ \[ \\\[ \] \\\]} [::http::data $type3searchtoken]]
::http::cleanup $type3searchtoken
::http::unregister https
set title [regexp -all -inline {<title>(.*?)<\/title>} $type3searchdata]
set link [regexp -all -inline {<link>(.*?)<\/link>} $type3searchdata]
while {$counter <= [llength $title]} {
set thislink [lindex ${link} $counter]
if {[hfindexact "rsstempold" "${thislink}" 1] != $thislink} {
if {$maxcount <= $rssreader::maxresults} {
set linked $thislink
if {$rssreader::usetiny} { set linked [string trimright [tiny $thislink]] }
if {$rssreader::useisgd} { set linked [string trimright [isgd $thislink]] }
putserv "PRIVMSG $chan :${logo} ${rssreader::textf}[dehex [lindex $title $counter]] ${rssreader::linkf}${linked}"
hadd "rsstempnew" $thislink 1
incr maxcount 1
}
incr count 2
}
incr counter 2
}
hfree rsstempold
hcopy rsstempnew rsstempold
rssreader::savetemphash
}
proc tiny {link} {
set tinysite tinyurl.com
set tinyurl /api-create.php?url=[urlencode ${link}]
if {[catch {set tinysock [socket -async $tinysite 80]} sockerr]} {
putlog "$tinysite $tinyurl $sockerr error"
return $link
} else {
puts $tinysock "GET $tinyurl HTTP/1.0"
puts $tinysock "Host: $tinysite"
puts $tinysock "User-Agent: Opera 9.6"
puts $tinysock "Connection: close"
puts $tinysock ""
flush $tinysock
while {![eof $tinysock]} {
set tinyvar " [gets $tinysock] "
if {[regexp {(http:\/\/.*)} $tinyvar match tinyresult]} {
close $tinysock
return [string map {http:// https://} $tinyresult]
}
}
close $tinysock
return $link
}
}
proc isgd {link} {
set isgdsite is.gd
set isgdurl /create.php?format=simple&url=[urlencode ${link}]
if {[catch {set isgdsock [socket -async $isgdsite 80]} sockerr]} {
putlog "$isgdsite $isgdurl $sockerr error"
return $link
} else {
puts $isgdsock "GET $isgdurl HTTP/1.0"
puts $isgdsock "Host: $isgdsite"
puts $isgdsock "User-Agent: Opera 9.6"
puts $isgdsock "Connection: close"
puts $isgdsock ""
flush $isgdsock
while {![eof $isgdsock]} {
set isgdvar " [gets $isgdsock] "
if {[regexp {(http:\/\/.*)} $isgdvar match isgdresult]} {
close $isgdsock
return $isgdresult
}
}
close $isgdsock
return $link
}
}
proc hex {decimal} { return [format %x $decimal] }
proc decimal {hex} { return [expr 0x$hex] }
proc dehex {string} {
regsub -all {^\{|\}$} $string "" string
set string [subst [regsub -nocase -all {\\u([a-f0-9]{4})} $string {[format %c [decimal \1]]}]]
set string [subst [regsub -nocase -all {\%([a-f0-9]{2})} $string {[format %c [decimal \1]]}]]
set string [subst [regsub -nocase -all {\&#([0-9]{4});} $string {[format %c \1]}]]
set string [subst [regsub -nocase -all {\&#x([0-9]{2});} $string {[format %c [decimal \1]]}]]
set string [string map {" \" · · & & <b> \002 </b> \002 – – » \
» « « Ü Ü ü ü Á Á á á É É é é Í Í í \
í Ó Ó ó ó Ñ Ñ ñ ñ Ú Ú ú ú æ æ " " ' \' \
\( \002\(\002 \) \002\)\002 \{ \002\{\002 \} \002\}\002} $string]
return $string
}
proc urlencode {string} {
regsub -all {^\{|\}$} $string "" string
return [subst [regsub -nocase -all {([^a-z0-9\+])} $string {%[format %x [scan "\\&" %c]]}]]
}
proc hadd {hashname hashitem hashdata } {
global $hashname
set ${hashname}($hashitem) $hashdata
}
proc hget {hashname hashitem} {
upvar #0 $hashname hgethashname
if {[info exists hgethashname($hashitem)]} {
return $hgethashname($hashitem)
} else {
return 0
}
}
proc hfind {hashname search value} {
upvar #0 $hashname hfindhashname
if {[array exists hfindhashname]} {
if {$value == 0} {
return [llength [array names hfindhashname $search]]
} else {
set value [expr $value - 1]
return [lindex [array names hfindhashname $search] $value]
}
}
}
proc hfindexact {hashname search value} {
upvar #0 $hashname hfindhashname
if {[array exists hfindhashname]} {
if {$value == 0} {
return [llength [array names hfindhashname -exact $search]]
} else {
set value [expr $value - 1]
return [lindex [array names hfindhashname -exact $search] $value]
}
}
}
proc hsave {hashname filename} {
upvar #0 $hashname hsavehashname
if {[array exists hsavehashname]} {
set hsavefile [open $filename w]
foreach {key value} [array get hsavehashname] {
puts $hsavefile "${key}=${value}"
}
close $hsavefile
}
}
proc hload {hashname filename} {
upvar #0 $hashname hloadhashname
hfree $hashname
set hloadfile [open $filename]
set linenum 0
while {[gets $hloadfile line] >= 0} {
if {[regexp -- {([^\s]+)=(.*)$} $line wholematch item data]} {
set hloadhashname($item) $data
}
}
close $hloadfile
}
proc hfree {hashname} {
upvar #0 $hashname hfreehashname
if {[array exists hfreehashname]} {
foreach key [array names hfreehashname] {
unset hfreehashname($key)
}
}
}
proc hdel {hashname hashitem} {
upvar #0 $hashname hdelhashname
if {[info exists hdelhashname($hashitem)]} {
unset hdelhashname($hashitem)
}
}
proc hcopy {hashfrom hashto} {
upvar #0 $hashfrom hashfromlocal $hashto hashtolocal
array set hashtolocal [array get hashfromlocal]
}
proc savetemphash {} {
#hsave "rsstempnew" "${::network}rsstemp.hsh"
}
proc savehash {} {
hsave "rssreader" "${::network}rssreader.hsh"
}
proc loadhash {type} {
if {[file exists "${::network}rssreader.hsh"]} {
rssreader::hload "rssreader" "${::network}rssreader.hsh"
}
if {[file exists "${::network}rsstemp.hsh"]} {
#rssreader::hload "rsstempnew" "${::network}rsstemp.hsh"
#rssreader::hload "rsstempold" "${::network}rsstemp.hsh"
}
set count $rssreader::startupdelay
foreach {key value} [array get ::rssreader] {
if {[set indx [lsearch -glob [timers] "*$value*"]] != -1} {
killtimer [lindex [lindex [timers] $indx] 2]
}
timer $count $value
incr count
}
}
}
putlog "\002*Loaded* \017\00304\002RSS Reader\017 \002by \
Ford_Lawnmower irc.GeekShed.net #Script-Help .rss for help" |
If someone can fix the error i get that'll be super thanks all  |
|
| Back to top |
|
 |
caesar Mint Rubber

Joined: 14 Oct 2001 Posts: 3741 Location: Mint Factory
|
Posted: Sun Nov 17, 2019 12:18 pm Post subject: |
|
|
Add:
| Code: |
package require http
|
before or after the bind lines and should work. _________________ Once the game is over, the king and the pawn go back in the same box. |
|
| Back to top |
|
 |
blameshift Voice
Joined: 27 Mar 2017 Posts: 12
|
Posted: Sun Nov 17, 2019 7:42 pm Post subject: |
|
|
| caesar wrote: | Add:
| Code: |
package require http
|
before or after the bind lines and should work. |
Thank you so much caesar it worked
I also had to add
package require tls
because i was getting Tcl error in script invalid command name "tls::socket"
all working now
Thanks again  |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|