That's odd, very hot there???|| Temperature:: 293.9?C ||
That's odd, very hot there???|| Temperature:: 293.9?C ||
Code: Select all
#################################
# 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
}
}
Code: Select all
<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%
Code: Select all
#################################
# 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
}
}
UTF-8 works for me for other tcls like youtube so that cant be it(+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%
ComputerTech wrote: ...
- Option for users to choose either Metric or Imperial units, according to their preferences.
...
I am open to additional feature requests, but for now, these are the key upgrades that I am focused on implementing.
Code: Select all
[23:09:53] <ATAS> [20:09:53] https://nominatim.openstreetmap.org/search/?q=%D1%81%D0%BE%D1%84%D0%B8%D1%8F%20&format=jsonv2
[23:09:53] <ATAS> [20:09:54] Tcl error [::CTweather::current:weather]: missing value to go with key
Just try the url in a browser and you'll have a self-explanatory message:FmX wrote:Hi. Script stop working.
Error i see is this:Code: Select all
[23:09:53] <ATAS> [20:09:53] https://nominatim.openstreetmap.org/search/?q=%D1%81%D0%BE%D1%84%D0%B8%D1%8F%20&format=jsonv2 [23:09:53] <ATAS> [20:09:54] Tcl error [::CTweather::current:weather]: missing value to go with key
File not found: API no longer accessible via this URL
Using the URL /search/ and /reverse/ (with slashes) is no longer supported. Please use URLs as given in the documentation.
Examples how to change the URL:
You use: https://nominatim.openstreetmap.org/search/?q=Berlin
Change to: https://nominatim.openstreetmap.org/search?q=Berlin
You use: https://nominatim.openstreetmap.org/sea ... xas/Huston
Change to: https://nominatim.openstreetmap.org/search?q=Huston, Texas, US
See github issue #3134 for more details.