View previous topic :: View next topic |
Author |
Message |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Fri Mar 19, 2021 12:13 am Post subject: Google search |
|
|
So was trying to make a Google search script, which eould retrieve the URL and Title of the search term, (this is my first time messing with http and websites)
Code: |
bind PUB - "!google" ct:google
package require http
package require tls
proc ct:google {nick host hand chan text} {
set token [http::geturl https://www.google.com/search?q=[join $text +] -timeout 9000]
set data [http::data $token]
putserv "PRIVMSG $chan :$data"
}
|
So i also need to figure out how to make it for https/tls as google only works that way, if i use a http link for $token it dumps a pile of http code so, again i will try working on it tomorrow, but will appreciate any/all help I noticed other web scripts use regex, but again i am trying to figure that out heh  _________________ ComputerTech |
|
Back to top |
|
 |
CrazyCat Revered One

Joined: 13 Jan 2002 Posts: 1108 Location: France
|
Posted: Fri Mar 19, 2021 5:14 am Post subject: |
|
|
Loading tls package but not using it...
Code: | bind PUB - "!google" ct:google
package require http
package require tls
proc ct:google {nick host hand chan text} {
http::register https 443 [list ::tls::socket]
set token [http::geturl https://www.google.com/search?q=[join $text +] -timeout 9000]
set data [http::data $token]
putserv "PRIVMSG $chan :$data"
http::unregister https
} |
_________________ 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 |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Fri Mar 19, 2021 10:40 am Post subject: |
|
|
oh, lmfao, thanks CrazyCat, i'll test it right away
EDIT
just tested it and when i do !google lego ,i get this weird code
Code: |
ComputerTech_ !google lego
Tech <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
|
_________________ ComputerTech |
|
Back to top |
|
 |
CrazyCat Revered One

Joined: 13 Jan 2002 Posts: 1108 Location: France
|
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Fri Mar 19, 2021 1:03 pm Post subject: |
|
|
Oh, i see, i didn't realise that lol.
Will try see how to convert the html code into readable then  _________________ ComputerTech |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Sat Mar 20, 2021 5:09 pm Post subject: |
|
|
Okay, finally got a working version
Code: |
######################################################################################
# CT-Google.tcl
######################################################################################
#Author ComputerTech
#IRC Irc.DareNet.Org #ComputerTech
#Email ComputerTech@DareNet.Org
#GitHub https://github.com/computertech312
#Version 0.1
#Released 20/03/2021
######################################################################################
# Description:
#
# An Elaborate Google Search Script
#
#
# Credits:
#
# Special thanks to launchd, spyda and CrazyCat
#
#
# History:
#
# - 0.1: First release.
#
######################################################################################
# Start Of Configuration #
##########################
# Set trigger of the script.
##
set ctgg(trig) "!google"
###################
# Set flag for Commands.
##
# Owner = n
# Master = m
# Op = o
# Voice = v
# Friend = f
# Everyone = -
##
set ctgg(flag) "ofmn"
###################
# Set API Key
##
set ctgg(api) "Your-API-Key-Here"
##################
# Set to use Notice Or Privmsg for Output of Commands
##
# 0 = Notice
# 1 = Privmsg
# 2 = Channel
##
set ctcmd(msg) "0"
########################
# End Of Configuration #
######################################################################################
bind PUB $ctgg(flag) $ctgg(trig) goo:gle
package require json
package require tls
package require http
proc goo:gle {nick host hand chan text} {
global ctgg
set google "\0032G\003\0034o\003\0038o\003\0032g\003\0033l\003\0034e\003"
http::register https 443 [list ::tls::socket]
set url "https://www.googleapis.com/customsearch/v1?key=$ctgg(api)&cx=016496445636816056556:qvzl4ib4xtb&q=[join $text +]"
set data "[http::data [http::geturl "$url" -timeout 10000]]"
set datadict [::json::json2dict $data]
set items [dict get $datadict "items"]
set item [lindex $items 0]
set title [dict get $item "title"]
set link [dict get $item "link"]
set info [dict get $item "snippet"]
switch -- $ctgg(msg) {
"0" {set ctgg(output) "NOTICE $nick"}
"1" {set ctgg(output) "PRIVMSG $nick"}
"2" {set ctgg(output) "PRIVMSG $chan"}
}
}
putserv "$ctgg(output) :$google $title / $link / $info"
http::unregister https
}
######################################################################################
|
It's working perfectly, but i plan to add much more things
Any ideas are much appreciated  _________________ ComputerTech |
|
Back to top |
|
 |
CrazyCat Revered One

Joined: 13 Jan 2002 Posts: 1108 Location: France
|
Posted: Sat Mar 20, 2021 6:44 pm Post subject: |
|
|
Don't use:
Code: | set url "https://www.googleapis.com/customsearch/v1?key=$ctgg(api)&cx=016496445636816056556:qvzl4ib4xtb&q=[join $text +]"
set data "[http::data [http::geturl "$url" -timeout 10000]]" |
Better use:
Code: | set uargs [http::formatQuery key $ctgg(api) cx 016496445636816056556:qvzl4ib4xtb q $text]
set data [http::data [http::geturl "https://www.googleapis.com/customsearch/v1" -query $uargs -timeout 10000]] |
_________________ https://www.eggdrop.fr - French IRC network
Offer me a coffee - Do not ask me help in PM, we are a community.
Last edited by CrazyCat on Sun Mar 21, 2021 3:27 am; edited 1 time in total |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Sat Mar 20, 2021 9:02 pm Post subject: |
|
|
Getting this error with your code CrazyCat
Code: |
<Tech> [01:01:29] Tcl error [goo:gle]: invalid command name "http::formatquery"
|
Code
Code: |
######################################################################################
# CT-Google.tcl
######################################################################################
#Author ComputerTech
#IRC Irc.DareNet.Org #ComputerTech
#Email ComputerTech@DareNet.Org
#GitHub https://github.com/computertech312
#Version 0.2
#Released 21/03/2021
######################################################################################
# Description:
#
# - An Elaborate Google Search Script.
# - After 100 usages of the script, it will automatically stop until the next day.
# - Grab your own API key from here - https://developers.google.com/custom-search/v1/overview
#
# Credits:
#
# - Special thanks to launchd, spyda and CrazyCat.
# - Usage of m00nies throttle control.
#
# History:
#
# - 0.1: First release.
#
######################################################################################
# Start Of Configuration #
##########################
# Set trigger of the script.
##
set ctgg(trig) "!google"
###################
# Set flag for Commands.
##
# Owner = n
# Master = m
# Op = o
# Voice = v
# Friend = f
# Everyone = -
##
set ctgg(flag) "ofmn"
###################
# Set API Key
##
set ctgg(api) "API-KERE-HERE"
##################
# Set to use Notice Or Privmsg for Output of Commands
##
# 0 = Notice
# 1 = Privmsg
# 2 = Channel
##
set ctgg(msg) "2"
########################
# End Of Configuration #
######################################################################################
bind PUB $ctgg(flag) $ctgg(trig) goo:gle
bind time - "00 00 * * *" api:reset
package require json
package require tls
package require http
proc goo:gle {nick host hand chan text} {
global ctgg
if {![info exists google]} {
set google "\0032G\003\0034o\003\0038o\003\0032g\003\0033l\003\0034e\003"
}
if {![info exists ctgg(count)]} {
set ctgg(count) "0"
}
if {$ctgg(count) == "100"} {
puthelp "$ctgg(output) :Max uses of API exceeded."
return 1
}
switch -- $ctgg(msg) {
"0" {set ctgg(output) "NOTICE $nick"}
"1" {set ctgg(output) "PRIVMSG $nick"}
"2" {set ctgg(output) "PRIVMSG $chan"}
}
http::register https 443 [list ::tls::socket]
set uargs [http::formatquery key $ctgg(api) cx 016496445636816056556:qvzl4ib4xtb q $text]
set data [http::data [http::geturl "https://www.googleapis.com/customsearch/v1" -query $uargs -timeout 10000]]
if {[string length $data] == 0} {
puthelp "$ctgg(output) :API key Returned no Data" ;return 1 }
set datadict [::json::json2dict $data]
set items [dict get $datadict "items"]
set item [lindex $items 0]
set title [dict get $item "title"]
set link [dict get $item "link"]
set info [dict get $item "snippet"]
putserv "$ctgg(output) :$google $title / $link / $info"
incr ctgg(count) 1
http::unregister https
}
proc api:reset {min hour day month weekday} {
global ctgg
unset ctgg(count)
}
######################################################################################
|
_________________ ComputerTech |
|
Back to top |
|
 |
CrazyCat Revered One

Joined: 13 Jan 2002 Posts: 1108 Location: France
|
|
Back to top |
|
 |
Goga Halfop
Joined: 19 Sep 2020 Posts: 82
|
Posted: Sat Mar 27, 2021 5:03 am Post subject: |
|
|
Code: | ######################################################################################
# CT-Google.tcl
######################################################################################
#Author ComputerTech
#IRC Irc.DareNet.Org #ComputerTech
#Email ComputerTech@DareNet.Org
#GitHub https://github.com/computertech312
#Version 0.3
#Released 21/03/2021
######################################################################################
# Description:
#
# - An Elaborate Google Search Script.
# - After 100 usages of the script, it will automatically stop until the next day.
# - Grab your own API key from here
# https://developers.google.com/custom-search/v1/overview
# - And a Engine ID from here
# https://cse.google.com/cse/
#
# Credits:
#
# - Special thanks to launchd, spyda and CrazyCat.
#
# History:
#
# - 0.3: Added Max results option.
# - 0.2: Fixed a few minor bugs.
# - 0.1: First release.
#
######################################################################################
# Start Of Configuration #
##########################
# Set trigger of the script.
##
set ctgg(trig) "!google"
###################
# Set flag for Commands.
##
# Owner = n
# Master = m
# Op = o
# Voice = v
# Friend = f
# Everyone = -
##
set ctgg(flag) "ofmn"
###################
# Set API Key
##
set ctgg(api) "KeyGiven"
##################
# Set Engine ID
##
set ctgg(id) "KeyGiven"
##################
# Set to use Notice Or Privmsg for Output of Commands
##
# 0 = Notice
# 1 = Privmsg
# 2 = Channel
##
set ctgg(msg) "2"
##################
# Set amount of results to output
##
set ctgg(max) "3"
########################
# End Of Configuration #
######################################################################################
bind PUB $ctgg(flag) $ctgg(trig) goo:gle
package require json
package require tls
package require http
proc goo:gle {nick host hand chan text} {
global ctgg
set google "\0032G\0034o\0038o\0032g\0033l\0034e\003"
http::register https 443 [list ::tls::socket]
set url "https://www.googleapis.com/customsearch/v1?key=$ctgg(api)&cx=$ctgg(id)&q=[join $text +]"
set data "[http::data [http::geturl "$url" -timeout 10000]]"
set datadict [::json::json2dict $data]
set items2 [dict get $datadict "searchInformation"]
set items [dict get $datadict "items"]
for {set i 0} {$i < $ctgg(max)} {incr i} {
set item [lindex $items $i]
set title [dict get $item "title"]
set link [dict get $item "link"]
set info [dict get $item "snippet"]
set time [dict get $items2 "formattedSearchTime"]
set total [dict get $items2 "formattedTotalResults"]
switch -- $ctgg(msg) {
"0" {set ctgg(output) "NOTICE $nick"}
"1" {set ctgg(output) "PRIVMSG $nick"}
"2" {set ctgg(output) "PRIVMSG $chan"}
}
putserv "$ctgg(output) :$google About $total results ($time seconds)"
putserv "$ctgg(output) :$google $title / $link / $info"
http::unregister https
http::cleanup $data
}
putlog "{$google}.tcl v0.3 by ComputerTech Loaded"
}
|
This is ComputerTech's !Google TCL I am getting this error:
Tcl error [goo:gle]: key "searchInformation" not known in dictionary
help please. |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Sat Mar 27, 2021 2:24 pm Post subject: |
|
|
Try this, it works perfectly here
Code: |
######################################################################################
# CT-Google.tcl
######################################################################################
#Author ComputerTech
#IRC Irc.DareNet.Org #ComputerTech
#Email ComputerTech@DareNet.Org
#GitHub https://github.com/computertech312
#Version 0.3
#Released 21/03/2021
######################################################################################
# Description:
#
# - An Elaborate Google Search Script.
# - After 100 usages of the script, it will automatically stop until the next day.
# - Grab your own API key from here
# https://developers.google.com/custom-search/v1/overview
# - And a Engine ID from here
# https://cse.google.com/cse/
#
# Credits:
#
# - Special thanks to launchd, spyda and CrazyCat.
#
# History:
#
# - 0.3: Added Max results option.
# - 0.2: Fixed a few minor bugs.
# - 0.1: First release.
#
######################################################################################
# Start Of Configuration #
##########################
# Set trigger of the script.
##
set ctgg(trig) "!google"
###################
# Set flag for Commands.
##
# Owner = n
# Master = m
# Op = o
# Voice = v
# Friend = f
# Everyone = -
##
set ctgg(flag) "-"
###################
# Set API Key
##
set ctgg(api) "Your-API-Key"
##################
# Set Engine ID
##
set ctgg(id) "Your-Engine-ID"
##################
# Set to use Notice Or Privmsg for Output of Commands
##
# 0 = Notice
# 1 = Privmsg
# 2 = Channel
##
set ctgg(msg) "2"
##################
# Set amount of results to output
##
set ctgg(max) "3"
########################
# End Of Configuration #
######################################################################################
bind PUB $ctgg(flag) $ctgg(trig) goo:gle
package require json
package require tls
package require http
proc goo:gle {nick host hand chan text} {
global ctgg google
set ::google "\00302G\00304o\00308o\00302g\00303l\00304e\003"
http::register https 443 [list ::tls::socket]
set url "https://www.googleapis.com/customsearch/v1?key=$ctgg(api)&cx=$ctgg(id)&q=[join $text +]"
set data "[http::data [http::geturl "$url" -timeout 10000]]"
http::cleanup $data
set datadict [::json::json2dict $data]
set items2 [dict get $datadict "searchInformation"]
switch -- $ctgg(msg) {
"0" {set ctgg(output) "NOTICE $nick "}
"1" {set ctgg(output) "PRIVMSG $nick"}
"2" {set ctgg(output) "PRIVMSG $chan"}
}
set time [dict get $items2 "formattedSearchTime"]
set total [dict get $items2 "formattedTotalResults"]
putserv "$ctgg(output) :$google About $total results ($time seconds)"
set items [dict get $datadict "items"]
for {set i 0} {$i < $ctgg(max)} {incr i} {
set item [lindex $items $i]
set title [dict get $item "title"]
set link [dict get $item "link"]
set info [dict get $item "snippet"]
putserv "$ctgg(output) : $title / $link / $info"
}
http::unregister https
}
putlog "$::google.tcl v0.3 by ComputerTech Loaded"
######################################################################################
|
Code: |
CT !google eggdrop irc bot
Tech Google About 40,200 results (0.36 seconds)
Tech Eggdrop / https://www.eggheads.org/ / Eggdrop is the oldest Internet Relay Chat (IRC) bot still in active development.
Tech Eggdrop - Wikipedia / https://en.wikipedia.org/wiki/Eggdrop / It was originally written by Robey Pointer in December 1993 to help manage and
Tech eggheads/eggdrop: The Eggdrop IRC Bot - GitHub / https://github.com/eggheads/eggdrop / Jul 2, 2016 ... The Eggdrop IRC Bot. Contribute to eggheads/eggdrop development by creating
|
_________________ ComputerTech |
|
Back to top |
|
 |
simo Revered One
Joined: 22 Mar 2015 Posts: 1027
|
Posted: Sat Mar 27, 2021 5:21 pm Post subject: |
|
|
oh thats weird im gettin this :
Quote: |
<!doctype html><html itemscope="" itemtype="http://schema.org/SearchResultsPage" lang="en"><head><meta charset="UTF-8"><meta content="origin" name="referrer"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>eggdrop irc bot - Google Search</title><script nonce="cHq6NVRRsXiPVm7hMKyhWA==">(function(){window.google={kEI:'0aFfYJ2TDruv0PEPzOubwAU',kEXPI:'31',kBL:'jmEJ'};google.sn='web';google.kHL='en';})();(function(){
|
|
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Sat Mar 27, 2021 5:23 pm Post subject: |
|
|
got the latest version of the http, json, tcl and tls package? because it works here
Thats the only things i can think would affect
Also what did you search? it might not be full proof from weird searches, like !google {foo} _________________ ComputerTech
Last edited by ComputerTech on Sat Mar 27, 2021 5:25 pm; edited 1 time in total |
|
Back to top |
|
 |
simo Revered One
Joined: 22 Mar 2015 Posts: 1027
|
Posted: Sat Mar 27, 2021 5:24 pm Post subject: |
|
|
oh it needs API i dont have that yet only been using YT API |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 398
|
Posted: Sat Mar 27, 2021 5:26 pm Post subject: |
|
|
ah, you can find the custom search api from the same google api console
(Instructions in Description)
Future Note: i am going to remove the api option soon and hopefully "scrape" from the google
search engine, like incith once did  _________________ ComputerTech |
|
Back to top |
|
 |
|