blob: 4de057207d28c5d8082740024b1304d561241ad0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import json
import rand
import net.http
struct Weather {
status string [skip] // drop this field
api_version string [skip]
api_status string [skip]
lang string [skip]
unit string [skip]
tzshift int [skip]
timezone string [skip]
server_time u32 [skip]
location []f32 [skip]
result Result //[json: result] if the field name is different in JSON, it can be specified
}
struct Result {
realtime Realtime [skip]
minutely Minutely [skip]
hourly Hourly [skip]
daily Daily [skip]
primary int [skip]
forecast_keypoint string
}
struct Realtime {}
struct Minutely {}
struct Hourly {}
struct Daily {}
fn main() {
config := http.FetchConfig{
user_agent: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'
}
rnd := rand.f32()
url := 'https://api.caiyunapp.com/v2.5/96Ly7wgKGq6FhllM/116.391912,40.010711/weather.jsonp?hourlysteps=120&random=$rnd'
// println(url)
resp := http.fetch(http.FetchConfig{ ...config, url: url }) or {
println('failed to fetch data from the server')
return
}
weather := json.decode(Weather, resp.text) or {
println('failed to decode weather json')
return
}
println('未来两小时天气:\n${weather.result.forecast_keypoint}.')
}
|