Compare commits
129 commits
Author | SHA1 | Date | |
---|---|---|---|
|
664e00b7f4 | ||
|
cce9b12645 | ||
|
c82ab68c1e | ||
|
a543386394 | ||
|
1ae72ac979 | ||
|
1a7c1735f4 | ||
|
5b487125aa | ||
|
770813b4a7 | ||
|
ded7a2373c | ||
|
79ae2f4c25 | ||
|
e02faaab18 | ||
|
bd275403e9 | ||
|
9b80f79436 | ||
|
4bb679cef8 | ||
|
e952ec60e7 | ||
|
0227979176 | ||
|
9f31d18a6f | ||
|
d491fda5c8 | ||
|
96912d325a | ||
|
00f97fd6e6 | ||
|
09f3fc957c | ||
|
cbb1842100 | ||
|
f763a95472 | ||
|
d88188182c | ||
|
8b94e7e3f8 | ||
|
d653bc3e90 | ||
|
b5bf06a38d | ||
|
ae63a0d52d | ||
|
73e42e2288 | ||
|
9afdd5626e | ||
|
f6acab4d20 | ||
|
b10308ef36 | ||
|
aa8fe9498f | ||
|
d48fe3085a | ||
|
662e0e775c | ||
|
845fead37a | ||
|
70c30420fc | ||
|
98673be5c7 | ||
|
aac1420964 | ||
|
7a12ed05d3 | ||
|
c223eabc62 | ||
|
6b9438ed10 | ||
|
928cb4b958 | ||
|
42487f22b6 | ||
|
7b96229d01 | ||
|
df411d192d | ||
|
b76a77807b | ||
|
5168c5c582 | ||
|
2ff7a2522a | ||
|
d8b6d04edf | ||
|
70cce9e2ba | ||
|
1001d80313 | ||
|
fbcc902bba | ||
|
6bdc4240be | ||
|
be0d17cf6d | ||
|
cea680a013 | ||
|
ff0f4da7ad | ||
|
539eccf7e2 | ||
|
417777edb9 | ||
|
b382b95f6e | ||
|
ea8c2be4a1 | ||
|
177f2c8dc3 | ||
|
c77577a382 | ||
|
46000e92ee | ||
|
04d3cb80e0 | ||
|
dcf5518288 | ||
|
3e322de6cd | ||
|
476f2fd946 | ||
|
ca785ea546 | ||
|
199cd70da5 | ||
|
4b8d0515f9 | ||
|
64f4bc676e | ||
|
a8aebe683c | ||
|
249788ae8c | ||
|
0f495feb55 | ||
|
ec176a87c2 | ||
|
081b4ef261 | ||
|
e5d9a687d4 | ||
|
0a9376d4d7 | ||
|
2e92abfb21 | ||
|
e9b206afff | ||
|
cb5ac958a3 | ||
|
5e6a4388bb | ||
|
595fc8c7c6 | ||
|
ad8196be72 | ||
|
f06d87b71d | ||
|
e59ccaf3ff | ||
|
7b49ad0d38 | ||
|
9014f05e83 | ||
|
1fc05649af | ||
|
6100e1dee0 | ||
|
17fd8f45fe | ||
|
2752d67e22 | ||
|
95f9a9fb31 | ||
|
6785d4d50a | ||
|
ac2a1fb7b0 | ||
|
a31573b7c4 | ||
|
9393bf8f94 | ||
|
54eb401093 | ||
|
6dd606209d | ||
|
4bfa1b4947 | ||
|
6887192f8e | ||
|
3e792352d8 | ||
|
5075a5973d | ||
|
d64e402e16 | ||
|
323cf185e5 | ||
|
e30af0143d | ||
|
585c075072 | ||
|
cca3f180fb | ||
|
5e1635b9c1 | ||
|
498da05d55 | ||
|
4d8f9c072a | ||
|
34f1580ff7 | ||
|
e8b7da3d58 | ||
|
a261733f21 | ||
|
821d6b52aa | ||
|
e60352d5c8 | ||
|
86d5105579 | ||
|
6679ea55c6 | ||
|
66a454d46e | ||
|
2138bac3bb | ||
|
99667e4890 | ||
|
6332006702 | ||
|
b49d1c9a58 | ||
|
b86eabcf1b | ||
|
14faf62e90 | ||
|
fdd435c44a | ||
|
4ca2435359 | ||
|
b9ebbccb90 |
15
.forgejo/workflows/ptero-push.yml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# Workflow that runs on `chris-runner`, tells a pterodactyl server at https://panel.chrischro.me/ to restart server 8f44f1fd-8d29-4553-96f1-05dacfca454f with token stored in PTERO_KEY
|
||||||
|
name: ptero-push
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: docker
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Run script
|
||||||
|
run: |
|
||||||
|
curl -X POST -H "Authorization: Bearer ${{ secrets.PTERO_KEY }}" -H "Content-Type: application/json" https://panel.chrischro.me/api/client/servers/8f44f1fd-8d29-4553-96f1-05dacfca454f/power -d '{"signal":"restart"}'
|
1
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{}
|
7
PRIVACY.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Privacy Policy
|
||||||
|
|
||||||
|
Just to make this simple, heres a list of whats stored and how it's used
|
||||||
|
- Discord channel/user IDs of subscribed channels/DMs - Should be obvious, in case it's not, we need these to know where to send alerts.
|
||||||
|
- IEM rooms and filters - Should also be obvious, but again, we need to know which rooms you subscribed to
|
||||||
|
|
||||||
|
Other than that, occasional debug logging may be enabled to fix bugs, and any logs gathered from debugging will be erased immidiately.
|
|
@ -3,6 +3,8 @@
|
||||||
## Warning
|
## Warning
|
||||||
This is SUPER tossed together. Might bother cleaning it up later.
|
This is SUPER tossed together. Might bother cleaning it up later.
|
||||||
|
|
||||||
|
Also If you run this on Windows for Debugging, Sodium might have a few issues installing with MSVS for certain users.
|
||||||
|
|
||||||
## What is this?
|
## What is this?
|
||||||
This is meant to be a public Discord bot. It connects via XMPP to Weather.IM and allows server owners to subscribe a channel to any number of weather alerts.
|
This is meant to be a public Discord bot. It connects via XMPP to Weather.IM and allows server owners to subscribe a channel to any number of weather alerts.
|
||||||
|
|
||||||
|
|
5
TERMS.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Terms of Service
|
||||||
|
## This is mostly here to comply with Discord verified bot stuff
|
||||||
|
|
||||||
|
Other than complying with the GPL-3.0 License when contributing/using the code of this project, this bot is NOT to be used as an emergency alerting system, and should NOT be trusted with life/property under any circumstances.
|
||||||
|
Chris Chrome and any other contributors are not to be held liable should this not work in an emergency, as you shouldn't be using it for emergency alerts.
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"debug": 0,
|
"debug": 0,
|
||||||
|
"voice_enabled": true,
|
||||||
"priorityColors": {
|
"priorityColors": {
|
||||||
"1": "#00AFFF",
|
"1": "#00AFFF",
|
||||||
"2": "#00FF00",
|
"2": "#00FF00",
|
||||||
|
@ -26,6 +27,7 @@
|
||||||
"username": "YOUR_USERNAME",
|
"username": "YOUR_USERNAME",
|
||||||
"password": "YOUR_PASSWORD"
|
"password": "YOUR_PASSWORD"
|
||||||
},
|
},
|
||||||
|
|
||||||
"uptime-kuma": {
|
"uptime-kuma": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"url": "",
|
"url": "",
|
||||||
|
|
|
@ -70,5 +70,25 @@
|
||||||
"cwest@conference.weather.im",
|
"cwest@conference.weather.im",
|
||||||
"sweaseops1@conference.weather.im",
|
"sweaseops1@conference.weather.im",
|
||||||
"scwx@conference.weather.im",
|
"scwx@conference.weather.im",
|
||||||
"nwsc@conference.weather.im"
|
"nwsc@conference.weather.im",
|
||||||
|
"zabchat@conference.weather.im",
|
||||||
|
"ztlchat@conference.weather.im",
|
||||||
|
"zbwchat@conference.weather.im",
|
||||||
|
"zauchat@conference.weather.im",
|
||||||
|
"zobchat@conference.weather.im",
|
||||||
|
"zdvchat@conference.weather.im",
|
||||||
|
"zfwchat@conference.weather.im",
|
||||||
|
"zhuchat@conference.weather.im",
|
||||||
|
"zidchat@conference.weather.im",
|
||||||
|
"zjxchat@conference.weather.im",
|
||||||
|
"zkcchat@conference.weather.im",
|
||||||
|
"zlachat@conference.weather.im",
|
||||||
|
"zmechat@conference.weather.im",
|
||||||
|
"zmachat@conference.weather.im",
|
||||||
|
"zmpchat@conference.weather.im",
|
||||||
|
"zoachat@conference.weather.im",
|
||||||
|
"zlcchat@conference.weather.im",
|
||||||
|
"zsechat@conference.weather.im",
|
||||||
|
"zdcchat@conference.weather.im",
|
||||||
|
"znychat@conference.weather.im"
|
||||||
]
|
]
|
256
data/commands.json
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "subscribe",
|
||||||
|
"description": "Subscribe to a weather.im room",
|
||||||
|
"default_member_permissions": 16,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "room",
|
||||||
|
"description": "The room/WFO you want to subscribe to",
|
||||||
|
"type": 3,
|
||||||
|
"required": true,
|
||||||
|
"autocomplete": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "message",
|
||||||
|
"description": "Custom message to send when alert is sent",
|
||||||
|
"type": 3,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "filter",
|
||||||
|
"description": "Filter for the alert, you can comma separate multiple strings of text",
|
||||||
|
"type": 3,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "minpriority",
|
||||||
|
"description": "Minimum priority to alert for",
|
||||||
|
"type": 4,
|
||||||
|
"required": false,
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"name": "Any",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Minimum",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Low",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Normal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "High",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Very High",
|
||||||
|
"value": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "filterevt",
|
||||||
|
"description": "Filter for event type, you can comma separate multiple strings of text",
|
||||||
|
"type": 3,
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unsubscribe",
|
||||||
|
"description": "Unsubscribe from a weather.im room",
|
||||||
|
"default_member_permissions": 16,
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "room",
|
||||||
|
"description": "The room/WFO you want to unsubscribe from",
|
||||||
|
"type": 3,
|
||||||
|
"required": true,
|
||||||
|
"autocomplete": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "list",
|
||||||
|
"description": "List all subscribed rooms for this channel",
|
||||||
|
"default_member_permissions": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "about",
|
||||||
|
"description": "About this bot",
|
||||||
|
"integration_types": [0,1],
|
||||||
|
"contexts": [0, 1, 2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rooms",
|
||||||
|
"description": "List all available rooms"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "setupall",
|
||||||
|
"description": "[BOT OWNER ONLY] Setup channels in a category for all rooms",
|
||||||
|
"default_member_permissions": 0,
|
||||||
|
"type": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "support",
|
||||||
|
"description": "Get support for the bot",
|
||||||
|
"type": 1,
|
||||||
|
"integration_types": [0,1],
|
||||||
|
"contexts": [0, 1, 2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "outlook",
|
||||||
|
"description": "Get day 1-8 storm or fire outlook from the SPC",
|
||||||
|
"type": 1,
|
||||||
|
"integration_types": [0,1],
|
||||||
|
"contexts": [0, 1, 2],
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "day",
|
||||||
|
"description": "Day of outlook",
|
||||||
|
"type": 4,
|
||||||
|
"required": true,
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"name": "Day 1",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 2",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 3",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 4",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 5",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 6",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 7",
|
||||||
|
"value": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Day 8",
|
||||||
|
"value": 7
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "type",
|
||||||
|
"description": "Type of outlook",
|
||||||
|
"type": 3,
|
||||||
|
"required": true,
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"name": "Fire",
|
||||||
|
"value": "fire"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Convective",
|
||||||
|
"value": "convective"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "population_overlay",
|
||||||
|
"description": "Whether to add the population overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "city_overlay",
|
||||||
|
"description": "Whether to add the city name overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cwa_overlay",
|
||||||
|
"description": "Whether to add the County Warning Area overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rfc_overlay",
|
||||||
|
"description": "Whether to add the River Forecast Center overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "interstate_overlay",
|
||||||
|
"description": "Whether to add the interstate overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "county_overlay",
|
||||||
|
"description": "Whether to add the county lines overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tribal_overlay",
|
||||||
|
"description": "Whether to add the tribal lands overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "artcc_overlay",
|
||||||
|
"description": "Whether to add the Air Route Traffic Control Centers overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fema_overlay",
|
||||||
|
"description": "Whether to add the FEMA regions overlay",
|
||||||
|
"type": 5,
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "alertmap",
|
||||||
|
"description": "Get a map of active alerts",
|
||||||
|
"type": 1,
|
||||||
|
"integration_types": [0,1],
|
||||||
|
"contexts": [0, 1, 2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "forecast",
|
||||||
|
"description": "Get a forecast for a location",
|
||||||
|
"type": 1,
|
||||||
|
"integration_types": [0,1],
|
||||||
|
"contexts": [0, 1, 2],
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"name": "location",
|
||||||
|
"description": "Location to get forecast for (In the United States)",
|
||||||
|
"type": 3,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "periods",
|
||||||
|
"description": "Number of periods to get forecast for",
|
||||||
|
"type": 4,
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -217,7 +217,7 @@
|
||||||
},
|
},
|
||||||
"DSW": {
|
"DSW": {
|
||||||
"text": "Dust Storm Warning",
|
"text": "Dust Storm Warning",
|
||||||
"priority": 5
|
"priority": 4
|
||||||
},
|
},
|
||||||
"EFP": {
|
"EFP": {
|
||||||
"priority": 1,
|
"priority": 1,
|
||||||
|
@ -228,7 +228,7 @@
|
||||||
"text": "Average 6 To 10 Day Weather Outlook (Local)"
|
"text": "Average 6 To 10 Day Weather Outlook (Local)"
|
||||||
},
|
},
|
||||||
"EQI": {
|
"EQI": {
|
||||||
"priority": 1,
|
"priority": 3,
|
||||||
"text": "Tsunami Bulletin"
|
"text": "Tsunami Bulletin"
|
||||||
},
|
},
|
||||||
"EQR": {
|
"EQR": {
|
||||||
|
@ -385,14 +385,14 @@
|
||||||
},
|
},
|
||||||
"FRW": {
|
"FRW": {
|
||||||
"text": "Fire Warning",
|
"text": "Fire Warning",
|
||||||
"priority": 4
|
"priority": 3
|
||||||
},
|
},
|
||||||
"FSH": {
|
"FSH": {
|
||||||
"priority": 1,
|
"priority": 1,
|
||||||
"text": "Natl Marine Fisheries Administrative Service Message"
|
"text": "Natl Marine Fisheries Administrative Service Message"
|
||||||
},
|
},
|
||||||
"FTM": {
|
"FTM": {
|
||||||
"priority": 2,
|
"priority": 3,
|
||||||
"text": "WSR-88D Radar Outage Notification / Free Text Message"
|
"text": "WSR-88D Radar Outage Notification / Free Text Message"
|
||||||
},
|
},
|
||||||
"FTP": {
|
"FTP": {
|
||||||
|
@ -600,7 +600,7 @@
|
||||||
"text": "Low Temperatures"
|
"text": "Low Temperatures"
|
||||||
},
|
},
|
||||||
"LSR": {
|
"LSR": {
|
||||||
"priority": 2,
|
"priority": 3,
|
||||||
"text": "Local Storm Report"
|
"text": "Local Storm Report"
|
||||||
},
|
},
|
||||||
"LTG": {
|
"LTG": {
|
||||||
|
@ -680,7 +680,7 @@
|
||||||
"text": "Data Mgt Message"
|
"text": "Data Mgt Message"
|
||||||
},
|
},
|
||||||
"NPW": {
|
"NPW": {
|
||||||
"priority": 1,
|
"priority": 3,
|
||||||
"text": "Non-Precipitation Warnings / Watches / Advisories"
|
"text": "Non-Precipitation Warnings / Watches / Advisories"
|
||||||
},
|
},
|
||||||
"NSH": {
|
"NSH": {
|
||||||
|
@ -772,11 +772,11 @@
|
||||||
"text": "Preliminary Forecasts"
|
"text": "Preliminary Forecasts"
|
||||||
},
|
},
|
||||||
"PSH": {
|
"PSH": {
|
||||||
"priority": 1,
|
"priority": 2,
|
||||||
"text": "Post Storm Hurricane Report"
|
"text": "Post Storm Hurricane Report"
|
||||||
},
|
},
|
||||||
"PTS": {
|
"PTS": {
|
||||||
"priority": 1,
|
"priority": 3,
|
||||||
"text": "Probabilistic Outlook Points"
|
"text": "Probabilistic Outlook Points"
|
||||||
},
|
},
|
||||||
"PWO": {
|
"PWO": {
|
||||||
|
@ -808,7 +808,7 @@
|
||||||
"text": "Record Report"
|
"text": "Record Report"
|
||||||
},
|
},
|
||||||
"RET": {
|
"RET": {
|
||||||
"priority": 1,
|
"priority": 5,
|
||||||
"text": "EAS Activation Request"
|
"text": "EAS Activation Request"
|
||||||
},
|
},
|
||||||
"RFD": {
|
"RFD": {
|
||||||
|
@ -1108,7 +1108,7 @@
|
||||||
"priority": 3
|
"priority": 3
|
||||||
},
|
},
|
||||||
"SWO": {
|
"SWO": {
|
||||||
"priority": 3,
|
"priority": 4,
|
||||||
"text": "Severe Storm Outlook Narrative (AC)"
|
"text": "Severe Storm Outlook Narrative (AC)"
|
||||||
},
|
},
|
||||||
"SWS": {
|
"SWS": {
|
||||||
|
@ -1160,11 +1160,11 @@
|
||||||
"text": "Tropical Cyclone Update"
|
"text": "Tropical Cyclone Update"
|
||||||
},
|
},
|
||||||
"TCV": {
|
"TCV": {
|
||||||
"priority": 1,
|
"priority": 4,
|
||||||
"text": "Tropical Cyclone Watch/Warning Break Points"
|
"text": "Tropical Cyclone Watch/Warning Break Points"
|
||||||
},
|
},
|
||||||
"TIB": {
|
"TIB": {
|
||||||
"priority": 2,
|
"priority": 3,
|
||||||
"text": "Tsunami Bulletin"
|
"text": "Tsunami Bulletin"
|
||||||
},
|
},
|
||||||
"TID": {
|
"TID": {
|
||||||
|
@ -1188,7 +1188,7 @@
|
||||||
"text": "Temperature Precipitation Table (Natl and Intnl)"
|
"text": "Temperature Precipitation Table (Natl and Intnl)"
|
||||||
},
|
},
|
||||||
"TSU": {
|
"TSU": {
|
||||||
"priority": 1,
|
"priority": 5,
|
||||||
"text": "Tsunami Watch/Warning"
|
"text": "Tsunami Watch/Warning"
|
||||||
},
|
},
|
||||||
"TUV": {
|
"TUV": {
|
||||||
|
@ -1224,7 +1224,7 @@
|
||||||
"text": "Ultraviolet Index"
|
"text": "Ultraviolet Index"
|
||||||
},
|
},
|
||||||
"VAA": {
|
"VAA": {
|
||||||
"priority": 1,
|
"priority": 3,
|
||||||
"text": "Volcanic Activity Advisory"
|
"text": "Volcanic Activity Advisory"
|
||||||
},
|
},
|
||||||
"VER": {
|
"VER": {
|
||||||
|
@ -1288,7 +1288,7 @@
|
||||||
"text": "Space Environment Watch"
|
"text": "Space Environment Watch"
|
||||||
},
|
},
|
||||||
"WCN": {
|
"WCN": {
|
||||||
"priority": 4,
|
"priority": 5,
|
||||||
"text": "Weather Watch Clearance Notification"
|
"text": "Weather Watch Clearance Notification"
|
||||||
},
|
},
|
||||||
"WCR": {
|
"WCR": {
|
||||||
|
@ -1308,7 +1308,7 @@
|
||||||
"text": "Routine Space Environment Product Issued Weekly"
|
"text": "Routine Space Environment Product Issued Weekly"
|
||||||
},
|
},
|
||||||
"WOU": {
|
"WOU": {
|
||||||
"priority": 3,
|
"priority": 5,
|
||||||
"text": "Tornado/Severe Thunderstorm Watch"
|
"text": "Tornado/Severe Thunderstorm Watch"
|
||||||
},
|
},
|
||||||
"WS1": {
|
"WS1": {
|
||||||
|
@ -1345,7 +1345,7 @@
|
||||||
},
|
},
|
||||||
"WSW": {
|
"WSW": {
|
||||||
"text": "Winter Storm Warning",
|
"text": "Winter Storm Warning",
|
||||||
"priority": 5
|
"priority": 4
|
||||||
},
|
},
|
||||||
"WWA": {
|
"WWA": {
|
||||||
"priority": 1,
|
"priority": 1,
|
||||||
|
@ -1365,11 +1365,11 @@
|
||||||
},
|
},
|
||||||
"CFA": {
|
"CFA": {
|
||||||
"text": "Coastal Flood Watch",
|
"text": "Coastal Flood Watch",
|
||||||
"priority": 4
|
"priority": 3
|
||||||
},
|
},
|
||||||
"FLA": {
|
"FLA": {
|
||||||
"text": "Flood Watch",
|
"text": "Flood Watch",
|
||||||
"priority": 2
|
"priority": 3
|
||||||
},
|
},
|
||||||
"HWA": {
|
"HWA": {
|
||||||
"text": "High Wind Watch",
|
"text": "High Wind Watch",
|
||||||
|
@ -1389,7 +1389,7 @@
|
||||||
},
|
},
|
||||||
"SVA": {
|
"SVA": {
|
||||||
"text": "Severe Thunderstorm Watch",
|
"text": "Severe Thunderstorm Watch",
|
||||||
"priority": 4
|
"priority": 5
|
||||||
},
|
},
|
||||||
"TOA": {
|
"TOA": {
|
||||||
"text": "Tornado Watch",
|
"text": "Tornado Watch",
|
||||||
|
@ -1405,7 +1405,7 @@
|
||||||
},
|
},
|
||||||
"TSA": {
|
"TSA": {
|
||||||
"text": "Tsunami Watch",
|
"text": "Tsunami Watch",
|
||||||
"priority": 4
|
"priority": 5
|
||||||
},
|
},
|
||||||
"TSW": {
|
"TSW": {
|
||||||
"text": "Tsunami Warning",
|
"text": "Tsunami Warning",
|
||||||
|
@ -1497,11 +1497,11 @@
|
||||||
},
|
},
|
||||||
"WFA": {
|
"WFA": {
|
||||||
"text": "Wild Fire Watch",
|
"text": "Wild Fire Watch",
|
||||||
"priority": 4
|
"priority": 3
|
||||||
},
|
},
|
||||||
"WFW": {
|
"WFW": {
|
||||||
"text": "Wild Fire Warning",
|
"text": "Wild Fire Warning",
|
||||||
"priority": 4
|
"priority": 3
|
||||||
},
|
},
|
||||||
"NMN": {
|
"NMN": {
|
||||||
"text": "Network Message Notification",
|
"text": "Network Message Notification",
|
||||||
|
@ -1510,5 +1510,21 @@
|
||||||
"AHD": {
|
"AHD": {
|
||||||
"text": "Area Hydrological Discussion",
|
"text": "Area Hydrological Discussion",
|
||||||
"priority": 1
|
"priority": 1
|
||||||
|
},
|
||||||
|
"GMT": {
|
||||||
|
"text": "AIRMET",
|
||||||
|
"priority": 1
|
||||||
|
},
|
||||||
|
"AHO": {
|
||||||
|
"text": "High Density Observations (USAF/NOAA)",
|
||||||
|
"priority": 3
|
||||||
|
},
|
||||||
|
"REP": {
|
||||||
|
"text": "RECCO Observations (tropical cyclone)",
|
||||||
|
"priority": 3
|
||||||
|
},
|
||||||
|
"PIR": {
|
||||||
|
"text": "Pilot Reports",
|
||||||
|
"priority": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
data/nwrstreams.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"callsigns": {
|
||||||
|
"WXL46": "https://icecast.sirenarchive.xyz/NWR/WXL46",
|
||||||
|
"WXJ61": "https://icecast.sirenarchive.xyz/NWR/WXJ61",
|
||||||
|
"KZZ57": "https://wxradio.org/IL-Rockford-KZZ57",
|
||||||
|
"KXI41": "https://wxradio.org/IL-CrystalLake-KXI41",
|
||||||
|
"KHB34": "https://wxradio.org/FL-Miami-KHB34",
|
||||||
|
"WNG663": "https://wxradio.org/FL-Princeton-WNG663",
|
||||||
|
"KEC80": "https://wxradio.org/GA-Atlanta-KEC80"
|
||||||
|
}
|
||||||
|
}
|
22
data/outlook.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"convective": [
|
||||||
|
"https://weather.cod.edu/cdata/text/images/spc/co/day1/categorical/spccoday1.categorical.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day2/categorical/spccoday2.categorical.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day3/categorical/spccoday3.categorical.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day4/severe/spccoday4.severe.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day5/severe/spccoday5.severe.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day6/severe/spccoday6.severe.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day7/severe/spccoday7.severe.latest.png",
|
||||||
|
"https://climate.cod.edu/data/text/images/spc/co/day8/severe/spccoday8.severe.latest.png"
|
||||||
|
],
|
||||||
|
"fire": [
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day1otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day2otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day3otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day4otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day5otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day6otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day7otlk_fire.gif",
|
||||||
|
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day8otlk_fire.gif"
|
||||||
|
]
|
||||||
|
}
|
187
data/satellites.json
Normal file
|
@ -0,0 +1,187 @@
|
||||||
|
{
|
||||||
|
"GOES-16": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/FD/GEOCOLOR/1808x1808.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/FD/AirMass/1808x1808.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/FD/13/1808x1808.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/FD/10/1808x1808.jpg"
|
||||||
|
},
|
||||||
|
"Floater 1": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M1/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M1/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M1/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"Floater 2": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M2/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M2/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/MESO/M2/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"United States": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/CONUS/GEOCOLOR/2500x1500.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/CONUS/AirMass/2500x1500.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/CONUS/13/2500x1500.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/CONUS/10/2500x1500.jpg"
|
||||||
|
},
|
||||||
|
"Canada": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/can/GEOCOLOR/2250x1125.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/can/AirMass/2250x1125.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/can/13/2250x1125.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/can/10/2250x1125.jpg"
|
||||||
|
},
|
||||||
|
"Mexico": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/mex/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/mex/AirMass/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/mex/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/mex/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"US East Coast": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/eus/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/eus/AirMass/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/eus/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/eus/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"Gulf of Mexico": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/gm/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/gm/AirMass/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/gm/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/gm/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"Puerto Rico": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/pr/GEOCOLOR/1200x1200.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/pr/AirMass/1200x1200.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/pr/13/1200x1200.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/pr/10/1200x1200.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"GOES-18": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/GEOCOLOR/1808x1808.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/AirMass/1808x1808.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/13/1808x1808.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/10/1808x1808.jpg"
|
||||||
|
},
|
||||||
|
"Floater 1": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M1/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M1/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M1/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"Floater 2": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M2/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M2/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/MESO/M2/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"US West Coast": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/wus/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/wus/AirMass/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/wus/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES16/ABI/SECTOR/wus/10/1000x1000.jpg"
|
||||||
|
},
|
||||||
|
"Hawaii": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/hi/GEOCOLOR/1200x1200.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/hi/AirMass/1200x1200.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/hi/13/1200x1200.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/hi/10/1200x1200.jpg"
|
||||||
|
},
|
||||||
|
"Alaska": {
|
||||||
|
"Visible": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/ak/GEOCOLOR/1000x1000.jpg",
|
||||||
|
"Airmass": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/ak/AirMass/1000x1000.jpg",
|
||||||
|
"Infrared": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/ak/13/1000x1000.jpg",
|
||||||
|
"Water Vapor": "https://cdn.star.nesdis.noaa.gov/GOES18/ABI/SECTOR/ak/10/1000x1000.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Himawari": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/full_disk_ahi_true_color.jpg",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/full_disk_ahi_rgb_airmass.jpg",
|
||||||
|
"Infrared": "https://www.ssec.wisc.edu/data/geo/images/himawari09/latest-himawari09_11_fd.gif",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/himawari09/latest-himawari09_10_fd.gif"
|
||||||
|
},
|
||||||
|
"Floater 1": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest/himawari-8/floater_02_geocolor.pngv",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest/himawari-8/floater_02_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"American Samoa": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/american_samoa_ahi_natural_color.png",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/american_samoa_ahi_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"Australia": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest/himawari-8/australia_true_color.jpg",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/australia_ahi_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"New Zealand": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/new_zealand_ahi_natural_color.png",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/new_zealand_ahi_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"Guam": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/guam_ahi_natural_color.png",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/guam_ahi_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"Hawaii": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/hawaii_ahi_natural_color.png"
|
||||||
|
},
|
||||||
|
"Japan": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/japan_ahi_natural_color.png",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/japan_ahi_rgb_airmass.png"
|
||||||
|
},
|
||||||
|
"Russia": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest/himawari-8/eastern_russia_true_color.jpg"
|
||||||
|
},
|
||||||
|
"China": {
|
||||||
|
"Visible": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/eastern_china_ahi_natural_color.png",
|
||||||
|
"Airmass": "https://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/eastern_china_ahi_rgb_airmass.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EWS-G2": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://www.ssec.wisc.edu/data/geo/images/ews-g1/latest_ews-g1_01_fd.gif",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/ews-g1/latest_ews-g1_03_fd.gif"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FY-2G": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://www.ssec.wisc.edu/data/geo/images/fy2g/latest_fy2g_01_fd.gif",
|
||||||
|
"Infrared": "https://www.ssec.wisc.edu/data/geo/images/fy2g/latest_fy2g_02_fd.gif",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/fy2g/latest_fy2g_04_fd.gif"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"GK-2A": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Infrared": "https://kiwiweather.com/gk-2a/FD_sanchez.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Meteosat 9": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://www.ssec.wisc.edu/data/geo/images/met-iodc/latest_met-iodc_01_fd.jpg",
|
||||||
|
"Infrared": "https://www.ssec.wisc.edu/data/geo/images/met-iodc/latest_met-iodc_04_fd.jpg",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/met-iodc/latest_met-iodc_06_fd.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Meteosat 10": {
|
||||||
|
"products": {
|
||||||
|
"Full Disk": {
|
||||||
|
"Visible": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_01_fd.gif",
|
||||||
|
"Infrared": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_04_fd.gif",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_06_fd.gif"
|
||||||
|
},
|
||||||
|
"Europe": {
|
||||||
|
"Visible": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_01_euro.gif",
|
||||||
|
"Infrared": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_04_euro.gif",
|
||||||
|
"Water Vapor": "https://www.ssec.wisc.edu/data/geo/images/met-prime/latest_met-prime_06_euro.gif"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
138
funcs.js
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
const geolib = require("geolib");
|
||||||
|
// Use OSM API to get coordinates https://nominatim.openstreetmap.org/search?q=search+query&format=json&limit=1
|
||||||
|
const getCoordinates = async (location) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
// Make location url friendly
|
||||||
|
location = encodeURIComponent(location);
|
||||||
|
const url = `https://nominatim.openstreetmap.org/search?q=${location}&format=json&limit=1`;
|
||||||
|
// use custom useragent (discord-iem-bot, chris@chrischro.me)
|
||||||
|
const options = {
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'Discord-IEM-Bot/1.0 (chris@chrischro.me)',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
// Make request
|
||||||
|
fetch(url, options)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
if (data.length > 0) {
|
||||||
|
resolve({
|
||||||
|
lat: data[0].lat,
|
||||||
|
lon: data[0].lon,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject('Location not found');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const getForecast = async (lat, lon) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const url = `https://api.weather.gov/points/${lat},${lon}`;
|
||||||
|
// use same custom ua
|
||||||
|
const options = {
|
||||||
|
headers: {
|
||||||
|
'User-Agent': 'Discord-IEM-Bot/1.0 (chris@chrischro.me)',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
// Make request
|
||||||
|
fetch(url, options)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
if (data.properties?.forecast) {
|
||||||
|
fetch(data.properties.forecast)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data2 => {
|
||||||
|
data2.properties.relativeLocation = data.properties.relativeLocation;
|
||||||
|
resolve(data2);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
reject('Forecast not found');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const getWeatherBySearch = async (search) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
getCoordinates(search)
|
||||||
|
.then(coords => {
|
||||||
|
getForecast(coords.lat, coords.lon)
|
||||||
|
.then(data => {
|
||||||
|
resolve(data);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const generateDiscordEmbeds = (forecastData, numOfDays) => {
|
||||||
|
// Take the first 7 periods and make them into embeds
|
||||||
|
const embeds = [];
|
||||||
|
if (!numOfDays) numOfDays = 1;
|
||||||
|
for (let i = 0; i < numOfDays; i++) {
|
||||||
|
const period = forecastData.properties.periods[i];
|
||||||
|
if (period.icon?.startsWith("/")) {
|
||||||
|
period.icon = `https://api.weather.gov${period.icon}`
|
||||||
|
}
|
||||||
|
const embed = {
|
||||||
|
title: `${period.name} in ${forecastData.properties.relativeLocation.properties.city} ${forecastData.properties.relativeLocation.properties.state}`,
|
||||||
|
description: `Valid <t:${new Date(period.startTime)/1000}:f> - <t:${new Date(period.endTime)/1000}:f>\n${period.detailedForecast}`,
|
||||||
|
timestamp: new Date(period.startTime),
|
||||||
|
thumbnail: {
|
||||||
|
url: period.icon,
|
||||||
|
},
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: 'Temperature',
|
||||||
|
value: `${period.temperature}°F`,
|
||||||
|
inline: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Wind',
|
||||||
|
value: `${period.windDirection}@${period.windSpeed}`,
|
||||||
|
inline: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Precipitation',
|
||||||
|
value: period.probabilityOfPrecipitation?.value ? period.probabilityOfPrecipitation?.value + '%' : '0%',
|
||||||
|
inline: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Humidity',
|
||||||
|
value: period.relativeHumidity?.value ? period.relativeHumidity.value + '%' : "0%",
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
footer: {
|
||||||
|
text: `Data provided by the National Weather Service · Elevation ${forecastData.properties.elevation.value}m`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
embeds.push(embed);
|
||||||
|
}
|
||||||
|
return embeds;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getCoordinates,
|
||||||
|
getForecast,
|
||||||
|
getWeatherBySearch,
|
||||||
|
generateDiscordEmbeds
|
||||||
|
};
|
BIN
images/error.gif
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
images/overlays/artcc.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
images/overlays/city.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
images/overlays/county.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
images/overlays/cwa.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
images/overlays/fema.png
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
images/overlays/interstate.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
images/overlays/population.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
images/overlays/rfc.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
images/overlays/tribal.png
Normal file
After Width: | Height: | Size: 34 KiB |
|
@ -14,8 +14,10 @@
|
||||||
"@xmpp/client": "^0.13.1",
|
"@xmpp/client": "^0.13.1",
|
||||||
"@xmpp/debug": "^0.13.0",
|
"@xmpp/debug": "^0.13.0",
|
||||||
"colors": "^1.4.0",
|
"colors": "^1.4.0",
|
||||||
"discord.js": "^14.15.2",
|
"discord.js": "14.14.1",
|
||||||
|
"geolib": "^3.3.4",
|
||||||
"html-entities": "^2.5.2",
|
"html-entities": "^2.5.2",
|
||||||
|
"jimp": "^0.22.12",
|
||||||
"sodium": "^3.0.2",
|
"sodium": "^3.0.2",
|
||||||
"sqlite3": "^5.1.7",
|
"sqlite3": "^5.1.7",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
|
|