View previous topic :: View next topic |
Author |
Message |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 809 Location: Tennessee, USA
|
Posted: Fri Oct 08, 2021 11:56 am Post subject: |
|
|
Quote: | || Temperature:: 293.9?C || | That's odd, very hot there??? _________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
. |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 394
|
Posted: Fri Oct 08, 2021 2:54 pm Post subject: |
|
|
SpiKe^^ wrote: | Quote: | || Temperature:: 293.9?C || | That's odd, very hot there??? |
lol, good job spotting that out Spike^^
The code seems back to front, i'll go fix this later.  _________________ ComputerTech |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 394
|
Posted: Fri Oct 08, 2021 8:00 pm Post subject: |
|
|
Code: |
#################################
# CTweather
###
# Version: v0.0.3
# Author : ComputerTech
# GitHub : https://GitHub.com/computertech312
###
namespace eval CTweather {
## Triggers.
# Current weather.
variable trig "!w"
##
## Flags.
# n = Owner.
# m = master
# o = Op.
# h = Halfop.
# v = Voice.
# f = Friend.
# - = Nothing.
variable flag "-|-"
##
## OpenWeatherMap API Key.
variable api "8c2a600d5d63d7fb13432fd58dcc419b"
## Metric type.
# 0 = Metric
# 1 = Imperial
variable type "0"
###
package require json
package require tls
package require http
bind PUB $flag $trig [namespace current]::current:weather
proc current:weather {nick host hand chan text} {
variable api ; variable type
if {![llength [split $text]]} {
putserv "privmsg $chan :Syntax: !w \[zip code | Location \]"
return 0
}
switch -exact $type {
"1" {variable tempy "C" ; variable windy "KPH" ; variable typex "metric"}
"0" {variable tempy "F" ; variable windy "MPH" ; variable typex "imperial"}
}
variable url "https://nominatim.openstreetmap.org/search/"
variable params [::http::formatQuery q $text format jsonv2 ]
variable jsonx [getdata $url $params]
variable name [dict get [lindex $jsonx 0] "display_name"]
variable lati [dict get [lindex $jsonx 0] "lat"]
variable long [dict get [lindex $jsonx 0] "lon"]
variable url "https://api.openweathermap.org/data/2.5/weather"
variable params [::http::formatQuery lat $lati lon $long appid $api units $typex]
variable jsonx [getdata $url $params]
variable temp [dict get [dict get $jsonx "main"] "temp"]
variable speed [dict get [dict get $jsonx "wind"] "speed"]
variable degre [dict get [dict get $jsonx "wind"] "deg"]
variable humid [dict get [dict get $jsonx "main"] "humidity"]
variable cover [dict get [dict get $jsonx "clouds"] "all"]
variable desc [dict get [lindex [dict get $jsonx weather] 0] "description"]
putserv "PRIVMSG $chan :\[\00309Weather\003\] Location: $name || Longitutde: $long || Latitude: $lati || Temperature:: ${temp}$tempy"
putserv "PRIVMSG $chan :Humidity: ${humid}% Wind:: ${speed}$windy Degree: $degre || Description:: $desc || Clouds: ${cover}%"
}
proc getdata {url params} {
::http::register https 443 [list ::tls::socket]
::http::config -useragent "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
putlog "$url?$params"
variable data [http::data [http::geturl "$url?$params" -timeout 10000]]
::http::cleanup $data
variable jsonx [json::json2dict $data]
return $jsonx
}
}
|
Results:
Code: |
<ComputerTech> !w london uk
<CX> [Weather] Location: London, Greater London, England, United Kingdom || Longitutde: -0.1276474 || Latitude: 51.5073219 || Temperature:: 51.94F
<CX> Humidity: 93% Wind:: 3.44MPH Degree: 110 || Description:: haze || Clouds: 25%
|
_________________ ComputerTech |
|
Back to top |
|
 |
SpiKe^^ Owner

