egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

googlenews
Goto page 1, 2  Next
 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Thu Oct 24, 2019 6:56 am    Post subject: googlenews Reply with quote

Tcl error [Google:News]: error "no element found" at line 1 character 0

not sure if this even works for anyone but this is the error i get when i try and run this script

any help apperciated
Back to top
View user's profile Send private message
Cadaver
Voice


Joined: 04 Dec 2018
Posts: 18
Location: México

PostPosted: Thu Oct 24, 2019 10:21 am    Post subject: Reply with quote

Well, if you put the code we would see what happens ...

I can tell you that this error is common when you edit the code in a different type of text encoding than the one that works in your eggdrop/shell/vps.
_________________
-- [ Soluciones Hosting ] -- [ ElChatIRC ] --
Back to top
View user's profile Send private message Visit poster's website
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Thu Oct 24, 2019 1:08 pm    Post subject: nothing changed, original script Reply with quote

Code:

# Google news v0.3 by nrt (01Dec2015)
# Updated GoogleNews Country links and added some more lines for redirected link support (04Jan2018) karakedi

package require tdom
package require http
package require htmlparse
package require textutil::split
package require tls 1.6.4
package present Tcl 8.6

set ::oldnews [list ]

set googlelink {https://news.google.com/news/rss/headlines/section/topic/NATION}

# Length of chars in a line.
set newsmax 412

# Links shortened to tinyurl. 1 = true , 0 = false
set tinyurl 1

# 1 = US_en (U.S.A), 2 = TR (Turkey) , 3 = FR (France), 4 = DE (Germany), 5 = UK_en (U.K) , 6 = RU (Russia)
# 7 = IT (Italy) , 8 = NL (Netherlands) , 9 = AU_en (Australia) , 10 = PT (Portugal) , 11 = AR (Arabian World) , 12 = AT_de (Austria)
# 13 = BE_fr (Belgium) , 14 = BR_pt (Brazil) , 15 = BG (Bulgaria) , 16 = CA_en (Canada) , 17 = NZ_en (New Zealand) , 18 = PL (Poland)
# 19 = RO (Romania) , 20 = CS (Czech Republic) , 21 = NO (Norway) , 22 = CH_fr (Switzerland) , 23 = SV (Sweden) , 24 = SR (Serbia)
# 25 = CN_zh (China) , 26 = JA (Japan) , 27 = GR (Greece) , 28 = LT (Lithuania) , 29 = IN_en (India) , 30 = HU (Hungary)
# 31 = AR (Argentina) , 32 = ID (Indonesia) , 33 = MY (Malaysia) , 34 = BN (Bangladesh) , 35 = MX (Mexico) , 36 = PK_en (Pakistan)
# news in this language/nation
set newslang 1

# This is for set a limit, do not post if that headline older than ** minutes
set headlinedelay 20

# .news on <- to enable on your #channel / .news off <- for turn this off!
setudef flag googlenews

bind pub mnf|oa ".news" news_control
bind evnt - init-server news_refresh

if {[package vcompare [package present tls] 1.7] > 0} {
   ::http::register https 443 [list ::tls::socket -autoservername 1]
} else {
   ::http::register https 443 [list ::tls::socket -request 0 -require 1 -ssl2 0 -ssl3 0 -tls1 1]
}

proc langSel {} {
   switch -exact -- $::newslang {
      1 { set url {us&hl=en&gl=US} }
      2 { set url {tr_tr&hl=tr&gl=TR} }
      3 { set url {fr&hl=fr&gl=FR} }
      4 { set url {de&hl=de&gl=DE} }
      5 { set url {uk&hl=en-GB&gl=GB} }
      6 { set url {ru_ru&hl=ru&gl=RU} }
      7 { set url {it&hl=it&gl=IT} }
      8 { set url {nl_nl&hl=nl&gl=NL} }
      9 { set url {au&hl=en-AU&gl=AU} }
      10 { set url {pt-PT_pt&hl=pt-PT&gl=PT} }
      11 { set url {ar_me&hl=ar&gl=ME} }
      12 { set url {de_at&hl=de-AT&gl=AT} }
      13 { set url {fr_be&hl=fr&gl=BE} }
      14 { set url {pt-BR_br&hl=pt-BR&gl=BR} }
      15 { set url {bg_bg&hl=bg&gl=BG} }
      16 { set url {ca&hl=en-CA&gl=CA} }
      17 { set url {nz&hl=en-NZ&gl=NZ} }
      18 { set url {pl_pl&hl=pl&gl=PL} }
      19 { set url {ro_ro&hl=ro&gl=RO} }
      20 { set url {cs_cz&hl=cs&gl=CZ} }
      21 { set url {no_no&hl=no&gl=NO} }
      22 { set url {fr_ch&hl=fr-CH&gl=CH} }
      23 { set url {sv_se&hl=sv&gl=SE} }
      24 { set url {sr_rs&hl=sr&gl=RS} }
      25 { set url {cn&hl=zh-CN&gl=CN} }
      26 { set url {jp&hl=ja&gl=JP} }
      27 { set url {el_gr&hl=el&gl=GR} }
      28 { set url {lt_lt&hl=lt&gl=LT} }
      29 { set url {in&hl=en-IN&gl=IN} }
      30 { set url {hu_hu&hl=hu&gl=HU} }
      31 { set url {es_ar&hl=es-419&gl=AR} }
      32 { set url {id_id&hl=id&gl=ID} }
      33 { set url {en_my&hl=en-MY&gl=MY} }
      34 { set url {bn_bd&hl=bn&gl=BD} }
      35 { set url {es_mx&hl=es-419&gl=MX} }
      36 { set url {en_pk&hl=en&gl=PK} }
      default { set url {us&hl=en&gl=US} }
   }
   return ${::googlelink}?ned=$url
}

proc news_refresh {type} {
   foreach chan [channels] newsbind [binds time] {
      if {([lsearch -exact [channel info $chan] "+googlenews"] != "-1")\
            && ![string match "*Google:News*" $newsbind]} {
         bind time - "*" Google:News
         return 1
      }
   }
}

proc news_control {nick uhost hand chan text} {
   switch -nocase -- [lindex [split $text] 0] {
      "on" { if {[channel get $chan googlenews]} {
            puthelp "privmsg $chan :News already running @ $chan"
         } {
            bind time - "*" Google:News
            channel set $chan +googlenews
            puthelp "privmsg $chan :News now enabled @ $chan"
         }
      }
      "off" { if {![channel get $chan googlenews]} {
            puthelp "privmsg $chan :News already disabled @ $chan"
         } {
            unbind time - "*" Google:News
            channel set $chan -googlenews
            puthelp "privmsg $chan :News now stopped @ $chan"
         }
      }
      default { puthelp "privmsg $chan :Usage: $::lastbind <on/off>" }
   }
   return 0
}

proc getit {url} {
   if {[catch {set token [http::geturl $url -binary 1 -timeout 15000]} error]} {
      putcmdlog "[string map [list \n " "] $error]"
      return 0
   } elseif {[http::status $token] eq "ok" && [http::ncode $token] == "200"} {
      set data [http::data $token]
      ::http::cleanup $token
   } elseif {[string match *[http::ncode $token]* "307|303|302|301"]} {
      upvar #0 $token state
      foreach {names values} $state(meta) {
         if {[regexp -- {^Location$} $names]} {
            putlog "Redirecting to $values"
            ::http::cleanup $token
            if {[catch {set tok [http::geturl $values -binary 1 -timeout 15000]} err]} {
               putcmdlog "[string map [list \n " "] $err]"
               break
            } elseif {[http::status $tok] eq "ok" && [http::ncode $tok] == "200"} {
               set data [http::data $tok]
               ::http::cleanup $tok
            } else {
               putcmdlog "[http::status $tok] - [http::code $tok]"
               ::http::cleanup $tok
            }
         }
      }
   } else {
      putcmdlog "[http::status $token] - [http::code $token]"
      ::http::cleanup $token
   }
   if {[info exists data]} {
      return [encoding convertfrom utf-8 $data]
   }
}

proc newsdom {} {
   set document [dom parse [getit [langSel]]]
   set root [$document documentElement]
   foreach id [$root selectNodes "/rss/channel/item"] {
      set description [[$id selectNodes "description"] text]
      set pubDate [[$id selectNodes "pubDate"] text]
      set newsurl [[$id selectNodes "link"] text]
      lappend news "[dom_trim $description] | [dom_trim $newsurl] | [clock scan [dom_trim $pubDate]]"
   }
   $document delete
   set listnews [lindex [lsort -integer -decreasing -index end $news] 0]
   return [join [htmlparse::mapEscapes $listnews]]
}

proc news_print {where what} {
   regexp {^(.*?)(http(?:s|)://[^\s]+)(.*?)$} $what - res links _
   set output [textutil::split::splitn $what $::newsmax]
   if {[string match *${links}* $output]} {
      lmap newsout $output { puthelp "privmsg $where :$newsout" }
   } else {
      lmap newsout [textutil::split::splitn $what [string length $res]] { puthelp "privmsg $where :$newsout" }
   }
}

proc dom_trim {str} {
   regsub -all -nocase {(?:<strong>|</strong>|<b>|</b>)} $str "\002" str
   regsub -all -- {<font color="#6f6f6f">(.*?)</font>} $str "(\00304\\1\003)" str
   set str [string map [list &lt\; \u003c &gt\; \u003e &nbsp\; \u0020 \" \u0027] $str]
   regsub -all -- "<.+?>" $str { } str
   regsub -all -- {\s+} $str "\u0020" str
   return [string trim $str]
}

proc news_tiny {link} {
   set tinyurl [getit http://tinyurl.com/api-create.php?[http::formatQuery url $link]]
   if {[info exists tinyurl] && [string length $tinyurl]} {
      return $tinyurl
   } else {
      return $link
   }
}

proc Google:News {args} {
   foreach chan [channels] {
      if {[channel get $chan googlenews]} {
         set news [newsdom]
         set newsdesc [lindex [split $news |] 0]
         set newslink [lindex [split $news |] 1]
         set newstime [lindex [split $news |] end]
         scan $newsdesc {%[^(]} headline
         if {![string match *${newslink}* $::oldnews] && ($headline ni $::oldnews)\
               && ([expr {([clock seconds] - ${newstime}) < (${::headlinedelay} * 60)}])} {
            if {$::tinyurl < "1" || ![string length $::tinyurl]} {
               news_print $chan "$newsdesc : $newslink ([duration [expr {[clock seconds] - $newstime}]] ago.)"
            } else {
               news_print $chan "$newsdesc : [news_tiny [string trim $newslink]] ([duration [expr {[clock seconds] - $newstime}]] ago.)"
            }
            set ::oldnews $news
         }
      }
   }
   return 0
}

putlog "ok..."
Back to top
View user's profile Send private message
heartbroken
Op


Joined: 23 Jun 2011
Posts: 106
Location: somewhere out there

PostPosted: Sat Oct 26, 2019 8:38 am    Post subject: Reply with quote

this one: http://paste.tclhelp.net/?id=6gql is latest GoogleNews version.
I think,he didn't send it to TclArchive yet.

Edit: Updated paste.tclhelp link! I've took this from my bot and I don't get any error.
_________________
Life iS Just a dReaM oN tHE wAy to DeaTh


Last edited by heartbroken on Sat Oct 26, 2019 11:19 am; edited 3 times in total
Back to top
View user's profile Send private message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Sat Oct 26, 2019 10:49 am    Post subject: googlenews Reply with quote

the good new is that there is no more error

the bad news is, it's not working lol

rebooted the bot, now it works Smile
thank you heartbroken
much appreciated
Back to top
View user's profile Send private message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Sat Oct 26, 2019 11:01 am    Post subject: google news Reply with quote

[08:58:02] Tcl error [Google:News]: wrong # args: should be "set varName ?newValue?"

new error to work on lol

can't use the url shortener, the original url works fime, still get that error tho, not sure why
Back to top
View user's profile Send private message
heartbroken
Op


Joined: 23 Jun 2011
Posts: 106
Location: somewhere out there

PostPosted: Sat Oct 26, 2019 4:07 pm    Post subject: Reply with quote

I haven't checked url shortener option before,but yes, you were right! somethings looks suspicious in there.
I've just checked to bot/logs ,still I couldn't see any error like yours in there!

workaround for url shortener:
goto getshort procedure and replace it :
Code:
if {[info exists data]} {
      return $data
   } else {
      return $newslink
   }

to:
Code:
if {[info exists data]} {
      return $data
   }


and in Google:News proc replace :
Code:
set newslink [lindex [split $news |] 1]

to:
Code:
set newslink [string trimleft [lindex [split $news |] 1]]

then find :
Code:
news_print $chan "$newsdesc $newslink ([duration [expr {[clock seconds] - $newstime}]] ago.)"
            } else {
               news_print $chan "$newsdesc $newslink ([duration [expr {[clock seconds] - $newstime}]] ago.)"

and replace it with :
Code:
news_print $chan "$newsdesc [news_shortened $newslink] ([duration [expr {[clock seconds] - $newstime}]] ago.)"
            } else {
               news_print $chan "$newsdesc [news_shortened $newslink] ([duration [expr {[clock seconds] - $newstime}]] ago.)"


and .rehash or .restart the bot and see if it works as expected!
_________________
Life iS Just a dReaM oN tHE wAy to DeaTh
Back to top
View user's profile Send private message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Sat Oct 26, 2019 7:21 pm    Post subject: googlenews Reply with quote

thanks, gonna try that right after i stuff me face.

Confused
Back to top
View user's profile Send private message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Mon Oct 28, 2019 2:45 pm    Post subject: googlenews Reply with quote

did the modes you posted, works fine as wine.
lol, but, ok - HTTP/1.1 502 Bad Gateway
and Tcl error [Google:News]: can't read "links": no such variable Wink
Back to top
View user's profile Send private message
heartbroken
Op


Joined: 23 Jun 2011
Posts: 106
Location: somewhere out there

PostPosted: Mon Oct 28, 2019 6:20 pm    Post subject: Reply with quote

seems like, its because of trimleft the regexp in news_print proc fails.
but,at the same time, trimleft helps to get fixed shortened news link!

you can try this edit: http://paste.tclhelp.net/?id=6gqu
I've been watching at partyline and checking logs for half an hour,i still didn't see error!
_________________
Life iS Just a dReaM oN tHE wAy to DeaTh


Last edited by heartbroken on Tue Oct 29, 2019 9:46 am; edited 1 time in total
Back to top
View user's profile Send private message
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Mon Oct 28, 2019 8:07 pm    Post subject: googlenews Reply with quote

lol maybe it's my own personal error? Very Happy
Back to top
View user's profile Send private message
ComputerTech
Master


Joined: 22 Feb 2020
Posts: 393

PostPosted: Sat Apr 18, 2020 9:38 pm    Post subject: Reply with quote

LOL your special eh i have had the same problem with that script cant remember how i fixed it, if i remember i will post how i did it Wink
_________________
ComputerTech
Back to top
View user's profile Send private message Send e-mail Visit poster's website
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Sun Apr 19, 2020 2:35 am    Post subject: Reply with quote

Mr. Green Mr. Green Mr. Green Mr. Green Tanks
Back to top
View user's profile Send private message
ComputerTech
Master


Joined: 22 Feb 2020
Posts: 393

PostPosted: Wed Apr 29, 2020 8:05 am    Post subject: Reply with quote

can you pastebin the way you have your current script Laughing
_________________
ComputerTech
Back to top
View user's profile Send private message Send e-mail Visit poster's website
roger
Halfop


Joined: 17 Jun 2018
Posts: 56

PostPosted: Wed Apr 29, 2020 8:25 am    Post subject: thx anyways Reply with quote

no longer use this script
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber