-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlast_earthquake.js
More file actions
52 lines (36 loc) · 1.41 KB
/
last_earthquake.js
File metadata and controls
52 lines (36 loc) · 1.41 KB
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
let quakes = await getEarthquakes()
if (config.runsInWidget) {
let widget = new ListWidget()
let titleElement = widget.addText("Latest Earthquake:")
titleElement.font = Font.boldSystemFont(16)
titleElement.textColor = Color.white()
titleElement.minimumScaleFactor = 0.75
quakes.split("\\n").forEach(e => widget.addText(e))
Script.setWidget(widget)
}
else {
console.log( quakes.split("\\n").forEach(e => console.log(e)) );
}
function parseData(data) {
return `Date: ${data[0]} ${data[1]}\\nMagnitude: ${data[5]}\\nLocation: ${data[data.length - 3]}${data[data.length - 2]}`
}
async function getEarthquakes() {
let url = "http://www.koeri.boun.edu.tr/scripts/lst4.asp"
let req = new Request(url)
let response = await req.loadString()
let data = response.split("---------- -------- -------- ------- ---------- ------------ -------------- --------------")
let elementsToRemove = ["", "-.-"];
let parsed_data = data[1].split("\n").slice(0,20)
let quakes = [];
parsed_data.slice(1,30).forEach(element => {
let quake = element.split(" ").filter(item => !elementsToRemove.includes(item))
if (parseFloat(quake[5]) >= 3.0) {
quakes.push( quake );
}});
if (quakes.length >= 1){
return parseData(quakes[0])
}
else {
return parseData(parsed_data[1].split(" ").filter(item => !elementsToRemove.includes(item)))
}
}