wttr.in — cara yang tepat untuk memeriksa cuaca curl
!
wttr.in adalah layanan ramalan cuaca berorientasi konsol yang mendukung berbagai metode representasi informasi seperti urutan ANSI berorientasi terminal untuk klien HTTP konsol (curl, httpie, atau wget), HTML untuk browser web, atau PNG untuk pemirsa grafis.
Awalnya dimulai sebagai sebuah proyek kecil, pembungkus untuk wego, dimaksudkan untuk menunjukkan kekuatan layanan berorientasi konsol, wttr.in menjadi layanan pelaporan cuaca populer, menangani puluhan juta pertanyaan setiap hari.
Anda dapat melihatnya berjalan di sini: wttr.in.
Dokumentasi | Penggunaan | Keluaran satu baris | Format keluaran kaya data | Tampilan peta | Format keluaran | Fase bulan | Internasionalisasi | Instalasi
Anda dapat mengakses layanan dari shell atau dari browser Web seperti ini:
$ curl wttr.in
Weather for City: Paris, France
/ Clear
.-. 10 – 11 °C
― ( ) ― ↑ 11 km/h
`-’ 10 km
/ 0.0 mm
Berikut ini contoh laporan cuaca:
Atau di PowerShell:
Invoke-RestMethod https: // wttr.in
Ingin mendapatkan informasi cuaca untuk lokasi tertentu? Anda dapat menambahkan lokasi yang diinginkan ke URL dalam permintaan Anda seperti ini:
$ curl wttr.in/London
$ curl wttr.in/Moscow
$ curl wttr.in/Salt+Lake+City
Jika Anda menghilangkan nama lokasi, Anda akan mendapatkan laporan lokasi Anda saat ini berdasarkan alamat IP Anda.
Gunakan kode bandara 3 huruf untuk mendapatkan informasi cuaca di bandara tertentu:
$ curl wttr.in/muc # Weather for IATA: muc, Munich International Airport, Germany
$ curl wttr.in/ham # Weather for IATA: ham, Hamburg Airport, Germany
Katakanlah Anda ingin mendapatkan cuaca untuk lokasi geografis selain kota kecil atau kota besar - mungkin objek wisata di kota, nama gunung, atau lokasi khusus. Tambahkan karakter ~
sebelum nama untuk mencari nama lokasi khusus tersebut sebelum cuaca diambil:
$ curl wttr.in/~Vostok+Station
$ curl wttr.in/~Eiffel+Tower
$ curl wttr.in/~Kilimanjaro
Untuk contoh ini, Anda akan melihat garis di bawah keluaran ramalan cuaca yang menunjukkan hasil geolokasi dari pencarian lokasi:
Location: Vostok Station, станция Восток, AAT, Antarctica [-78.4642714,106.8364678]
Location: Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, 75007, France [48.8582602,2.29449905432]
Location: Kilimanjaro, Northern, Tanzania [-3.4762789,37.3872648]
Anda juga dapat menggunakan alamat IP (langsung) atau nama domain (diawali dengan @
) untuk menentukan lokasi:
$ curl wttr.in/@github.com
$ curl wttr.in/@msu.ru
Untuk mendapatkan informasi detail secara online, Anda dapat mengakses halaman /:help:
$ curl wttr.in/:help
Secara default, unit USCS digunakan untuk kueri dari Amerika Serikat dan sistem metrik untuk seluruh dunia. Anda dapat mengesampingkan perilaku ini dengan menambahkan ?u
, ?m
atau ?M
ke URL seperti ini:
$ curl wttr.in/Amsterdam?u # USCS (used by default in US)
$ curl wttr.in/Amsterdam?m # metric (SI) (used by default everywhere except US)
$ curl wttr.in/Amsterdam?M # metric (SI), but show wind speed in m/s
Jika Anda mempunyai beberapa opsi untuk diteruskan, tuliskan tanpa pembatas di antaranya untuk opsi satu huruf, dan gunakan &
sebagai pembatas untuk opsi panjang dengan nilai:
$ curl 'wttr.in/Amsterdam?m2&lang=nl'
Ini kira-kira setara dengan -m2 --lang nl
untuk sintaksis GNU CLI.
wttr.in saat ini mendukung lima format keluaran:
Format ANSI dan HTML dipilih berdasarkan string Agen-Pengguna.
Untuk memaksa teks biasa, yang menonaktifkan warna:
$ curl wttr.in/?T
Untuk membatasi keluaran ke mesin terbang yang tersedia dalam font konsol standar (misalnya Konsol Consolas dan Lucida):
$ curl wttr.in/?d
Format PNG dapat dipaksakan dengan menambahkan .png
di akhir kueri:
$ wget wttr.in/Paris.png
Anda dapat menggunakan semua opsi dengan format PNG seperti di URL, tetapi Anda harus memisahkannya dengan _
bukan ?
Dan &
:
$ wget wttr.in/Paris_0tqp_lang=fr.png
Opsi berguna untuk format PNG:
t
untuk transparansi ( transparency=150
);Transparansi adalah fitur yang berguna ketika PNG cuaca digunakan untuk menambahkan data cuaca ke gambar:
$ convert source.jpg <( curl wttr.in/Oymyakon_tqp0.png ) -geometry +50+50 -composite target.jpg
Dalam contoh ini:
source.jpg
- file sumber;target.jpg
- file target;Oymyakon
- nama lokasi;tqp0
- opsi (disarankan).Anda dapat menyematkan widget wttr.in khusus, yang menampilkan kondisi cuaca untuk lokasi saat ini atau lokasi yang dipilih, ke dalam halaman HTML menggunakan pengalih wttr. Seperti inilah tampilannya: wttr-switcher-example atau di situs web dunia nyata: https://feuerwehr-eisolzried.de/.
Format keluaran satu baris mudah digunakan untuk menampilkan info cuaca di bilah status berbagai program, seperti tmux , weechat , dll.
Untuk format keluaran satu baris, tentukan format
parameter URL tambahan :
$ curl wttr.in/Nuremberg?format=3
Nuremberg: ? +11⁰C
Format prakonfigurasi yang tersedia: 1, 2, 3, 4 dan format khusus menggunakan notasi persen (lihat di bawah).
Anda dapat menentukan beberapa lokasi yang dipisahkan dengan :
(untuk kueri berulang):
$ curl wttr.in/Nuremberg:Hamburg:Berlin?format=3
Nuremberg: ? +11⁰C
Atau untuk memproses semua pertanyaan ini sekaligus:
$ curl -s 'wttr.in/{Nuremberg,Hamburg,Berlin}?format=3'
Nuremberg: ? +11⁰C
Hamburg: ? +8⁰C
Berlin: ? +8⁰C
Untuk menentukan format keluaran khusus Anda sendiri, gunakan %
-notasi khusus:
c Weather condition,
C Weather condition textual name,
x Weather condition, plain-text symbol,
h Humidity,
t Temperature (Actual),
f Temperature (Feels Like),
w Wind,
l Location,
m Moon phase ????????,
M Moon day,
p Precipitation (mm/3 hours),
P Pressure (hPa),
u UV index (1-12),
D Dawn*,
S Sunrise*,
z Zenith*,
s Sunset*,
d Dusk*,
T Current time*,
Z Local timezone.
(*times are shown in the local timezone)
Jadi, kedua panggilan ini sama:
$ curl wttr.in/London?format=3
London: ⛅️ +7⁰C
$ curl wttr.in/London?format="%l:+%c+%tn"
London: ⛅️ +7⁰C
Saat menggunakan di tmux.conf
, Anda harus keluar dari %
dengan %
, yaitu menulis di sana %%
dari pada %
.
Outputnya tidak berisi baris baru secara default, ketika notasi % digunakan, tetapi berisi baris tersebut ketika format yang telah dikonfigurasi sebelumnya ( 1
, 2
, 3
dll.) digunakan. Untuk mendapatkan baris baru di output saat notasi % digunakan, gunakan 'n' dan tanda kutip tunggal saat melakukan kueri dari shell.
Dalam program yang menanyakan layanan secara otomatis (seperti tmux), lebih baik menggunakan interval pembaruan yang wajar. Di tmux, Anda dapat mengkonfigurasinya dengan status-interval
.
Jika beberapa, :
lokasi terpisah, ditentukan dalam kueri, tentukan periode pembaruan sebagai parameter kueri tambahan period=
:
set -g status-interval 60
WEATHER='#(curl -s wttr.in/London:Stockholm:Moscow?format="%%l:+%%c%%20%%t%%60%%w&period=60")'
set -g status-right "$WEATHER ..."
Untuk menyematkan bilah status klien IRC (WeeChat) yang sudah ada:
/alias add wttr /exec -pipe "/mute /set plugins.var.wttr" url:wttr.in/Montreal?format=%l:+%c+%f+%h+%p+%P+%m+%w+%S+%s;/wait 3 /item refresh wttr
/trigger add wttr timer 60000;0;0 "" "" "/wttr"
/item add wttr "" "${plugins.var.wttr}"
/eval /set weechat.bar.status.items ${weechat.bar.status.items},spacer,wttr
/eval /set weechat.startup.command_after_plugins ${weechat.startup.command_after_plugins};/wttr
/wttr
Contoh penggunaan kerucut:
${texeci 1800 curl wttr.in/kyiv_0pq_lang=uk.png
| convert - -transparent black $HOME/.config/conky/out.png}
${image $HOME/.config/conky/out.png -p 0,0}
Contoh integrasi IRC:
Untuk melihat emoji di terminal, Anda memerlukan:
Untuk font emoji, kami merekomendasikan Noto Color Emoji , dan opsi alternatif yang baik adalah font Emoji One ; keduanya mendukung semua mesin terbang emoji yang diperlukan.
Konfigurasi huruf:
$ cat ~/.config/fontconfig/fonts.conf
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE fontconfig SYSTEM "fonts.dtd">
< fontconfig >
< alias >
< family >serif</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
< alias >
< family >sans-serif</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
< alias >
< family >monospace</ family >
< prefer >
< family >Noto Color Emoji</ family >
</ prefer >
</ alias >
</ fontconfig >
(untuk menerapkan konfigurasi, jalankan fc-cache -f -v
).
Dalam beberapa kasus, tmux
dan pemahaman terminal beberapa karakter emoji mungkin berbeda, yang mungkin menyebabkan efek aneh serupa dengan yang dijelaskan di #579.
Dalam format keluaran kaya data eksperimental, yang tersedia di bawah kode tampilan v2
, banyak informasi cuaca dan astronomi tambahan tersedia:
$ curl v2.wttr.in/München
atau
$ curl wttr.in/München?format=v2
atau, jika Anda lebih memilih Font Nerd daripada Emoji, v2d
(siang) atau v2n
(malam):
$ curl v2d.wttr.in/München
(Mode ini bersifat eksperimental, dan saat ini memiliki beberapa keterbatasan:
Saat ini, Anda memerlukan beberapa penyesuaian untuk beberapa terminal, untuk mendapatkan visualisasi terbaik.
Tergantung pada konfigurasi Anda, Anda mungkin mengambil semua langkah, atau hanya beberapa. URXVT saat ini tidak mendukung font terkait emoji, namun kita bisa mendapatkan efek yang hampir sama menggunakan Font-Symbola . Jadi tambahkan ke file .Xresources
Anda baris berikut:
xft:symbola:size=10:minspace=False
Anda dapat menambahkannya setelah font pilihan Anda dan itu hanya akan muncul bila diperlukan. Kemudian, jika Anda melihat atau merasa mengalami masalah spasi, tambahkan ini: URxvt.letterSpace: 0
Untuk beberapa alasan, URXVT terkadang berhenti menentukan spasi kata dengan benar dan kita perlu memaksakannya seperti ini.
Hasilnya, akan terlihat seperti:
Dalam tampilan peta eksperimental, yang tersedia di bawah kode tampilan v3
, tersedia informasi cuaca tentang wilayah geografis:
$ curl v3.wttr.in/Bayern.sxl
atau langsung di browser:
Tampilan peta saat ini mendukung tiga format:
Terminal dengan dukungan protokol gambar inline:
⟶ Artikel terperinci: Gambar di terminal
Terminal | Lingkungan | Dukungan gambar | Protokol |
---|---|---|---|
jangka pendek | X11 | Ya | Enamel |
mlterm | X11 | Ya | Enamel |
kucing | X11 | Ya | kucing |
wezterm | X11 | Ya | IIP |
ubin gelap | X11 | Ya | Enamel |
Jexer | X11 | Ya | Enamel |
Terminal GNOME | X11 | sedang berlangsung | Enamel |
dengan sigap | X11 | sedang berlangsung | Enamel |
kaki | negeri jalan | Ya | Enamel |
Istilah Dom | jaring | Ya | Enamel |
Yaft | FB | Ya | Enamel |
iTerm2 | Mac OS X | Ya | IIP |
mintty | jendela | Ya | Enamel |
Terminal Windows | jendela | sedang berlangsung | Enamel |
Masuk | jendela | Ya | Enamel |
Format JSON adalah fitur yang menyediakan akses ke data wttr.in melalui format yang mudah diurai, tanpa mengharuskan pengguna membuat skrip rumit untuk menafsirkan ulang keluaran grafis wttr.in.
Untuk mengambil informasi dalam format JSON, gunakan sintaks berikut:
$ curl wttr.in/Detroit?format=j1
Ini akan mengambil informasi tentang wilayah Detroit dalam format JSON. Kode format j1 digunakan untuk memungkinkan penggunaan tata letak lain untuk keluaran JSON.
Hasilnya akan terlihat seperti berikut:
{
"current_condition" : [
{
"FeelsLikeC" : " 25 " ,
"FeelsLikeF" : " 76 " ,
"cloudcover" : " 100 " ,
"humidity" : " 76 " ,
"observation_time" : " 04:08 PM " ,
"precipMM" : " 0.2 " ,
"pressure" : " 1019 " ,
"temp_C" : " 22 " ,
"temp_F" : " 72 " ,
"uvIndex" : 5 ,
"visibility" : " 16 " ,
"weatherCode" : " 122 " ,
"weatherDesc" : [
{
"value" : " Overcast "
}
],
"weatherIconUrl" : [
{
"value" : " "
}
],
"winddir16Point" : " NNE " ,
"winddirDegree" : " 20 " ,
"windspeedKmph" : " 7 " ,
"windspeedMiles" : " 4 "
}
],
...
Sebagian besar nilai ini sudah cukup jelas, selain dari weatherCode
. weatherCode
adalah enumerasi yang dapat Anda temukan di situs web WorldWeatherOnline atau di kode sumber wttr.in.
Format Metrik Prometheus adalah fitur yang menyediakan akses ke data wttr.in melalui format yang mudah diurai untuk sistem pemantauan, tanpa mengharuskan pengguna membuat skrip rumit untuk menafsirkan ulang keluaran grafis wttr.in.
Untuk mengambil informasi dalam format Prometheus, gunakan sintaks berikut:
$ curl wttr.in/Detroit?format=p1
Ini akan mengambil informasi tentang wilayah Detroit dalam format Prometheus Metrics. Kode format p1
digunakan untuk memungkinkan penggunaan tata letak lain untuk keluaran Metrik Prometheus.
Konfigurasi yang mungkin untuk Prometheus akan terlihat seperti ini:
- job_name : ' wttr_in_detroit '
static_configs :
- targets : ['wttr.in']
metrics_path : ' /Detroit '
params :
format : ['p1']
Hasilnya akan terlihat seperti berikut:
# HELP temperature_feels_like_celsius Feels Like Temperature in Celsius
temperature_feels_like_celsius{forecast="current"} 7
# HELP temperature_feels_like_fahrenheit Feels Like Temperature in Fahrenheit
temperature_feels_like_fahrenheit{forecast="current"} 45
[truncated]
...
wttr.in juga dapat digunakan untuk mengecek fase Bulan. Contoh ini menunjukkan cara melihat fase Bulan saat ini dalam mode keluaran penuh:
$ curl wttr.in/Moon
Dapatkan fase bulan untuk tanggal tertentu dengan menambahkan @YYYY-MM-DD
:
$ curl wttr.in/Moon@2016-12-25
Informasi fase bulan menggunakan pyphoon sebagai backendnya.
Untuk mendapatkan informasi fase bulan dalam mode online, gunakan %m
:
$ curl wttr.in/London?format=%m
?
Perlu diingat bahwa representasi Unicode dari fase bulan mempunyai 2 peringatan:
Dengan beberapa font, representasinya ?
bersifat ambigu karena tampak hampir gelap atau hampir terang, bergantung pada apakah terminal Anda dalam mode terang atau mode gelap. Mengandalkan font berwarna seperti noto-fonts
dapat mengatasi masalah ini.
Representasinya ?
juga ambigu, karena artinya "kuartal terakhir" di belahan bumi utara, tetapi "kuartal pertama" di belahan bumi selatan. Hal ini juga tidak berarti apa-apa di zona tropis. Ini adalah batasan yang disadari oleh Unicode. Tapi itu belum diselesaikan di wttr.in
Lihat #247, #364 untuk masalah pelacakan terkait, dan pyphoon#1 untuk pyphoon. Bantuan apa pun diterima.
wttr.in mendukung nama lokasi multibahasa yang dapat ditentukan dalam bahasa apa pun di dunia (mungkin mengejutkan, namun banyak lokasi di dunia tidak memiliki nama bahasa Inggris).
String kueri harus ditentukan dalam Unicode (berkode hex atau tidak). Spasi dalam string kueri harus diganti dengan +
:
$ curl wttr.in/станция+Восток
Weather report: станция Восток
Overcast
.--. -65 – -47 °C
.-( ). ↑ 23 km/h
(___.__)__) 15 km
0.0 mm
Bahasa yang digunakan untuk keluaran (kecuali nama lokasi) tidak bergantung pada bahasa masukan dan bisa berupa bahasa Inggris (secara default) atau bahasa pilihan browser (jika kueri dikeluarkan dari browser) yang ditentukan dalam header kueri ( Accept-Language
).
Bahasa dapat diatur secara eksplisit saat menggunakan klien konsol dengan menggunakan opsi baris perintah seperti ini:
curl -H "Accept-Language: fr" wttr.in
http GET wttr.in Accept-Language:ru
Bahasa pilihan dapat dipaksa menggunakan opsi lang
:
$ curl wttr.in/Berlin?lang=de
Opsi ketiga adalah memilih bahasa menggunakan nama DNS yang digunakan dalam kueri:
$ curl de.wttr.in/Berlin
wttr.in saat ini diterjemahkan ke dalam 54 bahasa, dan jumlah bahasa yang didukung terus bertambah.
Lihat /:translation untuk mempelajari lebih lanjut tentang proses penerjemahan, untuk melihat daftar bahasa dan kontributor yang didukung, atau untuk mengetahui bagaimana Anda dapat membantu menerjemahkan wttr.in ke dalam bahasa Anda.
Untuk menginstal aplikasi:
wttr.in memiliki dependensi eksternal berikut:
Setelah Anda menginstal golang, instal wego
:
go install github.com/schachmat/wego@latest
Persyaratan ular piton:
Jika Anda ingin mendapatkan laporan cuaca sebagai file PNG, Anda juga perlu menginstal:
Anda dapat menginstal sebagian besarnya menggunakan pip
.
Beberapa paket python menggunakan LLVM, jadi instal terlebih dahulu:
apt-get install llvm-7 llvm-7-dev
Jika virtualenv
digunakan:
virtualenv -p python3 ve
ve/bin/pip3 install -r requirements.txt
ve/bin/python3 bin/srv.py
Anda juga perlu menginstal database geoip2. Anda dapat menggunakan database GeoLite2 gratis yang dapat diunduh dari (http://dev.maxmind.com/geoip/geoip2/geolite2/).
Jika Anda ingin menggunakan layanan lokasi IP2 untuk alamat IP yang tidak dicakup oleh GeoLite2, Anda harus mendapatkan kunci API dari layanan tersebut, dan setelah itu menyimpannya ke dalam file ~/.ip2location.key
:
$ echo 'YOUR_IP2LOCATION_KEY' > ~/.ip2location.key
Jika Anda tidak memiliki file ini, layanan akan dilewati secara diam-diam (ini bukan masalah besar, karena database MaxMind cukup bagus).
/root/.wegorc
/root/.ip2location.key (optional)
/app/airports.dat
/app/GeoLite2-City.mmdb
Untuk mendapatkan kunci API WorldWeatherOnline, Anda harus mendaftar di sini:
https://developer.worldweatheronline.com/auth/register
Setelah Anda memiliki kunci WorldWeatherOnline, Anda dapat menyimpannya ke dalam file kunci WWO: ~/.wwo.key
Selain itu, Anda harus menentukan kunci dalam konfigurasi wego
:
$ cat ~/.wegorc
{
"APIKey" : " 00XXXXXXXXXXXXXXXXXXXXXXXXXXX " ,
"City" : " London " ,
"Numdays" : 3 ,
"Imperial" : false ,
"Lang" : " en "
}
Parameter City
di ~/.wegorc
diabaikan.
Konfigurasikan variabel lingkungan berikut yang menentukan jalur ke instalasi wttr.in
lokal, ke database GeoLite, dan ke instalasi wego
. Misalnya:
export WTTR_MYDIR= " /home/igor/wttr.in "
export WTTR_GEOLITE= " /home/igor/wttr.in/GeoLite2-City.mmdb "
export WTTR_WEGO= " /home/igor/go/bin/wego "
export WTTR_LISTEN_HOST= " 0.0.0.0 "
export WTTR_LISTEN_PORT= " 8002 "
Anda juga disarankan untuk mengonfigurasi server web yang akan digunakan untuk mengakses layanan:
server {
listen [::]:80;
server_name wttr.in *.wttr.in;
access_log /var/log/nginx/wttr.in-access.log main ;
error_log /var/log/nginx/wttr.in-error.log;
location / {
proxy_pass http://127.0.0.1:8002;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $remote_addr ;
client_max_body_size 10m ;
client_body_buffer_size 128k ;
proxy_connect_timeout 90 ;
proxy_send_timeout 90 ;
proxy_read_timeout 90 ;
proxy_buffer_size 4k ;
proxy_buffers 4 32k ;
proxy_busy_buffers_size 64k ;
proxy_temp_file_write_size 64k ;
expires off ;
}
}