Joined: 12 May 2006 Posts: 809 Location: Tennessee, USA
|
Posted: Mon Jan 24, 2022 12:49 pm Post subject: Ver 0.0.3 (+variable-adjusted) |
|
|
Just a small code correction...
##################################
### +variable-adjusted Notes ###
# Corrected the usage of [variable] inside procs.
# Corrected the "Metric type" setting explanation.
##################################
Code: |
#################################
# CTweather
###
# Version: v0.0.3 (+variable-adjusted)
# Author : ComputerTech
# GitHub : https://GitHub.com/computertech312
###
##################################
### +variable-adjusted Notes ###
# Corrected the usage of [variable] inside procs.
# Corrected the "Metric type" setting explanation.
##################################
namespace eval CTweather {
## Triggers.
# Current weather.
variable trig "!w"
##
## Flags.
# n = Owner.
# m = master
# o = Op.
# h = Halfop.
# v = Voice.
# f = Friend.
# - = Nothing.
variable flag "-|-"
##
## OpenWeatherMap API Key.
variable api "8c2a600d5d63d7fb13432fd58dcc419b"
## Metric type.
# 0 = Imperial
# 1 = Metric
variable type "0"
###
package require json
package require tls
package require http
bind PUB $flag $trig [namespace current]::current:weather
proc current:weather {nick host hand chan text} {
variable api ; variable type
if {![llength [split $text]]} {
putserv "privmsg $chan :Syntax: !w \[zip code | Location \]"
return 0
}
switch -exact $type {
"0" {set tempy "F" ; set windy "MPH" ; set typex "imperial"}
"1" {set tempy "C" ; set windy "KPH" ; set typex "metric"}
}
set url "https://nominatim.openstreetmap.org/search/"
set params [::http::formatQuery q $text format jsonv2 ]
set jsonx [getdata $url $params]
set name [dict get [lindex $jsonx 0] "display_name"]
set lati [dict get [lindex $jsonx 0] "lat"]
set long [dict get [lindex $jsonx 0] "lon"]
set url "https://api.openweathermap.org/data/2.5/weather"
set params [::http::formatQuery lat $lati lon $long appid $api units $typex]
set jsonx [getdata $url $params]
set temp [dict get [dict get $jsonx "main"] "temp"]
set speed [dict get [dict get $jsonx "wind"] "speed"]
set degre [dict get [dict get $jsonx "wind"] "deg"]
set humid [dict get [dict get $jsonx "main"] "humidity"]
set cover [dict get [dict get $jsonx "clouds"] "all"]
set desc [dict get [lindex [dict get $jsonx weather] 0] "description"]
putserv "PRIVMSG $chan :\[\00309Weather\003\] Location: $name || Longitutde: $long || Latitude: $lati || Temperature:: ${temp}$tempy"
putserv "PRIVMSG $chan :Humidity: ${humid}% || Wind:: ${speed}$windy Degree: $degre || Description:: $desc || Clouds: ${cover}%"
}
proc getdata {url params} {
::http::register https 443 [list ::tls::socket]
::http::config -useragent "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
putlog "$url?$params"
set data [http::data [http::geturl "$url?$params" -timeout 10000]]
::http::cleanup $data
set jsonx [json::json2dict $data]
return $jsonx
}
}
|
_________________ SpiKe^^
Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
.
Last edited by SpiKe^^ on Tue Jan 25, 2022 12:52 am; edited 1 time in total |
|
Back to top |
|
 |
ComputerTech Master

Joined: 22 Feb 2020 Posts: 394
|
Posted: Mon Jan 24, 2022 1:20 pm Post subject: |
|
|
Cheers for the code fixes Spike^^ !!  _________________ ComputerTech |
|
Back to top |
|
 |
simo Owner
Joined: 22 Mar 2015 Posts: 969
|
Posted: Mon Jan 24, 2022 10:58 pm Post subject: |
|
|
i was wondering why UTF-8 isnt working for this tcl
for example :
Quote: |
(+Simo) : !w ryadh
(@Hawk) : [Weather] Location: الرياض, مديرية تريم, محافظة حضرموت, اليمن || Longitutde: 49.224962 || Latitude: 16.1146368 || Temperature:: 13.54C
(@Hawk) : Humidity: 44% Wind:: 1.26KPH Degree: 26 || Description:: clear sky || Clouds: 1%
|
UTF-8 works for me for other tcls like youtube so that cant be it |
|
Back to top |
|
 |
|