From f307238854c0dc6d313e7d95477db97aa448ab99 Mon Sep 17 00:00:00 2001 From: Belfagor2005 <72314956+Belfagor2005@users.noreply.github.com> Date: Sat, 24 Jan 2026 17:39:01 +0100 Subject: [PATCH 1/4] v.3.3.9 fix and work on atv 7.6 --- plugin/control | 2 +- plugin/dict/dedict.txt | 3 +- plugin/foreca_logo.png | Bin 3034 -> 5146 bytes plugin/keymap.xml | 2 +- plugin/locale/Foreca.pot | 366 ++-- plugin/locale/de/LC_MESSAGES/Foreca.mo | Bin 11256 -> 11971 bytes plugin/locale/de/LC_MESSAGES/Foreca.po | 478 +++--- plugin/thumb/clear.png | Bin 0 -> 5834 bytes plugin/thumb/cloud_map.png | Bin 0 -> 14269 bytes plugin/thumb/cloudy.png | Bin 0 -> 5832 bytes plugin/thumb/eumetsat_map.png | Bin 0 -> 16564 bytes plugin/thumb/finnland.png | Bin 0 -> 14921 bytes plugin/thumb/light_rain.png | Bin 0 -> 5894 bytes plugin/thumb/mostly_cloudy.png | Bin 0 -> 4068 bytes plugin/thumb/norwegen.png | Bin 0 -> 12654 bytes plugin/thumb/overcast.png | Bin 0 -> 4068 bytes plugin/thumb/partly_cloudy.png | Bin 0 -> 4933 bytes plugin/thumb/pressure_map.png | Bin 0 -> 14828 bytes plugin/thumb/rain_map.png | Bin 0 -> 16214 bytes plugin/thumb/sat_map.png | Bin 0 -> 16459 bytes plugin/thumb/schweden.png | Bin 0 -> 17921 bytes plugin/thumb/sunny.png | Bin 0 -> 5692 bytes plugin/thumb/temp_map.png | Bin 0 -> 10994 bytes plugin/ui.py | 2108 +++++++++--------------- 24 files changed, 1237 insertions(+), 1722 deletions(-) create mode 100644 plugin/thumb/clear.png create mode 100644 plugin/thumb/cloud_map.png create mode 100644 plugin/thumb/cloudy.png create mode 100644 plugin/thumb/eumetsat_map.png create mode 100644 plugin/thumb/finnland.png create mode 100644 plugin/thumb/light_rain.png create mode 100644 plugin/thumb/mostly_cloudy.png create mode 100644 plugin/thumb/norwegen.png create mode 100644 plugin/thumb/overcast.png create mode 100644 plugin/thumb/partly_cloudy.png create mode 100644 plugin/thumb/pressure_map.png create mode 100644 plugin/thumb/rain_map.png create mode 100644 plugin/thumb/sat_map.png create mode 100644 plugin/thumb/schweden.png create mode 100644 plugin/thumb/sunny.png create mode 100644 plugin/thumb/temp_map.png diff --git a/plugin/control b/plugin/control index 41b0399..7901891 100644 --- a/plugin/control +++ b/plugin/control @@ -1,5 +1,5 @@ Package: enigma2-plugin-extensions-foreca -Version: 3.3.6 +Version: 3.3.8 Description: Weather forecast for the upcoming 10 days Section: extra Priority: optional diff --git a/plugin/dict/dedict.txt b/plugin/dict/dedict.txt index 666bab5..9a8222d 100644 --- a/plugin/dict/dedict.txt +++ b/plugin/dict/dedict.txt @@ -142,4 +142,5 @@ very cloudy or overcast with high clouds=stark bewölkt oder bedeckt mit hohen W very cloudy or overcast=stark bewölkt oder bedeckt very cloudy with rain and thunderstorms and fog=stark bewölkt mit Regen, Gewittern und Nebel very cloudy with rain and thunderstorms=stark bewölkt mit Regen und Gewittern -very heavy rain, locally flooding=sehr starker Regen, örtlich Hochwasser \ No newline at end of file +very heavy rain, locally flooding=sehr starker Regen, örtlich Hochwasser +Germany=Deutschland \ No newline at end of file diff --git a/plugin/foreca_logo.png b/plugin/foreca_logo.png index bc488233625a1f30725935303895923544fb5c6f..7127f87bcb236720b2536104cc279944086dd3a5 100644 GIT binary patch literal 5146 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 - + diff --git a/plugin/locale/Foreca.pot b/plugin/locale/Foreca.pot index 8abf74c..d98ce0d 100644 --- a/plugin/locale/Foreca.pot +++ b/plugin/locale/Foreca.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2025-02-26 20:02+0100\n" +"POT-Creation-Date: 2025-02-27 21:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,7 +19,7 @@ msgstr "" "X-Poedit-SearchPath-0: .\n" "X-Poedit-SearchPath-1: ui.py\n" -#: plugin.py:20 plugin.py:27 ui.py:920 ui.py:1070 ui~.py:938 ui~.py:941 +#: plugin.py:20 plugin.py:27 ui.py:920 ui.py:1064 ui~.py:938 ui~.py:941 #: ui~.py:959 ui~.py:1420 msgid "Foreca Weather Forecast" msgstr "" @@ -100,7 +100,7 @@ msgstr "" msgid "Humidity:" msgstr "" -#: ui.py:920 ui.py:1070 +#: ui.py:920 ui.py:1064 msgid "v." msgstr "" @@ -124,8 +124,8 @@ msgstr "" msgid "Maps" msgstr "" -#: ui.py:940 ui.py:1593 ui.py:1942 ui.py:2368 ui.py:2491 ui.py:2492 ui.py:2606 -#: ui.py:2607 ui.py:2608 ui.py:2881 ui.py:2882 ui~.py:964 ui~.py:1606 +#: ui.py:940 ui.py:1586 ui.py:1935 ui.py:2361 ui.py:2484 ui.py:2485 ui.py:2599 +#: ui.py:2600 ui.py:2601 ui.py:2879 ui.py:2880 ui~.py:964 ui~.py:1606 #: ui~.py:1956 ui~.py:2382 ui~.py:2502 ui~.py:2503 ui~.py:2617 ui~.py:2618 #: ui~.py:2619 ui~.py:2892 ui~.py:2893 msgid "Exit - End" @@ -135,8 +135,8 @@ msgstr "" msgid "Menu - Weather maps" msgstr "" -#: ui.py:942 ui.py:1607 ui.py:1947 ui.py:1948 ui.py:2373 ui.py:2374 ui.py:2613 -#: ui.py:2614 ui~.py:966 ui~.py:1620 ui~.py:1961 ui~.py:1962 ui~.py:2387 +#: ui.py:942 ui.py:1600 ui.py:1940 ui.py:1941 ui.py:2366 ui.py:2367 ui.py:2609 +#: ui.py:2610 ui~.py:966 ui~.py:1620 ui~.py:1961 ui~.py:1962 ui~.py:2387 #: ui~.py:2388 ui~.py:2624 ui~.py:2625 msgid "Info - Legend" msgstr "" @@ -233,695 +233,699 @@ msgstr "" msgid "9 - Today + 9 days" msgstr "" -#: ui.py:979 ui.py:1577 ui~.py:1004 ui~.py:1590 +#: ui.py:979 ui.py:1570 ui~.py:1004 ui~.py:1590 msgid "Favorite 1" msgstr "" -#: ui.py:980 ui.py:1578 ui~.py:1005 ui~.py:1591 +#: ui.py:980 ui.py:1571 ui~.py:1005 ui~.py:1591 msgid "Favorite 2" msgstr "" -#: ui.py:981 ui.py:1579 ui~.py:1006 ui~.py:1592 +#: ui.py:981 ui.py:1572 ui~.py:1006 ui~.py:1592 msgid "Home" msgstr "" -#: ui.py:1130 ui.py:1615 ui.py:1961 ui.py:2384 ui.py:2654 ui~.py:1141 +#: ui.py:1124 ui.py:1608 ui.py:1954 ui.py:2377 ui.py:2650 ui~.py:1141 #: ui~.py:1628 ui~.py:1975 ui~.py:2398 ui~.py:2665 #, python-format msgid "Server URL: %s\n" msgstr "" -#: ui.py:1133 ui.py:1619 +#: ui.py:1127 ui.py:1612 msgid "VERSION" msgstr "" -#: ui.py:1134 ui.py:1620 +#: ui.py:1128 ui.py:1613 msgid "Wind direction" msgstr "" -#: ui.py:1134 ui.py:1620 +#: ui.py:1128 ui.py:1613 msgid "Arrow to right: Wind from the West" msgstr "" -#: ui.py:1135 ui.py:1621 ui.py:1965 ui.py:2388 +#: ui.py:1129 ui.py:1614 ui.py:1958 ui.py:2381 ui.py:2654 msgid "Ok" msgstr "" -#: ui.py:1135 ui.py:1621 +#: ui.py:1129 ui.py:1614 msgid "Go to Config Plugin" msgstr "" -#: ui.py:1136 ui.py:1622 ui.py:1966 ui.py:2662 +#: ui.py:1130 ui.py:1615 ui.py:1959 ui.py:2660 msgid "Red" msgstr "" -#: ui.py:1136 ui.py:1622 +#: ui.py:1130 ui.py:1615 msgid "Temperature chart for the upcoming 5 days" msgstr "" -#: ui.py:1137 ui.py:1623 ui.py:1967 +#: ui.py:1131 ui.py:1616 ui.py:1960 msgid "Green" msgstr "" -#: ui.py:1137 ui.py:1623 +#: ui.py:1131 ui.py:1616 msgid "Go to Favorite 1" msgstr "" -#: ui.py:1138 ui.py:1624 ui.py:1968 +#: ui.py:1132 ui.py:1617 ui.py:1961 msgid "Yellow" msgstr "" -#: ui.py:1138 ui.py:1624 +#: ui.py:1132 ui.py:1617 msgid "Go to Favorite 2" msgstr "" -#: ui.py:1139 ui.py:1625 ui.py:1969 ui.py:2389 +#: ui.py:1133 ui.py:1618 ui.py:1962 ui.py:2382 msgid "Blue" msgstr "" -#: ui.py:1139 ui.py:1625 +#: ui.py:1133 ui.py:1618 msgid "Go to Home" msgstr "" -#: ui.py:1140 ui.py:1626 +#: ui.py:1134 ui.py:1619 msgid "Tv/Txt" msgstr "" -#: ui.py:1140 ui.py:1626 +#: ui.py:1134 ui.py:1619 msgid "Go to City Panel" msgstr "" -#: ui.py:1141 ui.py:1627 +#: ui.py:1135 ui.py:1620 msgid "Menu" msgstr "" -#: ui.py:1141 ui.py:1627 +#: ui.py:1135 ui.py:1620 msgid "Satellite photos and maps" msgstr "" -#: ui.py:1142 ui.py:1628 ui.py:1971 ui.py:2391 +#: ui.py:1136 ui.py:1621 ui.py:1964 ui.py:2384 msgid "Up/Down" msgstr "" -#: ui.py:1142 ui.py:1628 ui.py:1972 ui.py:2392 +#: ui.py:1136 ui.py:1621 ui.py:1965 ui.py:2385 msgid "Previous/Next page" msgstr "" -#: ui.py:1143 ui.py:1629 ui.py:1972 ui.py:2392 +#: ui.py:1137 ui.py:1622 ui.py:1965 ui.py:2385 msgid "< >" msgstr "" -#: ui.py:1143 ui.py:1629 +#: ui.py:1137 ui.py:1622 msgid "Prognosis Previous/Next day" msgstr "" -#: ui.py:1144 ui.py:1630 +#: ui.py:1138 ui.py:1623 msgid "0 - 9" msgstr "" -#: ui.py:1144 ui.py:1630 +#: ui.py:1138 ui.py:1623 msgid "Prognosis (x) days from now" msgstr "" -#: ui.py:1572 ui.py:1582 ui~.py:1585 ui~.py:1595 +#: ui.py:1565 ui.py:1575 ui~.py:1585 ui~.py:1595 msgid "Select a city" msgstr "" -#: ui.py:1580 ui~.py:1593 +#: ui.py:1573 ui~.py:1593 msgid "Forecast" msgstr "" -#: ui.py:1581 ui.py:1592 ui~.py:1594 ui~.py:1605 +#: ui.py:1574 ui.py:1585 ui~.py:1594 ui~.py:1605 msgid "Keyboard" msgstr "" -#: ui.py:1594 ui.py:1970 ui.py:2390 ui~.py:1607 +#: ui.py:1587 ui.py:1963 ui.py:2383 ui~.py:1607 msgid "Open Keyboard" msgstr "" -#: ui.py:1595 ui.py:1943 ui.py:2369 ui~.py:1608 ui~.py:1957 ui~.py:2383 +#: ui.py:1588 ui.py:1936 ui.py:2362 ui~.py:1608 ui~.py:1957 ui~.py:2383 msgid "Left - Previous page" msgstr "" -#: ui.py:1596 ui.py:1944 ui.py:2370 ui~.py:1609 ui~.py:1958 ui~.py:2384 +#: ui.py:1589 ui.py:1937 ui.py:2363 ui~.py:1609 ui~.py:1958 ui~.py:2384 msgid "Right - Next page" msgstr "" -#: ui.py:1597 ui.py:1945 ui.py:2371 ui~.py:1610 ui~.py:1959 ui~.py:2385 +#: ui.py:1590 ui.py:1938 ui.py:2364 ui~.py:1610 ui~.py:1959 ui~.py:2385 msgid "Up - Previous" msgstr "" -#: ui.py:1598 ui.py:1946 ui.py:2372 ui~.py:1611 ui~.py:1960 ui~.py:2386 +#: ui.py:1591 ui.py:1939 ui.py:2365 ui~.py:1611 ui~.py:1960 ui~.py:2386 msgid "Down - Next" msgstr "" -#: ui.py:1599 ui~.py:1612 +#: ui.py:1592 ui~.py:1612 msgid "OK - Select" msgstr "" -#: ui.py:1600 ui~.py:1613 +#: ui.py:1593 ui~.py:1613 msgid "Green - Assign to Favorite 1" msgstr "" -#: ui.py:1601 ui~.py:1614 +#: ui.py:1594 ui~.py:1614 msgid "Yellow - Assign to Favorite 2" msgstr "" -#: ui.py:1602 ui~.py:1615 +#: ui.py:1595 ui~.py:1615 msgid "Blue - Assign to Home" msgstr "" -#: ui.py:1603 ui~.py:1616 +#: ui.py:1596 ui~.py:1616 msgid "Channel+ - 500 back" msgstr "" -#: ui.py:1604 ui~.py:1617 +#: ui.py:1597 ui~.py:1617 msgid "Channel- - 500 forward" msgstr "" -#: ui.py:1605 ui~.py:1618 +#: ui.py:1598 ui~.py:1618 msgid "Volume- - 100 forward" msgstr "" -#: ui.py:1606 ui~.py:1619 +#: ui.py:1599 ui~.py:1619 msgid "Volume+ - 100 back" msgstr "" -#: ui.py:1618 +#: ui.py:1611 msgid "Server URL" msgstr "" -#: ui.py:1641 ui~.py:1653 +#: ui.py:1634 ui~.py:1653 msgid "Search your City" msgstr "" -#: ui.py:1655 ui~.py:1667 +#: ui.py:1648 ui~.py:1667 msgid "No City found in search!!!" msgstr "" -#: ui.py:1663 ui~.py:1675 +#: ui.py:1656 ui~.py:1675 msgid "An error occurred during search!" msgstr "" -#: ui.py:1749 ui~.py:1763 +#: ui.py:1742 ui~.py:1763 msgid "" "This city is stored as home!\n" "\n" " " msgstr "" -#: ui.py:1762 ui~.py:1776 +#: ui.py:1755 ui~.py:1776 msgid "" "This city is stored as favorite 1!\n" "\n" " " msgstr "" -#: ui.py:1775 ui~.py:1789 +#: ui.py:1768 ui~.py:1789 msgid "" "This city is stored as favorite 2!\n" "\n" " " msgstr "" -#: ui.py:1929 ui.py:1937 ui~.py:1943 ui~.py:1951 +#: ui.py:1922 ui.py:1930 ui~.py:1943 ui~.py:1951 msgid "Satellite photos" msgstr "" -#: ui.py:1933 ui.py:1966 ui.py:2087 ui~.py:1947 ui~.py:2101 +#: ui.py:1926 ui.py:1959 ui.py:2080 ui~.py:1947 ui~.py:2101 msgid "Continents" msgstr "" -#: ui.py:1934 ui.py:1967 ui.py:2072 ui.py:2076 ui~.py:1948 ui~.py:2086 +#: ui.py:1927 ui.py:1960 ui.py:2065 ui.py:2069 ui~.py:1948 ui~.py:2086 #: ui~.py:2090 msgid "Europe" msgstr "" -#: ui.py:1935 ui.py:1968 ui.py:2043 ui.py:2052 ui~.py:1949 ui~.py:2057 +#: ui.py:1928 ui.py:1961 ui.py:2036 ui.py:2045 ui~.py:1949 ui~.py:2057 #: ui~.py:2066 msgid "Germany" msgstr "" -#: ui.py:1936 ui.py:1969 ui.py:2363 ui.py:2389 ui.py:2873 ui~.py:1950 +#: ui.py:1929 ui.py:1962 ui.py:2356 ui.py:2382 ui.py:2871 ui~.py:1950 #: ui~.py:2377 ui~.py:2884 msgid "Settings" msgstr "" -#: ui.py:1949 ui~.py:1963 +#: ui.py:1942 ui~.py:1963 msgid "Red - Continents" msgstr "" -#: ui.py:1950 ui~.py:1964 +#: ui.py:1943 ui~.py:1964 msgid "Green - Europe" msgstr "" -#: ui.py:1951 ui~.py:1965 +#: ui.py:1944 ui~.py:1965 msgid "Yellow - Germany" msgstr "" -#: ui.py:1952 ui.py:2375 ui~.py:1966 ui~.py:2389 +#: ui.py:1945 ui.py:2368 ui~.py:1966 ui~.py:2389 msgid "Blue - Settings" msgstr "" -#: ui.py:1953 ui.py:2376 ui~.py:1967 ui~.py:2390 +#: ui.py:1946 ui.py:2369 ui~.py:1967 ui~.py:2390 msgid "OK - Show" msgstr "" -#: ui.py:1965 ui.py:2388 +#: ui.py:1958 ui.py:2381 msgid "Show map" msgstr "" -#: ui.py:1970 ui.py:2390 +#: ui.py:1963 ui.py:2383 msgid "Txt/Red" msgstr "" -#: ui.py:1971 ui.py:2391 +#: ui.py:1964 ui.py:2384 msgid "Previous/Next" msgstr "" -#: ui.py:1973 ui.py:2393 ui.py:2663 +#: ui.py:1966 ui.py:2386 ui.py:2661 msgid "Info" msgstr "" -#: ui.py:1973 ui.py:2393 ui.py:2663 +#: ui.py:1966 ui.py:2386 ui.py:2661 msgid "This information" msgstr "" -#: ui.py:1980 ui~.py:1994 +#: ui.py:1973 ui~.py:1994 msgid "Air pressure" msgstr "" -#: ui.py:1981 ui~.py:1995 +#: ui.py:1974 ui~.py:1995 msgid "Cloudcover Video" msgstr "" -#: ui.py:1982 ui~.py:1996 +#: ui.py:1975 ui~.py:1996 msgid "Showerradar Video" msgstr "" -#: ui.py:1983 ui~.py:1997 +#: ui.py:1976 ui~.py:1997 msgid "Temperature Video" msgstr "" -#: ui.py:1984 ui~.py:1998 +#: ui.py:1977 ui~.py:1998 msgid "Weather map Video" msgstr "" -#: ui.py:1985 ui~.py:1999 +#: ui.py:1978 ui~.py:1999 msgid "Eumetsat" msgstr "" -#: ui.py:2022 ui~.py:2036 +#: ui.py:2015 ui~.py:2036 msgid "Baden-Wuerttemberg" msgstr "" -#: ui.py:2023 ui~.py:2037 +#: ui.py:2016 ui~.py:2037 msgid "Bavaria" msgstr "" -#: ui.py:2024 ui~.py:2038 +#: ui.py:2017 ui~.py:2038 msgid "Berlin" msgstr "" -#: ui.py:2025 ui~.py:2039 +#: ui.py:2018 ui~.py:2039 msgid "Brandenburg" msgstr "" -#: ui.py:2026 ui~.py:2040 +#: ui.py:2019 ui~.py:2040 msgid "Bremen" msgstr "" -#: ui.py:2027 ui~.py:2041 +#: ui.py:2020 ui~.py:2041 msgid "Hamburg" msgstr "" -#: ui.py:2028 ui~.py:2042 +#: ui.py:2021 ui~.py:2042 msgid "Hesse" msgstr "" -#: ui.py:2029 ui~.py:2043 +#: ui.py:2022 ui~.py:2043 msgid "Lower Saxony" msgstr "" -#: ui.py:2030 ui~.py:2044 +#: ui.py:2023 ui~.py:2044 msgid "Mecklenburg-Vorpommern" msgstr "" -#: ui.py:2031 ui~.py:2045 +#: ui.py:2024 ui~.py:2045 msgid "North Rhine-Westphalia" msgstr "" -#: ui.py:2032 ui~.py:2046 +#: ui.py:2025 ui~.py:2046 msgid "Rhineland-Palatine" msgstr "" -#: ui.py:2033 ui~.py:2047 +#: ui.py:2026 ui~.py:2047 msgid "Saarland" msgstr "" -#: ui.py:2034 ui~.py:2048 +#: ui.py:2027 ui~.py:2048 msgid "Saxony" msgstr "" -#: ui.py:2035 ui~.py:2049 +#: ui.py:2028 ui~.py:2049 msgid "Saxony-Anhalt" msgstr "" -#: ui.py:2036 ui~.py:2050 +#: ui.py:2029 ui~.py:2050 msgid "Schleswig-Holstein" msgstr "" -#: ui.py:2037 ui~.py:2051 +#: ui.py:2030 ui~.py:2051 msgid "Thuringia" msgstr "" -#: ui.py:2047 ui~.py:2061 +#: ui.py:2040 ui~.py:2061 msgid "Austria" msgstr "" -#: ui.py:2048 ui~.py:2062 +#: ui.py:2041 ui~.py:2062 msgid "Belgium" msgstr "" -#: ui.py:2049 ui~.py:2063 +#: ui.py:2042 ui~.py:2063 msgid "Czech Republic" msgstr "" -#: ui.py:2050 ui~.py:2064 +#: ui.py:2043 ui~.py:2064 msgid "Denmark" msgstr "" -#: ui.py:2051 ui~.py:2065 +#: ui.py:2044 ui~.py:2065 msgid "France" msgstr "" -#: ui.py:2053 ui~.py:2067 +#: ui.py:2046 ui~.py:2067 msgid "Greece" msgstr "" -#: ui.py:2054 ui~.py:2068 +#: ui.py:2047 ui~.py:2068 msgid "Great Britain" msgstr "" -#: ui.py:2055 ui~.py:2069 +#: ui.py:2048 ui~.py:2069 msgid "Hungary" msgstr "" -#: ui.py:2056 ui~.py:2070 +#: ui.py:2049 ui~.py:2070 msgid "Ireland" msgstr "" -#: ui.py:2057 ui~.py:2071 +#: ui.py:2050 ui~.py:2071 msgid "Italy" msgstr "" -#: ui.py:2058 ui~.py:2072 +#: ui.py:2051 ui~.py:2072 msgid "Latvia" msgstr "" -#: ui.py:2059 ui~.py:2073 +#: ui.py:2052 ui~.py:2073 msgid "Luxembourg" msgstr "" -#: ui.py:2060 ui~.py:2074 +#: ui.py:2053 ui~.py:2074 msgid "Netherlands" msgstr "" -#: ui.py:2061 ui~.py:2075 +#: ui.py:2054 ui~.py:2075 msgid "Poland" msgstr "" -#: ui.py:2062 ui~.py:2076 +#: ui.py:2055 ui~.py:2076 msgid "Portugal" msgstr "" -#: ui.py:2063 ui~.py:2077 +#: ui.py:2056 ui~.py:2077 msgid "Russia" msgstr "" -#: ui.py:2064 ui~.py:2078 +#: ui.py:2057 ui~.py:2078 msgid "Slovakia" msgstr "" -#: ui.py:2065 ui~.py:2079 +#: ui.py:2058 ui~.py:2079 msgid "Spain" msgstr "" -#: ui.py:2066 ui~.py:2080 +#: ui.py:2059 ui~.py:2080 msgid "Switzerland" msgstr "" -#: ui.py:2077 ui~.py:2091 +#: ui.py:2070 ui~.py:2091 msgid "Middle East" msgstr "" -#: ui.py:2078 ui~.py:2092 +#: ui.py:2071 ui~.py:2092 msgid "North Africa" msgstr "" -#: ui.py:2079 ui~.py:2093 +#: ui.py:2072 ui~.py:2093 msgid "South Africa" msgstr "" -#: ui.py:2080 ui~.py:2094 +#: ui.py:2073 ui~.py:2094 msgid "North America" msgstr "" -#: ui.py:2081 ui~.py:2095 +#: ui.py:2074 ui~.py:2095 msgid "Middle America" msgstr "" -#: ui.py:2082 ui~.py:2096 +#: ui.py:2075 ui~.py:2096 msgid "South America" msgstr "" -#: ui.py:2083 ui~.py:2097 +#: ui.py:2076 ui~.py:2097 msgid "East Asia" msgstr "" -#: ui.py:2084 ui~.py:2098 +#: ui.py:2077 ui~.py:2098 msgid "Middle Asia" msgstr "" -#: ui.py:2085 ui~.py:2099 +#: ui.py:2078 ui~.py:2099 msgid "Southeast Asia" msgstr "" -#: ui.py:2086 ui~.py:2100 +#: ui.py:2079 ui~.py:2100 msgid "Australia" msgstr "" -#: ui.py:2145 ui~.py:2159 +#: ui.py:2138 ui~.py:2159 msgid "h" msgstr "" -#: ui.py:2155 ui~.py:2169 +#: ui.py:2148 ui~.py:2169 msgid "Select action" msgstr "" -#: ui.py:2257 ui~.py:2271 +#: ui.py:2250 ui~.py:2271 msgid "No satellite images found." msgstr "" -#: ui.py:2260 ui~.py:2274 +#: ui.py:2253 ui~.py:2274 #, python-format msgid "Failed to process satellite data: %s" msgstr "" -#: ui.py:2264 ui.py:2465 ui~.py:2278 ui~.py:2476 +#: ui.py:2257 ui.py:2458 ui~.py:2278 ui~.py:2476 #, python-format msgid "A critical error occurred: %s" msgstr "" -#: ui.py:2442 ui~.py:2453 +#: ui.py:2435 ui~.py:2453 msgid "Invalid selection. Please select a valid region." msgstr "" -#: ui.py:2460 ui~.py:2471 +#: ui.py:2453 ui~.py:2471 #, python-format msgid "Failed to load the satellite image: %s" msgstr "" -#: ui.py:2609 ui.py:2659 ui~.py:2620 +#: ui.py:2602 ui.py:2603 ui.py:2654 ui.py:2655 ui~.py:2620 msgid "Pause" msgstr "" -#: ui.py:2610 ui~.py:2621 +#: ui.py:2604 ui~.py:2621 msgid "Play/Pause" msgstr "" -#: ui.py:2611 ui~.py:2622 +#: ui.py:2605 ui.py:2607 ui~.py:2622 msgid "Left - Previous" msgstr "" -#: ui.py:2612 ui~.py:2623 +#: ui.py:2606 ui.py:2608 ui~.py:2623 msgid "Right - Next" msgstr "" -#: ui.py:2621 ui~.py:2632 +#: ui.py:2617 ui~.py:2632 msgid "Please wait, photo is being loaded ..." msgstr "" -#: ui.py:2658 -msgid "Prev/Next" +#: ui.py:2655 +msgid "Pause Pic" msgstr "" -#: ui.py:2658 -msgid "Prev./Next Pic" +#: ui.py:2656 +msgid "Play" msgstr "" -#: ui.py:2659 -msgid "Pause Pic" +#: ui.py:2656 +msgid "Play Pic" msgstr "" -#: ui.py:2660 -msgid "Play" +#: ui.py:2657 +msgid "Left/Right" msgstr "" -#: ui.py:2660 -msgid "Play Pic" +#: ui.py:2657 ui.py:2658 +msgid "Prev./Next Pic" +msgstr "" + +#: ui.py:2658 +msgid "Prev/Next" msgstr "" -#: ui.py:2661 +#: ui.py:2659 msgid "Stop" msgstr "" -#: ui.py:2661 ui.py:2662 +#: ui.py:2659 ui.py:2660 msgid "Exit" msgstr "" -#: ui.py:2874 ui~.py:2885 +#: ui.py:2872 ui~.py:2885 msgid "Cancel" msgstr "" -#: ui.py:2875 ui~.py:2886 +#: ui.py:2873 ui~.py:2886 msgid "Save" msgstr "" -#: ui.py:2879 ui~.py:2890 +#: ui.py:2877 ui~.py:2890 msgid "OK - City" msgstr "" -#: ui.py:2880 ui~.py:2891 +#: ui.py:2878 ui~.py:2891 msgid "Green - Save" msgstr "" -#: ui.py:2883 ui~.py:2894 +#: ui.py:2881 ui~.py:2894 msgid "Left" msgstr "" -#: ui.py:2884 ui~.py:2895 +#: ui.py:2882 ui~.py:2895 msgid "Right" msgstr "" -#: ui.py:2885 ui~.py:2896 +#: ui.py:2883 ui~.py:2896 msgid "Up" msgstr "" -#: ui.py:2886 ui~.py:2897 +#: ui.py:2884 ui~.py:2897 msgid "Down " msgstr "" -#: ui.py:2887 ui~.py:2898 +#: ui.py:2885 ui~.py:2898 msgid "0" msgstr "" -#: ui.py:2888 ui~.py:2899 +#: ui.py:2886 ui~.py:2899 msgid "1" msgstr "" -#: ui.py:2889 ui~.py:2900 +#: ui.py:2887 ui~.py:2900 msgid "2" msgstr "" -#: ui.py:2890 ui~.py:2901 +#: ui.py:2888 ui~.py:2901 msgid "3" msgstr "" -#: ui.py:2891 ui~.py:2902 +#: ui.py:2889 ui~.py:2902 msgid "4" msgstr "" -#: ui.py:2892 ui~.py:2903 +#: ui.py:2890 ui~.py:2903 msgid "5" msgstr "" -#: ui.py:2893 ui~.py:2904 +#: ui.py:2891 ui~.py:2904 msgid "6" msgstr "" -#: ui.py:2894 ui~.py:2905 +#: ui.py:2892 ui~.py:2905 msgid "7" msgstr "" -#: ui.py:2895 ui~.py:2906 +#: ui.py:2893 ui~.py:2906 msgid "8" msgstr "" -#: ui.py:2896 ui~.py:2907 +#: ui.py:2894 ui~.py:2907 msgid "9" msgstr "" -#: ui.py:2915 ui~.py:2926 +#: ui.py:2913 ui~.py:2926 msgid "Select units" msgstr "" -#: ui.py:2916 ui~.py:2927 +#: ui.py:2914 ui~.py:2927 msgid "Select time format" msgstr "" -#: ui.py:2917 ui~.py:2928 +#: ui.py:2915 ui~.py:2928 msgid "City names as labels in the Main screen" msgstr "" -#: ui.py:2918 ui~.py:2929 +#: ui.py:2916 ui~.py:2929 msgid "Home City at start" msgstr "" -#: ui.py:2919 ui~.py:2930 +#: ui.py:2917 ui~.py:2930 msgid "Fav1 City" msgstr "" -#: ui.py:2920 ui~.py:2931 +#: ui.py:2918 ui~.py:2931 msgid "Fav2 City" msgstr "" -#: ui.py:2921 ui~.py:2932 +#: ui.py:2919 ui~.py:2932 msgid "Frame size in full view" msgstr "" -#: ui.py:2922 ui~.py:2933 +#: ui.py:2920 ui~.py:2933 msgid "Font size in slideshow" msgstr "" -#: ui.py:2923 ui~.py:2934 +#: ui.py:2921 ui~.py:2934 msgid "Scaling Mode" msgstr "" -#: ui.py:2924 ui~.py:2935 +#: ui.py:2922 ui~.py:2935 msgid "Slide Time (seconds)" msgstr "" -#: ui.py:2925 ui~.py:2936 +#: ui.py:2923 ui~.py:2936 msgid "Show Infoline" msgstr "" -#: ui.py:2926 ui~.py:2937 +#: ui.py:2924 ui~.py:2937 msgid "Textcolor" msgstr "" -#: ui.py:2927 ui~.py:2938 +#: ui.py:2925 ui~.py:2938 msgid "Backgroundcolor" msgstr "" -#: ui.py:2928 ui~.py:2939 +#: ui.py:2926 ui~.py:2939 msgid "Slide picture in loop" msgstr "" -#: ui.py:2929 ui~.py:2940 +#: ui.py:2927 ui~.py:2940 msgid "Display in extensions menu" msgstr "" -#: ui.py:2930 ui~.py:2941 +#: ui.py:2928 ui~.py:2941 msgid "Debug" msgstr "" diff --git a/plugin/locale/de/LC_MESSAGES/Foreca.mo b/plugin/locale/de/LC_MESSAGES/Foreca.mo index 9b3c5623e9cbdbf157ba4901bc8f7ef024b7fd00..e69e5f5726a5868adaa819038efdda19a1b6c17a 100644 GIT binary patch delta 5254 zcmZA433OD|9mnxINk~{lA_)XS7$6CREx|wq*{KM~RznPK2m(VgBqT8z3fc}-Ua|JL8=Rx) z;!*7>sD9F{J?Ph?F4r1**$u<3ew)=NSbd_^E36)|`U0yjwE7yWuR~4vO>Bd2V`Hqv zAfCeZF6vxtbALsd$l_fNHpSkk6%4obd(0^qPkS+HWfho&RoDm@qn=-B^_Nli?=<%y zW4jtmW_)*yLPtD{*JCoh>4A>e5WAz^MjzCQhNC7r23ui)wLgHGKozQ=$5F59IjoQC zQ2lO2O?*2>H9$3mOx%a*_;=KU4U>JFqwY&Hvrq%|ME>Un@uvljM-5bF^;xI^m!c-T z0yVMqs2zACnf+J80sEj9HPBbs1iwXfa0RvUct+77ZH(HHEYvINje55uQ3KtHx_=UC zrPEON6{8k54|U&DE!cmZ-lcZq2Gqb?F$Z_rjbEWUJd0Z4cc_V7Mhy_x(tqa-P%BG8 z-lpq@DL4eRuzOL@6{03w8nqARpgMXIS*%-R^$n;Fx1x4xH|lVGjM{&CaL+hoTmkhZ-k3iGsGI3f0l0=3;AKi7~WqL_N3#wG%t+^IfQkA3*KQhp3ev zMNRZ1X5u%fl{aTry00~|fT&CN3oaKmks+voMxox>-Pjsum~Y3#pNHj)O-=zi1;7ok?L*4%(v;a1eZZy{s3 zy{K=;3DiW-+2^jUzY__lewtW45%rHyOVk-^)i&yPm_~zEkbzo357ayi+b=v z(C_$r)QVZeTVAza$P;j?9=@jH^CeEAQgM!Sk%Dt z%_XRgR+*bnhi^Ob+v46w4R{hY(D$ev`4QDmiwu7!+M}N9j!BH~hEULo?=+{|4RcXH zp-WNU_ZP7qzJ~mExN6i^A4Wa@g?S#e6ET_oN*ki;%}^6eLH)q>z-T;$krdQH9>(ER zRL5cLi?c8ucc41jjap%i`7zd`UW;{KN7TDNXU28(2TVaNBp21sppJb1^$Rwf25oHt z#^WT^Z*(E5<9VnK=c5keO4Nk6p(eTy)z2Z+j-5aqx--b`yB{!!sh#}x{-}wJ=*0eO z#sxI!9Zk0zX4(ypqB?#CV{i>>fc2<}y>6fHL@l5OHK9YO`#v|nMh?9D59+zLS^f@Y zL@5Mm=#F|PV^J#&qdJ<0Iz)?6hinV-)ph$Z7XOAi?Wa*Yb`dpj)6V`*wnepPn*C8{ zARqa)chM3G^(ibgm!UdbjT&$pHoy-s0gs?2b{rexKTxma0_v5-^BvX#TB7RRP&+u# z9F2PJ9^|>Gn`R%(M$K#iYJm0r4Q@N?wC_i~s*|V*e~XRq66#&Xcl8Il0X5NfsIAVj zdN%5C--KFVKkTZ1|3_2M3LnA&I3EXM4fey>ZvMc7P&3arC!!APbku+kpe8gMHP92- z1fNDt`~}qK+fetvgLVJ?{~iUs<73ET+<9z_soiY_s1CES3HG%55Y#IghFZ~N)T^jO zP3%e3K#Nh&FGuajDh%L@7}X)#KtVTdK@Geeb=r5M9^8j|;4?Cn=qe*K>PoyzWX|pt zt53iWtz3Ta>hz4&XQo%sLjEo-$b&@ZBD&_0&&gAyJy}Hh68%`{dY=5AJU~v8QljgRWHsqT zj*?G_E}g3d;7-K+J8$%lQCo=8A)c6Y2*WP zJ6TBK*Ia>GRXyQzkPR#Ho%8?UzF@5swm&%LHy#T}%;+EPsMxRrl-O`D2) z$P?s!(wyje!N>gu(?~D9|JSTh^d}|c5poBaNVlw=g*2blARZt>YZ)fqv;*x*|(HcmAZnVdE-Wm9pj~?mM4u5mre~%4OfJwM8ajI z?ygWtNm-S*ICV{IZugtKu5EJTdk1s++?-n-Y7+_s`gjM^YHgw`+tyZxgVzTF71a;5 zyBP3FI=tnzNuLoY@fM}u*CGWHwGcr;FF=LCp{+SsGgC|#(heIXa z#LV^03(6{rLKWe{P-XU*noU!RDkGsv?{a3?o7}MvJ+J9FG~j*O>0lh|Dz9Fd)i02m zU+}+$l||egUXTg)R&gy5Z{)yEuTm6RBZ((}|5X~qwhYSp2E_T2X zsEL$goC`5y3N2_@iTt?@kuRL9HV-0;;tpe5Jc-TlW7Kt@S^XC3yzkBEHqPpSX`m3X^Oiwe)Lk;9URL4cAJsyaf$yj7EZYH+F3e@?V zPy^h7n%RET^@ou^cbpGh{}E~h{)XzeAw)qljb~l8)JbMXvj=ML`u6SnMbYtUDWv>q9*)jYY$zepqYPz8u@M1$O6g!!_o>h!$Q<~{ZRuhF~_4i zo{rjr1$Zx3n!8XluC?zkm{*a3gxqZkn$h>D6BAfh?O6(HW;v(<3_uNF20fpfL5dW-Gmz0E2!&^*!O26vj6pV!Zp+d4OWj~-F3rcREHT>?|~X%A?jHe zf;>;|5&M22s-Ftfb!$*7wi&hbyHQ(o0GsIjuc4q0Yq1MnMD68wSd1~OryPt$ScRI& zIn;TV&1YRPoefb%h=8(Ca=ifvP@HT3IQSI4(eG$W54s%5!>cYA-e`aS;^$Vy0 z{tJVYAfoj{s9K5H=y3Cc2qR;Ow-@hQ~Uw8=-}V@0doY>Psly&7u;0TLpB$A@ZECM4Y#9i z^cHGGPNHT|k6MYpqOQAvda9#3`ZG>8yQ04TG3tkHBAii+xIb<{`HBd{?f1yc1K-56V+cCYC?}m?(ddS&=#yljdUGq zFJCr~qHgp7s)Mgk@AWOzR@_0|Aik5o_bpJ@XQ3XlKB$QeM-6Ne>iT&Y(vmz*K}-2G z(wEzeK|E>ge?cwTb<_YGP+O3gy5JCMiE1#2r%@~L1*(HPsAr*hw*RbTA#x1MKm$KY?km)dV>qqjyl}pF=$>A7TJ6VKmmG&by4d z(N&DXTd3>)i8^1;+i&##>v*4RCcRbRc#WKllo&BqT3NhGhLEkK7tt}D94Bj3;iw_S zWRNNx+BywRE2CdS9lzCw?q5x2kSub7>?PS`BiT7mo|k0&|?`#5&RJxdl_Ju?3vQF)#0B6@0{ATN=}2#-VL*um#1zZiM-9-usr@Z;xR zuy(=fx+-!=6^;y_$mhF!jv!OXK2oOnFQCwP=oK7BHjn}`hUm~gNY9gmc(h(+l?n}vJ@(?*fYDweq6AC{hZ(GAM^BuF1MHC(-X=G$$BTgX+Ddq^F5I?~90TAIhOCs|K6k+np}P#^b8Od?0E9*+~rXtIQ)5FLHUi)0#EL7pV1 ziT>Bs{f;yqeJKpo#!Me;O@F|jk_XAptW7*_<@wl&Odw0iZqk;-kY|XFUz7L9a59T{ zB$l{5@3Ynyy~Ay4!%Oa77v;4|+UV^|3VSn?`+ED5|KnA+%ka*(TkMTYnGoKeGA!UV zNqsTAC$%WxHMGz33e)C!C(^b?=jG;krRlw53xfGQd*_EYq)!WY{|jF5E@gZiKG30A zAn;JQrej0EJJRWOZ%)>XxS=!W&VJMl^@7>S-nUsrUUByQ;i~L50dGg=Oz(W>ZC*u} z8Q#}j3b-!Vbzs0N>sAxa%jq3xK6Z4l^PrsIoU$2RT#5H&_bl&J_XXbI+@=2q4|&sB diff --git a/plugin/locale/de/LC_MESSAGES/Foreca.po b/plugin/locale/de/LC_MESSAGES/Foreca.po index 3a39d96..fc984e6 100644 --- a/plugin/locale/de/LC_MESSAGES/Foreca.po +++ b/plugin/locale/de/LC_MESSAGES/Foreca.po @@ -1,9 +1,9 @@ msgid "" msgstr "" -"Project-Id-Version: Foreca 3.0.0\n" +"Project-Id-Version: Foreca 3.3.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-25 18:11+0100\n" -"PO-Revision-Date: 2025-02-25 21:24+0100\n" +"POT-Creation-Date: 2025-02-27 21:27+0100\n" +"PO-Revision-Date: 2025-02-28 09:34+0100\n" "Last-Translator: Masta2002\n" "Language-Team: \n" "Language: de_DE\n" @@ -17,7 +17,7 @@ msgstr "" "X-Generator: Poedit 3.5\n" "X-Poedit-SearchPath-0: .\n" -#: plugin.py:20 plugin.py:27 ui.py:934 ui.py:1084 ui~.py:938 ui~.py:941 +#: plugin.py:20 plugin.py:27 ui.py:920 ui.py:1064 ui~.py:938 ui~.py:941 #: ui~.py:959 ui~.py:1420 msgid "Foreca Weather Forecast" msgstr "Foreca Wettervorhersage" @@ -78,298 +78,350 @@ msgstr "12 Std" msgid "24 h" msgstr "24 Std" -#: ui.py:703 ui~.py:704 +#: ui.py:689 ui~.py:704 msgid "Temp" msgstr "Temp" -#: ui.py:715 ui~.py:716 +#: ui.py:701 ui~.py:716 msgid "Wind" msgstr "Wind" -#: ui.py:726 ui~.py:727 +#: ui.py:712 ui~.py:727 msgid "Feels like:" msgstr "fühlt sich an wie:" -#: ui.py:731 ui~.py:732 +#: ui.py:717 ui~.py:732 msgid "Precip chance:" msgstr "Niederschlagswahrscheinlichkeit:" -#: ui.py:736 ui~.py:737 +#: ui.py:722 ui~.py:737 msgid "Humidity:" msgstr "Luftfeuchtigkeit relativ:" -#: ui.py:934 ui.py:1084 +#: ui.py:920 ui.py:1064 msgid "v." msgstr "v." -#: ui.py:937 ui.py:1018 ui~.py:946 ui~.py:1029 +#: ui.py:923 ui.py:1004 ui~.py:946 ui~.py:1029 msgid "Please wait ..." msgstr "Bitte warten..." -#: ui.py:941 ui~.py:950 +#: ui.py:927 ui~.py:950 msgid "Week" msgstr "Woche" -#: ui.py:942 ui~.py:951 +#: ui.py:928 ui~.py:951 msgid "Config" msgstr "Konfig" -#: ui.py:948 ui~.py:957 +#: ui.py:934 ui~.py:957 msgid "Legend" msgstr "Legende" -#: ui.py:949 ui~.py:958 +#: ui.py:935 ui~.py:958 msgid "Maps" msgstr "Karten" -#: ui.py:954 ui.py:1609 ui.py:1958 ui.py:2384 ui.py:2507 ui.py:2508 ui.py:2622 -#: ui.py:2623 ui.py:2624 ui.py:2897 ui.py:2898 ui~.py:964 ui~.py:1606 +#: ui.py:940 ui.py:1586 ui.py:1935 ui.py:2361 ui.py:2484 ui.py:2485 ui.py:2599 +#: ui.py:2600 ui.py:2601 ui.py:2879 ui.py:2880 ui~.py:964 ui~.py:1606 #: ui~.py:1956 ui~.py:2382 ui~.py:2502 ui~.py:2503 ui~.py:2617 ui~.py:2618 #: ui~.py:2619 ui~.py:2892 ui~.py:2893 msgid "Exit - End" msgstr "Exit - Beenden" -#: ui.py:955 ui~.py:965 +#: ui.py:941 ui~.py:965 msgid "Menu - Weather maps" msgstr "Menü - Wetterkarten" -#: ui.py:956 ui.py:1623 ui.py:1963 ui.py:1964 ui.py:2389 ui.py:2390 ui.py:2629 -#: ui.py:2630 ui~.py:966 ui~.py:1620 ui~.py:1961 ui~.py:1962 ui~.py:2387 +#: ui.py:942 ui.py:1600 ui.py:1940 ui.py:1941 ui.py:2366 ui.py:2367 ui.py:2609 +#: ui.py:2610 ui~.py:966 ui~.py:1620 ui~.py:1961 ui~.py:1962 ui~.py:2387 #: ui~.py:2388 ui~.py:2624 ui~.py:2625 msgid "Info - Legend" msgstr "Info - Legende" -#: ui.py:957 ui~.py:967 +#: ui.py:943 ui~.py:967 msgid "OK - Config" msgstr "OK - Konfig" -#: ui.py:958 ui~.py:968 +#: ui.py:944 ui~.py:968 msgid "Left - Previous day" msgstr "Links - Voriger Tag" -#: ui.py:959 ui~.py:969 +#: ui.py:945 ui~.py:969 msgid "Right - Next day" msgstr "Rechts - Nächster Tag" -#: ui.py:960 ui~.py:970 +#: ui.py:946 ui~.py:970 msgid "Up - Previous page" msgstr "Hoch - Vorige Seite" -#: ui.py:961 ui~.py:971 +#: ui.py:947 ui~.py:971 msgid "Down - Next page" msgstr "Runter - Nächste Seite" -#: ui.py:962 ui~.py:972 +#: ui.py:948 ui~.py:972 msgid "Left arrow - Previous day" msgstr "Pfeil links - Voriger Tag" -#: ui.py:963 ui~.py:973 +#: ui.py:949 ui~.py:973 msgid "Right arrow - Next day" msgstr "Pfeil rechts - Nächster Tag" -#: ui.py:964 ui~.py:974 +#: ui.py:950 ui~.py:974 msgid "Red - Weekoverview" msgstr "Rot - Wochenüberblick" -#: ui.py:965 ui~.py:975 +#: ui.py:951 ui~.py:975 msgid "Green - Favorite 1" msgstr "Grün - Favorit 1" -#: ui.py:966 ui~.py:976 +#: ui.py:952 ui~.py:976 msgid "Yellow - Favorite 2" msgstr "Gelb - Favorit 2" -#: ui.py:967 ui~.py:977 +#: ui.py:953 ui~.py:977 msgid "Blue - Home" msgstr "Blau - Wohnort" -#: ui.py:968 ui~.py:978 +#: ui.py:954 ui~.py:978 msgid "Tv - City" msgstr "TV - Stadt" -#: ui.py:969 ui~.py:979 +#: ui.py:955 ui~.py:979 msgid "text - City" msgstr "text - Stadt" -#: ui.py:970 ui~.py:980 +#: ui.py:956 ui~.py:980 msgid "0 - Today" msgstr "0 - Heute" -#: ui.py:971 ui~.py:981 +#: ui.py:957 ui~.py:981 msgid "1 - Today + 1 day" msgstr "1 - Heute + 1 Tag" -#: ui.py:972 ui~.py:982 +#: ui.py:958 ui~.py:982 msgid "2 - Today + 2 days" msgstr "2 - Heute + 2 Tage" -#: ui.py:973 ui~.py:983 +#: ui.py:959 ui~.py:983 msgid "3 - Today + 3 days" msgstr "3 - Heute + 3 Tage" -#: ui.py:974 ui~.py:984 +#: ui.py:960 ui~.py:984 msgid "4 - Today + 4 days" msgstr "4 - Heute + 4 Tage" -#: ui.py:975 ui~.py:985 +#: ui.py:961 ui~.py:985 msgid "5 - Today + 5 days" msgstr "5 - Heute + 5 Tage" -#: ui.py:976 ui~.py:986 +#: ui.py:962 ui~.py:986 msgid "6 - Today + 6 days" msgstr "6 - Heute + 6 Tage" -#: ui.py:977 ui~.py:987 +#: ui.py:963 ui~.py:987 msgid "7 - Today + 7 days" msgstr "7 - Heute + 7 Tage" -#: ui.py:978 ui~.py:988 +#: ui.py:964 ui~.py:988 msgid "8 - Today + 8 days" msgstr "8 - Heute + 8 Tage" -#: ui.py:979 ui~.py:989 +#: ui.py:965 ui~.py:989 msgid "9 - Today + 9 days" msgstr "9 - Heute + 9 Tage" -#: ui.py:993 ui.py:1593 ui~.py:1004 ui~.py:1590 +#: ui.py:979 ui.py:1570 ui~.py:1004 ui~.py:1590 msgid "Favorite 1" msgstr "Favorit 1" -#: ui.py:994 ui.py:1594 ui~.py:1005 ui~.py:1591 +#: ui.py:980 ui.py:1571 ui~.py:1005 ui~.py:1591 msgid "Favorite 2" msgstr "Favorit 2" -#: ui.py:995 ui.py:1595 ui~.py:1006 ui~.py:1592 +#: ui.py:981 ui.py:1572 ui~.py:1006 ui~.py:1592 msgid "Home" msgstr "Wohnort" -#: ui.py:1144 ui.py:1631 ui.py:1977 ui.py:2400 ui.py:2670 ui~.py:1141 +#: ui.py:1124 ui.py:1608 ui.py:1954 ui.py:2377 ui.py:2650 ui~.py:1141 #: ui~.py:1628 ui~.py:1975 ui~.py:2398 ui~.py:2665 #, python-format msgid "Server URL: %s\n" msgstr "Server URL: %s\n" -#: ui.py:1149 ui.py:1636 +#: ui.py:1127 ui.py:1612 +msgid "VERSION" +msgstr "Version" + +#: ui.py:1128 ui.py:1613 +msgid "Wind direction" +msgstr "Wind Richtung" + +#: ui.py:1128 ui.py:1613 msgid "Arrow to right: Wind from the West" msgstr "Pfeil nach rechts: Wind aus West" -#: ui.py:1150 ui.py:1637 +#: ui.py:1129 ui.py:1614 ui.py:1958 ui.py:2381 ui.py:2654 +msgid "Ok" +msgstr "Ok" + +#: ui.py:1129 ui.py:1614 msgid "Go to Config Plugin" msgstr "Gehe zu Plugin Konfig" -#: ui.py:1151 ui.py:1638 +#: ui.py:1130 ui.py:1615 ui.py:1959 ui.py:2660 +msgid "Red" +msgstr "Rot" + +#: ui.py:1130 ui.py:1615 msgid "Temperature chart for the upcoming 5 days" msgstr "Temperaturdiagramm für die nächsten 5 Tage" -#: ui.py:1152 ui.py:1639 +#: ui.py:1131 ui.py:1616 ui.py:1960 +msgid "Green" +msgstr "Grün" + +#: ui.py:1131 ui.py:1616 msgid "Go to Favorite 1" msgstr "Gehe zu Favorit 1" -#: ui.py:1153 ui.py:1640 +#: ui.py:1132 ui.py:1617 ui.py:1961 +msgid "Yellow" +msgstr "Gelb" + +#: ui.py:1132 ui.py:1617 msgid "Go to Favorite 2" msgstr "Gehe zu Favorit 2" -#: ui.py:1154 ui.py:1641 +#: ui.py:1133 ui.py:1618 ui.py:1962 ui.py:2382 +msgid "Blue" +msgstr "Blau" + +#: ui.py:1133 ui.py:1618 msgid "Go to Home" msgstr "Gehe zur Startseite" -#: ui.py:1155 ui.py:1642 +#: ui.py:1134 ui.py:1619 +msgid "Tv/Txt" +msgstr "TV/Txt" + +#: ui.py:1134 ui.py:1619 msgid "Go to City Panel" msgstr "Gehe zum Stadtpanel" -#: ui.py:1156 ui.py:1643 +#: ui.py:1135 ui.py:1620 +msgid "Menu" +msgstr "Menü" + +#: ui.py:1135 ui.py:1620 msgid "Satellite photos and maps" msgstr "Satellitenfotos und Karten" -#: ui.py:1157 ui.py:1644 ui.py:1988 ui.py:2408 +#: ui.py:1136 ui.py:1621 ui.py:1964 ui.py:2384 +msgid "Up/Down" +msgstr "Hoch/Runter" + +#: ui.py:1136 ui.py:1621 ui.py:1965 ui.py:2385 msgid "Previous/Next page" msgstr "Vorherige/Nächste Seite" -#: ui.py:1158 ui.py:1645 +#: ui.py:1137 ui.py:1622 ui.py:1965 ui.py:2385 +msgid "< >" +msgstr "< >" + +#: ui.py:1137 ui.py:1622 msgid "Prognosis Previous/Next day" msgstr "Prognose Vorheriger/Nächster Tag" -#: ui.py:1159 ui.py:1646 +#: ui.py:1138 ui.py:1623 +msgid "0 - 9" +msgstr "0 - 9" + +#: ui.py:1138 ui.py:1623 msgid "Prognosis (x) days from now" msgstr "Prognose (x) Tage ab jetzt" -#: ui.py:1588 ui.py:1598 ui~.py:1585 ui~.py:1595 +#: ui.py:1565 ui.py:1575 ui~.py:1585 ui~.py:1595 msgid "Select a city" msgstr "Einen Ort auswählen" -#: ui.py:1596 ui~.py:1593 +#: ui.py:1573 ui~.py:1593 msgid "Forecast" msgstr "Prognose" -#: ui.py:1597 ui.py:1608 ui~.py:1594 ui~.py:1605 +#: ui.py:1574 ui.py:1585 ui~.py:1594 ui~.py:1605 msgid "Keyboard" msgstr "Tastatur" -#: ui.py:1610 ui.py:1986 ui.py:2406 ui~.py:1607 +#: ui.py:1587 ui.py:1963 ui.py:2383 ui~.py:1607 msgid "Open Keyboard" msgstr "Öffne Tastatur" -#: ui.py:1611 ui.py:1959 ui.py:2385 ui~.py:1608 ui~.py:1957 ui~.py:2383 +#: ui.py:1588 ui.py:1936 ui.py:2362 ui~.py:1608 ui~.py:1957 ui~.py:2383 msgid "Left - Previous page" msgstr "Links - Vorige Seite" -#: ui.py:1612 ui.py:1960 ui.py:2386 ui~.py:1609 ui~.py:1958 ui~.py:2384 +#: ui.py:1589 ui.py:1937 ui.py:2363 ui~.py:1609 ui~.py:1958 ui~.py:2384 msgid "Right - Next page" msgstr "Rechts - Nächste Seite" -#: ui.py:1613 ui.py:1961 ui.py:2387 ui~.py:1610 ui~.py:1959 ui~.py:2385 +#: ui.py:1590 ui.py:1938 ui.py:2364 ui~.py:1610 ui~.py:1959 ui~.py:2385 msgid "Up - Previous" msgstr "Hoch - Vorige" -#: ui.py:1614 ui.py:1962 ui.py:2388 ui~.py:1611 ui~.py:1960 ui~.py:2386 +#: ui.py:1591 ui.py:1939 ui.py:2365 ui~.py:1611 ui~.py:1960 ui~.py:2386 msgid "Down - Next" msgstr "Unten - Nächste" -#: ui.py:1615 ui~.py:1612 +#: ui.py:1592 ui~.py:1612 msgid "OK - Select" msgstr "OK - Wählen" -#: ui.py:1616 ui~.py:1613 +#: ui.py:1593 ui~.py:1613 msgid "Green - Assign to Favorite 1" msgstr "Grün - Auf Favorit 1 legen" -#: ui.py:1617 ui~.py:1614 +#: ui.py:1594 ui~.py:1614 msgid "Yellow - Assign to Favorite 2" msgstr "Gelb - Auf Favorit 2 legen" -#: ui.py:1618 ui~.py:1615 +#: ui.py:1595 ui~.py:1615 msgid "Blue - Assign to Home" msgstr "Blau - Auf Wohnort legen" -#: ui.py:1619 ui~.py:1616 +#: ui.py:1596 ui~.py:1616 msgid "Channel+ - 500 back" msgstr "Kanal+ - 500 zurück" -#: ui.py:1620 ui~.py:1617 +#: ui.py:1597 ui~.py:1617 msgid "Channel- - 500 forward" msgstr "Kanal- - 500 vorwärts" -#: ui.py:1621 ui~.py:1618 +#: ui.py:1598 ui~.py:1618 msgid "Volume- - 100 forward" msgstr "Volumen- - 100 vorwärts" -#: ui.py:1622 ui~.py:1619 +#: ui.py:1599 ui~.py:1619 msgid "Volume+ - 100 back" msgstr "Volumen+ - 100 zurück" -#: ui.py:1657 ui~.py:1653 +#: ui.py:1611 +msgid "Server URL" +msgstr "Server URL" + +#: ui.py:1634 ui~.py:1653 msgid "Search your City" msgstr "Suche deine Stadt" -#: ui.py:1671 ui~.py:1667 +#: ui.py:1648 ui~.py:1667 msgid "No City found in search!!!" msgstr "Keine Stadt in der Suche gefunden!!!" -#: ui.py:1679 ui~.py:1675 +#: ui.py:1656 ui~.py:1675 msgid "An error occurred during search!" msgstr "Bei der Suche ist ein Fehler aufgetreten!" -#: ui.py:1765 ui~.py:1763 +#: ui.py:1742 ui~.py:1763 msgid "" "This city is stored as home!\n" "\n" @@ -379,7 +431,7 @@ msgstr "" "\n" " " -#: ui.py:1778 ui~.py:1776 +#: ui.py:1755 ui~.py:1776 msgid "" "This city is stored as favorite 1!\n" "\n" @@ -389,7 +441,7 @@ msgstr "" "\n" " " -#: ui.py:1791 ui~.py:1789 +#: ui.py:1768 ui~.py:1789 msgid "" "This city is stored as favorite 2!\n" "\n" @@ -399,464 +451,488 @@ msgstr "" "\n" " " -#: ui.py:1945 ui.py:1953 ui~.py:1943 ui~.py:1951 +#: ui.py:1922 ui.py:1930 ui~.py:1943 ui~.py:1951 msgid "Satellite photos" msgstr "Satellitenbilder" -#: ui.py:1949 ui.py:1982 ui.py:2103 ui~.py:1947 ui~.py:2101 +#: ui.py:1926 ui.py:1959 ui.py:2080 ui~.py:1947 ui~.py:2101 msgid "Continents" msgstr "Kontinente" -#: ui.py:1950 ui.py:1983 ui.py:2088 ui.py:2092 ui~.py:1948 ui~.py:2086 +#: ui.py:1927 ui.py:1960 ui.py:2065 ui.py:2069 ui~.py:1948 ui~.py:2086 #: ui~.py:2090 msgid "Europe" msgstr "Europa" -#: ui.py:1951 ui.py:1984 ui.py:2059 ui.py:2068 ui~.py:1949 ui~.py:2057 +#: ui.py:1928 ui.py:1961 ui.py:2036 ui.py:2045 ui~.py:1949 ui~.py:2057 #: ui~.py:2066 msgid "Germany" msgstr "Deutschland" -#: ui.py:1952 ui.py:1985 ui.py:2379 ui.py:2405 ui.py:2889 ui~.py:1950 +#: ui.py:1929 ui.py:1962 ui.py:2356 ui.py:2382 ui.py:2871 ui~.py:1950 #: ui~.py:2377 ui~.py:2884 msgid "Settings" msgstr "Einstellungen" -#: ui.py:1965 ui~.py:1963 +#: ui.py:1942 ui~.py:1963 msgid "Red - Continents" msgstr "Rot - Kontinente" -#: ui.py:1966 ui~.py:1964 +#: ui.py:1943 ui~.py:1964 msgid "Green - Europe" msgstr "Grün - Europa" -#: ui.py:1967 ui~.py:1965 +#: ui.py:1944 ui~.py:1965 msgid "Yellow - Germany" msgstr "Gelb - Deutschland" -#: ui.py:1968 ui.py:2391 ui~.py:1966 ui~.py:2389 +#: ui.py:1945 ui.py:2368 ui~.py:1966 ui~.py:2389 msgid "Blue - Settings" msgstr "Blau - Einstellungen" -#: ui.py:1969 ui.py:2392 ui~.py:1967 ui~.py:2390 +#: ui.py:1946 ui.py:2369 ui~.py:1967 ui~.py:2390 msgid "OK - Show" msgstr "OK - Anzeigen" -#: ui.py:1981 ui.py:2404 +#: ui.py:1958 ui.py:2381 msgid "Show map" msgstr "Karte anzeigen" -#: ui.py:1987 ui.py:2407 +#: ui.py:1963 ui.py:2383 +msgid "Txt/Red" +msgstr "Txt/Rot" + +#: ui.py:1964 ui.py:2384 msgid "Previous/Next" msgstr "Zurück/Weiter" -#: ui.py:1989 ui.py:2409 ui.py:2679 +#: ui.py:1966 ui.py:2386 ui.py:2661 +msgid "Info" +msgstr "Info" + +#: ui.py:1966 ui.py:2386 ui.py:2661 msgid "This information" msgstr "Diese Informationen" -#: ui.py:1996 ui~.py:1994 +#: ui.py:1973 ui~.py:1994 msgid "Air pressure" msgstr "Luftdruck" -#: ui.py:1997 ui~.py:1995 +#: ui.py:1974 ui~.py:1995 msgid "Cloudcover Video" msgstr "Bewölkungs-Video" -#: ui.py:1998 ui~.py:1996 +#: ui.py:1975 ui~.py:1996 msgid "Showerradar Video" msgstr "Niederschlagsradar" -#: ui.py:1999 ui~.py:1997 +#: ui.py:1976 ui~.py:1997 msgid "Temperature Video" msgstr "Temperatur Video" -#: ui.py:2000 ui~.py:1998 +#: ui.py:1977 ui~.py:1998 msgid "Weather map Video" msgstr "Wetter-Video" -#: ui.py:2001 ui~.py:1999 +#: ui.py:1978 ui~.py:1999 msgid "Eumetsat" msgstr "Eumetsat" -#: ui.py:2038 ui~.py:2036 +#: ui.py:2015 ui~.py:2036 msgid "Baden-Wuerttemberg" msgstr "Baden-Württemberg" -#: ui.py:2039 ui~.py:2037 +#: ui.py:2016 ui~.py:2037 msgid "Bavaria" msgstr "Bayern" -#: ui.py:2040 ui~.py:2038 +#: ui.py:2017 ui~.py:2038 msgid "Berlin" msgstr "Berlin" -#: ui.py:2041 ui~.py:2039 +#: ui.py:2018 ui~.py:2039 msgid "Brandenburg" msgstr "Brandenburg" -#: ui.py:2042 ui~.py:2040 +#: ui.py:2019 ui~.py:2040 msgid "Bremen" msgstr "Bremen" -#: ui.py:2043 ui~.py:2041 +#: ui.py:2020 ui~.py:2041 msgid "Hamburg" msgstr "Hamburg" -#: ui.py:2044 ui~.py:2042 +#: ui.py:2021 ui~.py:2042 msgid "Hesse" msgstr "Hessen" -#: ui.py:2045 ui~.py:2043 +#: ui.py:2022 ui~.py:2043 msgid "Lower Saxony" msgstr "Niedersachsen" -#: ui.py:2046 ui~.py:2044 +#: ui.py:2023 ui~.py:2044 msgid "Mecklenburg-Vorpommern" msgstr "Mecklenburg-Vorpommern" -#: ui.py:2047 ui~.py:2045 +#: ui.py:2024 ui~.py:2045 msgid "North Rhine-Westphalia" msgstr "Nordrhein-Westfalen" -#: ui.py:2048 ui~.py:2046 +#: ui.py:2025 ui~.py:2046 msgid "Rhineland-Palatine" msgstr "Rheinland-Pfalz" -#: ui.py:2049 ui~.py:2047 +#: ui.py:2026 ui~.py:2047 msgid "Saarland" msgstr "Saarland" -#: ui.py:2050 ui~.py:2048 +#: ui.py:2027 ui~.py:2048 msgid "Saxony" msgstr "Sachsen" -#: ui.py:2051 ui~.py:2049 +#: ui.py:2028 ui~.py:2049 msgid "Saxony-Anhalt" msgstr "Sachsen-Anhalt" -#: ui.py:2052 ui~.py:2050 +#: ui.py:2029 ui~.py:2050 msgid "Schleswig-Holstein" msgstr "Schleswig-Holstein" -#: ui.py:2053 ui~.py:2051 +#: ui.py:2030 ui~.py:2051 msgid "Thuringia" msgstr "Thüringen" -#: ui.py:2063 ui~.py:2061 +#: ui.py:2040 ui~.py:2061 msgid "Austria" msgstr "Österreich" -#: ui.py:2064 ui~.py:2062 +#: ui.py:2041 ui~.py:2062 msgid "Belgium" msgstr "Belgien" -#: ui.py:2065 ui~.py:2063 +#: ui.py:2042 ui~.py:2063 msgid "Czech Republic" msgstr "Tschechien" -#: ui.py:2066 ui~.py:2064 +#: ui.py:2043 ui~.py:2064 msgid "Denmark" msgstr "Dänemark" -#: ui.py:2067 ui~.py:2065 +#: ui.py:2044 ui~.py:2065 msgid "France" msgstr "Frankreich" -#: ui.py:2069 ui~.py:2067 +#: ui.py:2046 ui~.py:2067 msgid "Greece" msgstr "Griechenland" -#: ui.py:2070 ui~.py:2068 +#: ui.py:2047 ui~.py:2068 msgid "Great Britain" msgstr "Großbritannien" -#: ui.py:2071 ui~.py:2069 +#: ui.py:2048 ui~.py:2069 msgid "Hungary" msgstr "Ungarn" -#: ui.py:2072 ui~.py:2070 +#: ui.py:2049 ui~.py:2070 msgid "Ireland" msgstr "Irland" -#: ui.py:2073 ui~.py:2071 +#: ui.py:2050 ui~.py:2071 msgid "Italy" msgstr "Italien" -#: ui.py:2074 ui~.py:2072 +#: ui.py:2051 ui~.py:2072 msgid "Latvia" msgstr "Lettland" -#: ui.py:2075 ui~.py:2073 +#: ui.py:2052 ui~.py:2073 msgid "Luxembourg" msgstr "Luxemburg" -#: ui.py:2076 ui~.py:2074 +#: ui.py:2053 ui~.py:2074 msgid "Netherlands" msgstr "Niederlande" -#: ui.py:2077 ui~.py:2075 +#: ui.py:2054 ui~.py:2075 msgid "Poland" msgstr "Polen" -#: ui.py:2078 ui~.py:2076 +#: ui.py:2055 ui~.py:2076 msgid "Portugal" msgstr "Portugal" -#: ui.py:2079 ui~.py:2077 +#: ui.py:2056 ui~.py:2077 msgid "Russia" msgstr "Russland" -#: ui.py:2080 ui~.py:2078 +#: ui.py:2057 ui~.py:2078 msgid "Slovakia" msgstr "Slowakei" -#: ui.py:2081 ui~.py:2079 +#: ui.py:2058 ui~.py:2079 msgid "Spain" msgstr "Spanien" -#: ui.py:2082 ui~.py:2080 +#: ui.py:2059 ui~.py:2080 msgid "Switzerland" msgstr "Schweiz" -#: ui.py:2093 ui~.py:2091 +#: ui.py:2070 ui~.py:2091 msgid "Middle East" msgstr "Mittlerer Osten" -#: ui.py:2094 ui~.py:2092 +#: ui.py:2071 ui~.py:2092 msgid "North Africa" msgstr "Nord-Afrika" -#: ui.py:2095 ui~.py:2093 +#: ui.py:2072 ui~.py:2093 msgid "South Africa" msgstr "Süd-Afrika" -#: ui.py:2096 ui~.py:2094 +#: ui.py:2073 ui~.py:2094 msgid "North America" msgstr "Nord-Amerika" -#: ui.py:2097 ui~.py:2095 +#: ui.py:2074 ui~.py:2095 msgid "Middle America" msgstr "Mittel-Amerika" -#: ui.py:2098 ui~.py:2096 +#: ui.py:2075 ui~.py:2096 msgid "South America" msgstr "Süd-Amerika" -#: ui.py:2099 ui~.py:2097 +#: ui.py:2076 ui~.py:2097 msgid "East Asia" msgstr "Ost-Asien" -#: ui.py:2100 ui~.py:2098 +#: ui.py:2077 ui~.py:2098 msgid "Middle Asia" msgstr "Zentral-Asien" -#: ui.py:2101 ui~.py:2099 +#: ui.py:2078 ui~.py:2099 msgid "Southeast Asia" msgstr "Südost-Asien" -#: ui.py:2102 ui~.py:2100 +#: ui.py:2079 ui~.py:2100 msgid "Australia" msgstr "Australien" -#: ui.py:2161 ui~.py:2159 +#: ui.py:2138 ui~.py:2159 msgid "h" msgstr "h" -#: ui.py:2171 ui~.py:2169 +#: ui.py:2148 ui~.py:2169 msgid "Select action" msgstr "Aktion auswählen" -#: ui.py:2273 ui~.py:2271 +#: ui.py:2250 ui~.py:2271 msgid "No satellite images found." msgstr "Keine Satellitenbilder gefunden." -#: ui.py:2276 ui~.py:2274 +#: ui.py:2253 ui~.py:2274 #, python-format msgid "Failed to process satellite data: %s" msgstr "Satellitendaten konnten nicht verarbeitet werden: %s" -#: ui.py:2280 ui.py:2481 ui~.py:2278 ui~.py:2476 +#: ui.py:2257 ui.py:2458 ui~.py:2278 ui~.py:2476 #, python-format msgid "A critical error occurred: %s" msgstr "Ein kritischer Fehler ist aufgetreten: %s" -#: ui.py:2458 ui~.py:2453 +#: ui.py:2435 ui~.py:2453 msgid "Invalid selection. Please select a valid region." msgstr "Ungültige Auswahl. Bitte wählen Sie eine gültige Region." -#: ui.py:2476 ui~.py:2471 +#: ui.py:2453 ui~.py:2471 #, python-format msgid "Failed to load the satellite image: %s" msgstr "Das Satellitenbild konnte nicht geladen werden: %s" -#: ui.py:2625 ui~.py:2620 +#: ui.py:2602 ui.py:2603 ui.py:2654 ui.py:2655 ui~.py:2620 msgid "Pause" msgstr "Pause" -#: ui.py:2626 ui~.py:2621 +#: ui.py:2604 ui~.py:2621 msgid "Play/Pause" msgstr "Abspielen/Pause" -#: ui.py:2627 ui~.py:2622 +#: ui.py:2605 ui.py:2607 ui~.py:2622 msgid "Left - Previous" msgstr "Links - Voriger Tag" -#: ui.py:2628 ui~.py:2623 +#: ui.py:2606 ui.py:2608 ui~.py:2623 msgid "Right - Next" msgstr "Rechts - Nächster Tag" -#: ui.py:2637 ui~.py:2632 +#: ui.py:2617 ui~.py:2632 msgid "Please wait, photo is being loaded ..." msgstr "Bitte warten, Foto wird geladen..." -#: ui.py:2674 -msgid "Prev./Next Pic" -msgstr "Vorheriges/Nächstes Bild" - -#: ui.py:2675 +#: ui.py:2655 msgid "Pause Pic" msgstr "Bild anhalten" -#: ui.py:2676 +#: ui.py:2656 +msgid "Play" +msgstr "Abspielen" + +#: ui.py:2656 msgid "Play Pic" msgstr "Bild abspielen" -#: ui.py:2677 ui.py:2678 +#: ui.py:2657 +msgid "Left/Right" +msgstr "Links/Rechts" + +#: ui.py:2657 ui.py:2658 +msgid "Prev./Next Pic" +msgstr "Vorheriges/Nächstes Bild" + +#: ui.py:2658 +msgid "Prev/Next" +msgstr "Vorheriges/Nächstes" + +#: ui.py:2659 +msgid "Stop" +msgstr "Stopp" + +#: ui.py:2659 ui.py:2660 msgid "Exit" msgstr "Ausfahrt" -#: ui.py:2890 ui~.py:2885 +#: ui.py:2872 ui~.py:2885 msgid "Cancel" msgstr "Abbrechen" -#: ui.py:2891 ui~.py:2886 +#: ui.py:2873 ui~.py:2886 msgid "Save" msgstr "Speichern" -#: ui.py:2895 ui~.py:2890 +#: ui.py:2877 ui~.py:2890 msgid "OK - City" msgstr "OK - Stadt" -#: ui.py:2896 ui~.py:2891 +#: ui.py:2878 ui~.py:2891 msgid "Green - Save" msgstr "Grün - Speichern" -#: ui.py:2899 ui~.py:2894 +#: ui.py:2881 ui~.py:2894 msgid "Left" -msgstr "Links" +msgstr "links" -#: ui.py:2900 ui~.py:2895 +#: ui.py:2882 ui~.py:2895 msgid "Right" -msgstr "Rechts" +msgstr "rechts" -#: ui.py:2901 ui~.py:2896 +#: ui.py:2883 ui~.py:2896 msgid "Up" -msgstr "Hoch" +msgstr "hoch" -#: ui.py:2902 ui~.py:2897 +#: ui.py:2884 ui~.py:2897 msgid "Down " -msgstr "Runter " +msgstr "runter " -#: ui.py:2903 ui~.py:2898 +#: ui.py:2885 ui~.py:2898 msgid "0" msgstr "0" -#: ui.py:2904 ui~.py:2899 +#: ui.py:2886 ui~.py:2899 msgid "1" msgstr "1" -#: ui.py:2905 ui~.py:2900 +#: ui.py:2887 ui~.py:2900 msgid "2" msgstr "2" -#: ui.py:2906 ui~.py:2901 +#: ui.py:2888 ui~.py:2901 msgid "3" msgstr "3" -#: ui.py:2907 ui~.py:2902 +#: ui.py:2889 ui~.py:2902 msgid "4" msgstr "4" -#: ui.py:2908 ui~.py:2903 +#: ui.py:2890 ui~.py:2903 msgid "5" msgstr "5" -#: ui.py:2909 ui~.py:2904 +#: ui.py:2891 ui~.py:2904 msgid "6" msgstr "6" -#: ui.py:2910 ui~.py:2905 +#: ui.py:2892 ui~.py:2905 msgid "7" msgstr "7" -#: ui.py:2911 ui~.py:2906 +#: ui.py:2893 ui~.py:2906 msgid "8" msgstr "8" -#: ui.py:2912 ui~.py:2907 +#: ui.py:2894 ui~.py:2907 msgid "9" msgstr "9" -#: ui.py:2931 ui~.py:2926 +#: ui.py:2913 ui~.py:2926 msgid "Select units" msgstr "Maßeinheiten" -#: ui.py:2932 ui~.py:2927 +#: ui.py:2914 ui~.py:2927 msgid "Select time format" msgstr "Uhrzeitformat" -#: ui.py:2933 ui~.py:2928 +#: ui.py:2915 ui~.py:2928 msgid "City names as labels in the Main screen" msgstr "Städtenamen als Beschriftung im Hauptmenü" -#: ui.py:2934 ui~.py:2929 +#: ui.py:2916 ui~.py:2929 msgid "Home City at start" msgstr "Heimat Stadt beim Start" -#: ui.py:2935 ui~.py:2930 +#: ui.py:2917 ui~.py:2930 msgid "Fav1 City" msgstr "Fav1 Stadt" -#: ui.py:2936 ui~.py:2931 +#: ui.py:2918 ui~.py:2931 msgid "Fav2 City" msgstr "Fav2 Stadt" -#: ui.py:2937 ui~.py:2932 +#: ui.py:2919 ui~.py:2932 msgid "Frame size in full view" msgstr "Rahmenbreite im Vollbild" -#: ui.py:2938 ui~.py:2933 +#: ui.py:2920 ui~.py:2933 msgid "Font size in slideshow" msgstr "Schriftgröße der Diashow" -#: ui.py:2939 ui~.py:2934 +#: ui.py:2921 ui~.py:2934 msgid "Scaling Mode" msgstr "Skalierung" -#: ui.py:2940 ui~.py:2935 +#: ui.py:2922 ui~.py:2935 msgid "Slide Time (seconds)" msgstr "Bild-Wechselzeit (Sekunden)" -#: ui.py:2941 ui~.py:2936 +#: ui.py:2923 ui~.py:2936 msgid "Show Infoline" msgstr "Zeige Informationszeile" -#: ui.py:2942 ui~.py:2937 +#: ui.py:2924 ui~.py:2937 msgid "Textcolor" msgstr "Textfarbe" -#: ui.py:2943 ui~.py:2938 +#: ui.py:2925 ui~.py:2938 msgid "Backgroundcolor" msgstr "Hintergrundfarbe" -#: ui.py:2944 ui~.py:2939 +#: ui.py:2926 ui~.py:2939 msgid "Slide picture in loop" msgstr "Diashow wiederholen" -#: ui.py:2945 ui~.py:2940 +#: ui.py:2927 ui~.py:2940 msgid "Display in extensions menu" msgstr "Anzeigen im Erweiterungsmenü" -#: ui.py:2946 ui~.py:2941 +#: ui.py:2928 ui~.py:2941 msgid "Debug" msgstr "Debug" diff --git a/plugin/thumb/clear.png b/plugin/thumb/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..56bb1004a968cc541ab36f0e96c7ff3bc50c3b0b GIT binary patch literal 5834 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 literal 0 HcmV?d00001 diff --git a/plugin/thumb/cloudy.png b/plugin/thumb/cloudy.png new file mode 100644 index 0000000000000000000000000000000000000000..19eb1af5cf5fd70168323b0b6511c9b98a3f1dac GIT binary patch literal 5832 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 E084~%1poj5 literal 0 HcmV?d00001 diff --git a/plugin/thumb/finnland.png b/plugin/thumb/finnland.png new file mode 100644 index 0000000000000000000000000000000000000000..f7bf2002edec084338bdef0f1252feae35c3e4b7 GIT binary patch literal 14921 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 Hu0mjfdHw^C literal 0 HcmV?d00001 diff --git a/plugin/thumb/light_rain.png b/plugin/thumb/light_rain.png new file mode 100644 index 0000000000000000000000000000000000000000..cc244c75cb394f0a0ae8b9bac1f78872f6e13745 GIT binary patch literal 5894 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 D_=Rux literal 0 HcmV?d00001 diff --git a/plugin/thumb/pressure_map.png b/plugin/thumb/pressure_map.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2274247c191fffd6333edb0046cf009429b926 GIT binary patch literal 14828 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0001% 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 ScDE-00000 literal 0 HcmV?d00001 diff --git a/plugin/thumb/rain_map.png b/plugin/thumb/rain_map.png new file mode 100644 index 0000000000000000000000000000000000000000..02440721b00a5b81bd2a5d3fe886fbeb00e61e2c GIT binary patch literal 16214 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 literal 0 HcmV?d00001 diff --git a/plugin/thumb/sunny.png b/plugin/thumb/sunny.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c25d00a511946f8cbc1c1da0dc05f242975f17 GIT binary patch literal 5692 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 - + """ elif size_w == 2560: @@ -883,7 +846,7 @@ def __init__(self, session): - + """ else: @@ -912,7 +875,7 @@ def __init__(self, session): - + """ @@ -932,13 +895,13 @@ def __init__(self, session): self["key_blue"] = StaticText('') self["key_info"] = StaticText(_("Legend")) - self["key_menu"] = StaticText(_("Maps")) + # self["key_menu"] = StaticText(_("Maps")) HelpableScreen.__init__(self) self["actions"] = HelpableActionMap( self, "ForecaActions", { "cancel": (self.exit, _("Exit - End")), - "menu": (self.Menu, _("Menu - Weather maps")), + # "menu": (self.Menu, _("Menu - Weather maps")), "showEventInfo": (self.info, _("Info - Legend")), "ok": (self.PicSetupMenu, _("OK - Config")), "left": (self.left, _("Left - Previous day")), @@ -970,7 +933,6 @@ def __init__(self, session): self.onShow.append(self.update_button) def update_button(self): - global fav1, fav2, start if config.plugins.foreca.citylabels.value: self["key_green"].setText(fav1.replace("_", " ")) self["key_yellow"].setText(fav2.replace("_", " ")) @@ -980,23 +942,30 @@ def update_button(self): self["key_yellow"].setText(_("Favorite 2")) self["key_blue"].setText(_("Home")) + self["key_red"].setText(_("Maps")) self["Titel4"].text = self.ort[self.ort.rfind("/") + 1:].replace("_", " ") def PicSetupMenu(self): self.session.openWithCallback(self.OKCallback, PicSetup) def StartPageFirst(self): + print("[Foreca] === STARTPAGEFIRST CALLED ===") if DEBUG: FAlog("StartPageFirst...") self.cacheDialog = self.session.instantiateDialog(ForecaPreviewCache) self["MainList"].callback = self.deactivateCacheDialog self.working = False - self["MainList"].show - self.cacheTimer = eTimer() + self["MainList"].show() self.cacheDialog.start() - self.onLayoutFinish.append(self.getPage) + + callInThread(self.getPage) + + def onLayoutFinished(self): + print("[Foreca] === ONLAYOUTFINISHED CALLED ===") + callInThread(self.getPage) def StartPage(self): + print("[Foreca] === GETPAGE CALLED ===") self["Titel"].text = "" self["Titel3"].text = "" self["Titel4"].text = "" @@ -1006,28 +975,83 @@ def StartPage(self): if DEBUG: FAlog("MainList show...") self["MainList"].show - self.getPage() + callInThread(self.getPage) def getPage(self, page=None): + print("[Foreca] getPage:", page) if DEBUG: FAlog("getPage...") + self.cacheDialog.start() self.working = True if not page: page = "" - url = "%s%s" % (MAIN_PAGE, page) + url = MAIN_PAGE + str(page) + if DEBUG: - FAlog("page link:", url) + FAlog("page link: " + str(url)) + print("[Foreca] getPage: " + str(url)) try: req = Request(url, headers=HEADERS) + if DEBUG: + FAlog("Request headers: " + str(HEADERS)) + resp = urlopen(req, timeout=10) - self.getForecaPage(resp.read().decode('utf-8') if PY3 else resp.read()) + html_content = resp.read().decode('utf-8') if PY3 else resp.read() + + if DEBUG: + FAlog("HTTP Status Code: " + str(resp.getcode())) + FAlog("Response length: " + str(len(html_content))) + FAlog("First 500 chars of response: " + str(html_content[:500])) + with open('/tmp/foreca_response.html', 'w') as f: + f.write(html_content) + + # THIS IS AN IMPORTANT CALL! + self.getForecaPage(html_content) + + FAlog("Searching for API patterns...") + except Exception as e: + FAlog("Error in getPage: " + str(e)) self.error(repr(e)) self.update_button() self.deactivateCacheDialog() + def getForecaPage(self, html): + """Simplified version that uses only JSON parsing""" + print("[Foreca] === FORECA PARSING START ===") + + try: + # Initialize location + foundPos = self.ort.find("/") + if foundPos != -1: + plaats = _(self.ort[0:foundPos]) + ", " + self.ort[foundPos + 1:len(self.ort)] + self.plaats = plaats.replace("_", " ") + else: + self.plaats = self.ort.replace("_", " ") + + print(f"[Foreca] Location: {self.plaats}") + print(f"[Foreca] Current tag: {self.tag}") + + # FIRST TRY: Modern JSON parsing + print("[Foreca] Attempting JSON parsing...") + datalist = self.extractModernHourlyData(html) + + if datalist: + print(f"[Foreca] SUCCESS: Got {len(datalist)} data points from JSON parsing!") + parsed_data = self.parseJSONWeatherData(datalist) + self.displayWeatherData(parsed_data, "JSON Forecast") + else: + print("[Foreca] FAILED: No data from JSON parsing") + self.displayWeatherData([], "No Data Available") + + except Exception as e: + print(f"[Foreca] ERROR in getForecaPage: {e}") + import traceback + traceback.print_exc() + self.displayWeatherData([], "Error") + def error(self, err=""): if DEBUG: FAlog("getPage Error:", err) @@ -1035,6 +1059,7 @@ def error(self, err=""): self.deactivateCacheDialog() def deactivateCacheDialog(self): + print(pluginPrintname, "deactivateCacheDialog") self.cacheDialog.stop() self.working = False @@ -1059,22 +1084,34 @@ def exit(self): def keyNumberGlobal(self, number): self.tag = number self.Zukunft(self.tag) + FAlog("Jump to day: " + str(self.tag)) def titel(self): - """ - foundPos = self.ort.find("/") - plaats = _(self.ort[0:foundPos]) + "-" + self.ort[foundPos + 1:len(self.ort)] - self.plaats = plaats.replace("_", " ") - self.setTitle(_("Foreca Weather Forecast") + ' ' + self.plaats) - """ - self.setTitle(_("Foreca Weather Forecast") + " " + _("v.") + VERSION) + print("[Foreca] titel called with tag:", self.tag) + + # Determine day text + if self.tag == 0: + day_text = _("Today") + elif self.tag == 1: + day_text = _("Tomorrow") + else: + day_text = _("Day") + " +" + str(self.tag) + + # Get date string + current_date = get_current_time() + display_date = current_date + timedelta(days=self.tag) + date_str = display_date.strftime('%d/%m/%Y') + + title = _("Foreca Weather Forecast") + " " + _("v.") + VERSION + f" - {day_text} ({date_str})" + self.setTitle(title) + print("[Foreca] Setting title:", title) def Fav0(self): global start self.ort = config.plugins.foreca.home.value start = self.ort[self.ort.rfind("/") + 1:] print(pluginPrintname, "Fav0 ort location:", self.ort) - print(pluginPrintname, "Fav0 start:", start) + self.tag = 0 self.titel() self.Zukunft(0) @@ -1083,7 +1120,7 @@ def Fav1(self): self.ort = config.plugins.foreca.fav1.value fav1 = self.ort[self.ort.rfind("/") + 1:] print(pluginPrintname, "Fav1 ort location:", self.ort) - print(pluginPrintname, "Fav1 fav1 location:", fav1) + self.tag = 0 self.titel() self.Zukunft(0) @@ -1092,53 +1129,56 @@ def Fav2(self): self.ort = config.plugins.foreca.fav2.value fav2 = self.ort[self.ort.rfind("/") + 1:] print(pluginPrintname, "Fav2 ort location:", self.ort) - print(pluginPrintname, "Fav2 fav2 location:", fav2) + self.tag = 0 self.titel() self.Zukunft(0) - def futurdata(self, ztag=0): - global MAIN_PAGE - # Get the current date and time - now = datetime.now() - # Calculate new date by adding day tags - future_date = now + timedelta(days=ztag) - morgen = future_date.strftime("%Y%m%d") - return morgen - def Zukunft(self, ztag=0): global MAIN_PAGE - morgen = self.futurdata(ztag) - MAIN_PAGE = "%s%s?lang=%s&details=%s&units=%s&tf=%s" % ( - BASEURL, - pathname2url(self.ort), - LANGUAGE, - morgen, - config.plugins.foreca.units.value, - config.plugins.foreca.time.value - ) - """ - if isinstance(MAIN_PAGE, unicode): - MAIN_PAGE = MAIN_PAGE.encode('utf-8') - """ + print("[Foreca] Zukunft called with offset:", ztag) + print("[Foreca] Current location:", self.ort) + + self.tag = ztag # Store the day offset + + # Build URL with correct day parameter + if ztag == 0: + # Today - use main page + MAIN_PAGE = "%s%s?lang=%s&units=%s&tf=%s" % ( + BASEURL, + pathname2url(self.ort), + LANGUAGE, + config.plugins.foreca.units.value, + config.plugins.foreca.time.value + ) + else: + # Future days - use hourly endpoint with day parameter + MAIN_PAGE = "%s%s/hourly?lang=%s&day=%s&units=%s&tf=%s" % ( + BASEURL, + pathname2url(self.ort), + LANGUAGE, + ztag, # This should be 1 for tomorrow, 2 for day after, etc. + config.plugins.foreca.units.value, + config.plugins.foreca.time.value + ) + if DEBUG: - FAlog("day link:", MAIN_PAGE) + print("[Foreca] Day link: " + MAIN_PAGE + ", day offset: " + str(ztag)) + print("[Foreca] New MAIN_PAGE:", MAIN_PAGE) self.StartPage() def info(self): - message = str("%s" % (_( - "Server URL: %s\n" - ) % BASEURL)) + message = str("%s" % (_("Server URL: %s\n") % BASEURL)) entries = [ (_("VERSION"), VERSION), (_("Wind direction"), _("Arrow to right: Wind from the West")), (_("Ok"), _("Go to Config Plugin")), - (_("Red"), _("Temperature chart for the upcoming 5 days")), + (_("Red"), _("Weather maps and forecasts")), (_("Green"), _("Go to Favorite 1")), (_("Yellow"), _("Go to Favorite 2")), (_("Blue"), _("Go to Home")), (_("Tv/Txt"), _("Go to City Panel")), - (_("Menu"), _("Satellite photos and maps")), + # (_("Menu"), _("Satellite photos and maps")), (_("Up/Down"), _("Previous/Next page")), (_("< >"), _("Prognosis Previous/Next day")), (_("0 - 9"), _("Prognosis (x) days from now")) @@ -1148,21 +1188,16 @@ def info(self): def OK(self): self.city = self.ort + print("[Foreca] OK:", self.city) self.session.openWithCallback(self.OKCallback, CityPanel, self.city) def OKCallback(self, callback=None): global fav1, fav2 print('OKCallback callback=,', str(callback)) - """ - fav1 = config.plugins.foreca.fav1.getValue() - fav2 = config.plugins.foreca.fav2.getValue() - start = config.plugins.foreca.home.getValue() - """ fav1 = config.plugins.foreca.fav1.getValue()[config.plugins.foreca.fav1.getValue().rfind("/") + 1:] fav2 = config.plugins.foreca.fav2.getValue()[config.plugins.foreca.fav2.getValue().rfind("/") + 1:] - # start = config.plugins.foreca.home.getValue()[config.plugins.foreca.home.getValue().rfind("/") + 1:] - self.ort = config.plugins.foreca.home.getValue() # start + self.ort = config.plugins.foreca.home.getValue() if callback is not None: self.ort = callback self.tag = 0 @@ -1176,14 +1211,16 @@ def OKCallback(self, callback=None): self.deactivateCacheDialog() def left(self): - if not self.working and self.tag >= 1: + if not self.working and self.tag > 0: # Allow only until today (tag 0) self.tag = self.tag - 1 self.Zukunft(self.tag) + FAlog("Previous day: " + str(self.tag)) def right(self): - if not self.working and self.tag < 9: + if not self.working and self.tag < 9: # Maximum 9 days in the future self.tag = self.tag + 1 self.Zukunft(self.tag) + FAlog("Next day: " + str(self.tag)) def up(self): if not self.working: @@ -1200,24 +1237,49 @@ def nextDay(self): self.right() def red(self): + """Show weather maps selection instead of meteogram""" try: - if not self.working: - self.url = "%smeteogram.php?loc_id=%s&mglang=%s&units=%s&tf=%s/meteogram.png" % (BASEURL, self.loc_id, LANGUAGE, config.plugins.foreca.units.value, config.plugins.foreca.time.value) - print('red self.url=', self.url) - self.loadPicture(self.url) + # Lista delle mappe meteo disponibili + weather_maps = [ + (_("Temperature Map"), "temp_map.png", _("Temperature forecast")), + (_("Pressure Map"), "pressure_map.png", _("Air pressure forecast")), + (_("Cloud Cover Map"), "cloud_map.png", _("Cloud cover and precipitation")), + (_("Satellite Map"), "sat_map.png", _("Satellite weather view")), + (_("Rain Radar Map"), "rain_map.png", _("Precipitation radar")), + ] + + # Filtra solo le mappe che esistono + available_maps = [] + for name, map_file, desc in weather_maps: + map_path = THUMB_PATH + map_file + if exists(map_path): + available_maps.append((name, map_file, desc)) + + if not available_maps: + self.session.open(MessageBox, _("No weather maps available"), MessageBox.TYPE_INFO) + return + + choice_list = [] + for name, map_file, desc in available_maps: + choice_list.append((f"{name} - {desc}", map_file)) + + self.session.openWithCallback( + self.weatherMapSelected, + ChoiceBox, + title=_("Select Weather Map"), + list=choice_list + ) + except Exception as e: - print('error red=', e) + print("[Foreca] Error in red button: %s" % str(e)) + self.session.open(MessageBox, _("Error loading weather maps"), MessageBox.TYPE_ERROR) def Menu(self): - self.session.openWithCallback(self.MenuCallback, SatPanel, self.ort) + # self.session.openWithCallback(self.MenuCallback, SatPanel, self.ort) + pass def MenuCallback(self): global start, fav1, fav2 - """ - fav1 = str(config.plugins.foreca.fav1.value) - fav2 = str(config.plugins.foreca.fav2.value) - start = str(config.plugins.foreca.home.value) - """ fav1 = config.plugins.foreca.fav1.getValue()[config.plugins.foreca.fav1.getValue().rfind("/") + 1:] fav2 = config.plugins.foreca.fav2.getValue()[config.plugins.foreca.fav2.getValue().rfind("/") + 1:] start = config.plugins.foreca.home.getValue()[config.plugins.foreca.home.getValue().rfind("/") + 1:] @@ -1226,192 +1288,296 @@ def MenuCallback(self): self.ort = config.plugins.foreca.home.getValue() # self.city self.update_button() - def loadPicture(self, url=""): - devicepath = CACHE_PATH + "meteogram.png" - req = Request(url, headers=HEADERS) - resp = urlopen(req, timeout=10) - with open(devicepath, 'wb') as f: - f.write(resp.read()) + def displayWeatherData(self, datalist, source): + """Display data with proper day information""" + print("[Foreca] displayWeatherData called with %d items from %s" % (len(datalist), source)) + + # Determine day text and date + if self.tag == 0: + day_text = _("Today") + elif self.tag == 1: + day_text = _("Tomorrow") + else: + day_text = _("Day") + " +" + str(self.tag) + + current_date = get_current_time() + display_date = current_date + timedelta(days=self.tag) + date_str = display_date.strftime('%d/%m/%Y') + + if not datalist: + self["Titel2"].text = _("No weather data available") + self["Titel3"].text = f"Foreca - {day_text} {date_str}" + self["Titel4"].text = self.plaats + self["Titel5"].text = "" + self.titel() + self["MainList"].SetList([]) + else: + self["Titel2"].text = "" + self["Titel3"].text = f"Foreca - {day_text} {date_str}" + self["Titel4"].text = self.plaats + self["Titel5"].text = f"{len(datalist)}h forecast" + self.titel() + print("[Foreca] Setting list with %d items for %s" % (len(datalist), day_text)) + self["MainList"].SetList(datalist) + + print("[Foreca] DISPLAYED %d ITEMS" % len(datalist)) + + def extractModernHourlyData(self, html_content, debug=False): + print("[Foreca] === extractModernHourlyData START ===") + print("[Foreca] HTML length: " + str(len(html_content))) + + # Save HTML for analysis try: - warnings.filterwarnings("ignore", "(?s).*iCCP.*", category=UserWarning) - img = Image.open(devicepath) - img.save(devicepath, icc_profile=None) - except Exception as e: - print("Errore nella rimozione del profilo ICC:", e) - self.session.open(PicViewx, devicepath, 0, False, self.plaats) + with open('/tmp/foreca_debug.html', 'w') as f: + f.write(html_content) + print("[Foreca] HTML saved to /tmp/foreca_debug.html") + except: + pass - def getForecaPage(self, html): - """ - with open("/tmp/foreca_response.html", "w", encoding="utf-8") as f: - f.write(html) - """ - fulltext = compile(r"id: '(.*?)'", DOTALL) - id = fulltext.findall(html) - if DEBUG: - FAlog("fulltext= %s id= %s" % (fulltext, id)) - self.loc_id = str(id[0]) - # - if DEBUG: - FAlog("Start:" + str(len(html))) - fulltext = compile(r'.+?
(.+?)
', DOTALL) - titel = fulltext.findall(html) - if DEBUG: - FAlog("fulltext=%s titel= %s" % (fulltext, titel)) + json_patterns = [ + r'data:\s*(\[.*?\]),\s*data3h:', + r'data:\s*(\[.*?\])', + r'window\.__DATA__\s*=\s*({.*?});', + r'var\s+forecaData\s*=\s*({.*?});', + r'"hourly":\s*(\[.*?\])', + r'"hours":\s*(\[.*?\])', + r'"temperature":\s*(\[.*?\])', + ] - titel[0] = str(sub(r'<[^>]*>', "", titel[0])) + for i, pattern in enumerate(json_patterns): + try: + print(f"[Foreca] Trying pattern {i}: {pattern[:50]}...") + matches = findall(pattern, html_content, DOTALL) + print(f"[Foreca] Pattern {i}: Found {len(matches)} matches") - if DEBUG: - FAlog("titel[0]=%s" % titel[0]) - - def translate_description_gettext(description, translation_dict): - cleaned_description = sub(r'[\t\r\n]', ' ', description).strip() - words = sub(r'([.,!?])', r' \1 ', cleaned_description).split() - translated_words = [] - for word in words: - is_capitalized = word[0].isupper() - translated_word = translation_dict.get(word.lower(), word) - if is_capitalized: - translated_word = translated_word.capitalize() - translated_words.append(translated_word) - print("translated_words=", translated_words) - return ' '.join(translated_words) - - translation_dict = self.load_translation_dict(lng) - titel[0] = translate_description_gettext(titel[0], translation_dict) - - fulltext = compile(r'(.+?)
', DOTALL) - link = str(fulltext.findall(html)) - fulltext = compile(r' - fulltext = compile(r'(.+?) - fulltime = compile(r'
(.+?)<.+?', DOTALL) - zeit = fulltime.findall(html) - if DEBUG: - FAlog("Time=%s" % str(zeit)) + print("[Foreca] === extractModernHourlyData FAILED - No patterns matched ===") + return None - #
- # +15°
- fulltime = compile(r'
.*?(.+?)&.+?', DOTALL) - temp = fulltime.findall(html) + def parseJSONWeatherData(self, weather_data): + """Parse Foreca JSON data - PROPER TIME SORTING""" + try: + print("[Foreca] === DEBUG WEATHER DATA ===") + print("[Foreca] Total data points: %d" % len(weather_data)) + if weather_data: + print("[Foreca] First 3 items:") + for i in range(min(3, len(weather_data))): + print("[Foreca] %d: %s" % (i, weather_data[i])) + print("[Foreca] Requested day offset: %d" % self.tag) + + datalist = [] + print("[Foreca] Parsing weather data for day offset=%d" % self.tag) + + translation_dict = self.load_translation_dict(LANGUAGE) + + # ⚠️ FIX: When day=1 in URL, we already get tomorrow's data + # Don't apply additional offset in parsing! + if self.tag == 0: + # Today - take first 24 hours + start_index = 0 + end_index = min(24, len(weather_data)) + else: + # Future days - the API already returns the correct day + # Just take available hours (usually 24) + start_index = 0 + end_index = len(weather_data) - if DEBUG: - FAlog("Temp=%s" % str(temp)) + filtered_data = weather_data[start_index:end_index] + print("[Foreca] Taking hours %d to %d for day %d" % (start_index, end_index, self.tag)) - #
.+? (.+?)
.+?', DOTALL) - description = fulltext.findall(html) - if DEBUG: - FAlog("description=%s" % str(description).lstrip("\r\n\t").lstrip()) + def get_sort_key(hour_data): + time_str = hour_data.get('time', '') + try: + return datetime.strptime(time_str, '%Y-%m-%dT%H:%M') + except: + return time_str - fulltext = compile(r'
.+?
(.+?)
.+?', DOTALL) - feels = fulltext.findall(html) - if DEBUG: - FAlog("feels=%s" % str(feels).lstrip("\t").lstrip()) + filtered_data_sorted = sorted(filtered_data, key=get_sort_key) + print("[Foreca] Data sorted chronologically") - fulltext = compile(r'
.+?
(.+?).+?
.+?
(.+?).+? 0 else "%d°" % temp_value - fulltext = compile(r'
.+?(.+?)<.+?', DOTALL) - windSpeed = fulltext.findall(html) - if DEBUG: - FAlog("windSpeed=%s" % str(windSpeed)) - - timeEntries = len(zeit) - x = 0 - while x < timeEntries: - feels[x] = self.konvert_uml(str(sub(r'<[^>]*>', "", feels[x]))) - precip[x] = self.konvert_uml(str(sub(r'<[^>]*>', "", precip[x]))) - humidity[x] = self.konvert_uml(str(sub(r'<[^>]*>', "", humidity[x]))) - windSpeed[x] = self.filter_dia(windSpeed[x]) - windSpeed[x] = windSpeed[x].replace('kmh', 'km/h') - - # translate_description - description[x] = self.konvert_uml(str(sub(r'<[^>]*>', "", description[x]))) - description[x] = self.translate_description(description[x], translation_dict) - # print("getForecaPage description[x]=", description[x]) - # translate_description end + # Weather condition + wx_condition = hour_data.get('wx', '') + symb = hour_data.get('symb', 'd000') - if DEBUG: - FAlog("weather: %s, %s, %s, %s, %s, %s, %s, %s" % (zeit[x], temp[x], windDirection[x], windSpeed[x], description[x], feels[x], precip[x], humidity[x])) - datalist.append([thumbnails[x], zeit[x], temp[x], windDirection[x], windSpeed[x], description[x], feels[x], precip[x], humidity[x]]) - x += 1 - - # Date management - self["Titel2"].text = "" # titel[0].strip("'") - # translation date - datum = titel[0] - foundPos = datum.rfind(" ") - foundPos2 = datum.find(" ") - day_text = datum[:foundPos2].strip() - month_text = datum[foundPos2:foundPos].strip() - translated_day = translation_dict.get(day_text.lower(), day_text) - translated_month = translation_dict.get(month_text.lower(), month_text) - translated_day = translated_day.capitalize() - translated_month = translated_month.capitalize() - datum2 = translated_month + " " + datum[foundPos + 1:] - """ - ye = datetime.now() - year = ye.year - datum2 = str(year) + " " + datum2 + " " + translated_day - """ - datum2 = datum2 + " " + translated_day - # Location Management - foundPos = self.ort.find("/") - plaats = _(self.ort[0:foundPos]) + ", " + self.ort[foundPos + 1:len(self.ort)] - self.plaats = plaats.replace("_", " ") - print('getForecaPage self.plaats=', self.plaats) - # Set 'Titel' with formatted date - self["Titel"].text = datum2 - self["Titel3"].text = '' - # Set 'Titel4' with location only - self["Titel5"].text = '' # datum2 + if wx_condition: + condition = wx_condition + else: + condition = self.symbolToCondition(symb) - self.titel() + condition = self.translate_description(condition, translation_dict) - self["MainList"].SetList(datalist) - self["MainList"].selectionEnabled(0) - self["MainList"].show + # Wind + wind_speed_kmh = hour_data.get('windskmh', hour_data.get('winds', 10)) + wind_speed = "%d km/h" % wind_speed_kmh + + wind_cardinal = hour_data.get('windCardinal', '') + if wind_cardinal: + wind_dir = "w" + wind_cardinal + else: + wind_dir_deg = hour_data.get('windd', 0) + wind_dir = self.degreesToWindDirection(wind_dir_deg) + + # Additional data + feels_temp = hour_data.get('flike', temp_value) + feels_str = _("Feels like:") + " +%d°" % feels_temp if feels_temp > 0 else _("Feels like:") + " %d°" % feels_temp + + precip_chance = hour_data.get('rainp', 0) + precip_str = _("Precipitations:") + " %d%%" % precip_chance + + humidity = hour_data.get('rhum', 50) + humidity_str = _("Humidity:") + " %d%%" % humidity + + # Create row + row = [ + symb, time_str, temp_str, wind_dir, wind_speed, + condition, feels_str, precip_str, humidity_str + ] + + datalist.append(row) + print("[Foreca] Added hour: %s - %s" % (time_str, temp_str)) + + except Exception as e: + print("[Foreca] Error parsing hour data: %s" % str(e)) + continue + + print("[Foreca] Successfully parsed %d hours for day %d" % (len(datalist), self.tag)) + return datalist + + except Exception as e: + print("[Foreca] Error in parseJSONWeatherData: %s" % str(e)) + import traceback + traceback.print_exc() + return [] + + def symbolToCondition(self, symbol): + """Convert Foreca symbol to text condition - SAFE MAPPING""" + symbol_map = { + # Clear + 'd000': 'Clear', 'n000': 'Clear', 'd001': 'Clear', 'n001': 'Clear', + + # Mostly clear + 'd100': 'Mostly clear', 'n100': 'Mostly clear', 'd101': 'Mostly clear', 'n101': 'Mostly clear', + + # Partly cloudy + 'd200': 'Partly cloudy', 'n200': 'Partly cloudy', 'd201': 'Partly cloudy', 'n201': 'Partly cloudy', + 'd202': 'Partly cloudy', 'n202': 'Partly cloudy', + + # Cloudy + 'd300': 'Cloudy', 'n300': 'Cloudy', 'd301': 'Cloudy', 'n301': 'Cloudy', + + # Overcast + 'd400': 'Overcast', 'n400': 'Overcast', 'd401': 'Overcast', 'n401': 'Overcast', + + # Fog + 'd500': 'Fog', 'n500': 'Fog', 'd501': 'Fog', 'n501': 'Fog', + + # Light rain + 'd210': 'Light rain', 'n210': 'Light rain', 'd211': 'Light rain', 'n211': 'Light rain', + 'd212': 'Light rain', 'n212': 'Light rain', 'd310': 'Light rain', 'n310': 'Light rain', + 'd311': 'Light rain', 'n311': 'Light rain', 'd312': 'Light rain', 'n312': 'Light rain', + 'd410': 'Light rain', 'n410': 'Light rain', + + # Rain + 'd220': 'Rain', 'n220': 'Rain', 'd222': 'Rain', 'n222': 'Rain', + 'd320': 'Rain', 'n320': 'Rain', 'd322': 'Rain', 'n322': 'Rain', + 'd420': 'Rain', 'n420': 'Rain', + + # Heavy rain + 'd230': 'Heavy rain', 'n230': 'Heavy rain', 'd231': 'Heavy rain', 'n231': 'Heavy rain', + 'd232': 'Heavy rain', 'n232': 'Heavy rain', 'd240': 'Heavy rain', 'n240': 'Heavy rain', + 'd330': 'Heavy rain', 'n330': 'Heavy rain', 'd331': 'Heavy rain', 'n331': 'Heavy rain', + 'd332': 'Heavy rain', 'n332': 'Heavy rain', 'd340': 'Heavy rain', 'n340': 'Heavy rain', + 'd430': 'Heavy rain', 'n430': 'Heavy rain', + + # Thunderstorm + 'd221': 'Thunderstorm', 'n221': 'Thunderstorm', 'd321': 'Thunderstorm', 'n321': 'Thunderstorm', + 'd421': 'Thunderstorm', 'n421': 'Thunderstorm', + + # Snow + 'd600': 'Snow', 'n600': 'Snow', 'd610': 'Snow', 'n610': 'Snow', + 'd620': 'Snow', 'n620': 'Snow', 'd630': 'Snow', 'n630': 'Snow', + + # Sleet + 'd700': 'Sleet', 'n700': 'Sleet', 'd710': 'Sleet', 'n710': 'Sleet', + 'd720': 'Sleet', 'n720': 'Sleet', 'd730': 'Sleet', 'n730': 'Sleet', + } + + condition = symbol_map.get(symbol, 'Unknown') + print(f"[Foreca] Symbol mapping: {symbol} -> {condition}") + return condition + + def degreesToWindDirection(self, degrees): + """Convert degrees to available wind direction icons""" + # Map to available icons: w000(N), w045(NE), w090(E), w135(SE), w180(S), w225(SW), w270(W), w315(NW) + if 337.5 <= degrees or degrees < 22.5: + return 'w000' # N + elif 22.5 <= degrees < 67.5: + return 'w045' # NE + elif 67.5 <= degrees < 112.5: + return 'w090' # E + elif 112.5 <= degrees < 157.5: + return 'w135' # SE + elif 157.5 <= degrees < 202.5: + return 'w180' # S + elif 202.5 <= degrees < 247.5: + return 'w225' # SW + elif 247.5 <= degrees < 292.5: + return 'w270' # W + elif 292.5 <= degrees < 337.5: + return 'w315' # NW + else: + return 'w000' # Default def load_translation_dict(self, lng): + print("[Foreca] load_translation_dict:", lng) dict_file = resolveFilename(SCOPE_PLUGINS) + "Extensions/Foreca/dict/%sdict.txt" % lng if not exists(dict_file): dict_file = resolveFilename(SCOPE_PLUGINS) + "Extensions/Foreca/dict/endict.txt" @@ -1425,11 +1591,19 @@ def load_translation_dict(self, lng): return translation_dict def translate_description(self, description, translation_dict): - cleaned_description = sub(r'[\t\r\n]', ' ', description).strip() - if cleaned_description.lower() in translation_dict: - return translation_dict[cleaned_description.lower()] - words = cleaned_description.split() - return ' '.join([translation_dict.get(word.lower(), word) for word in words]) + # Clean the description from tabs, carriage returns, and newlines + cleaned_description = sub(r"[\t\r\n]", " ", description).strip() + # Separate punctuation to avoid incorrect translations + words = sub(r"([.,!?])", r" \1 ", cleaned_description).split() + translated_words = [] + for word in words: + is_capitalized = word[0].isupper() if word else False + translated_word = translation_dict.get(word.lower(), word) + # Restore capitalization if needed + if is_capitalized: + translated_word = translated_word.capitalize() + translated_words.append(translated_word) + return " ".join(translated_words).replace(" .", ".").replace(" ,", ",").replace(" !", "!").replace(" ?", "?") def filter_dia(self, text): filterItem = 0 @@ -1442,10 +1616,203 @@ def konvert_uml(self, text): text = self.filter_dia(text) return text[text.rfind("\\t") + 2:len(text)] + def loadPicture(self, url=""): + """Load meteogram - either extract data or use alternative""" + print("[Foreca] === LOAD PICTURE START ===") + + try: + devicepath = CACHE_PATH + "meteogram.png" + + # Clear previous + if exists(devicepath): + remove(devicepath) + + print("[Foreca] Downloading meteogram page from: %s" % url) + + # Download HTML page + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + } + + req = Request(url, headers=headers) + resp = urlopen(req, timeout=20) + html_content = resp.read().decode('utf-8') + print("[Foreca] Downloaded HTML, length: %d bytes" % len(html_content)) + + # Try to extract meteogram data + meteogram_data = self.extractMeteogramData(html_content) + + if meteogram_data: + print("[Foreca] Meteogram data extracted, creating summary...") + # Create a simple text-based meteogram summary + self.createMeteogramSummary(meteogram_data, devicepath) + else: + # Fallback: Use local weather map + print("[Foreca] No meteogram data, using fallback") + self.useMeteogramFallback(devicepath) + + # Show the result + from twisted.internet import reactor + reactor.callFromThread(self.showMeteogram, devicepath) + + except Exception as e: + print("[Foreca] Error in loadPicture: %s" % e) + from twisted.internet import reactor + reactor.callFromThread(self.showError, _("Failed to load meteogram: %s") % str(e)) + + def extractMeteogramData(self, html_content): + """Extract meteogram data from the HTML page""" + print("[Foreca] === EXTRACT METEOGRAM DATA ===") + + try: + # Pattern per trovare i dati del meteogramma + patterns = [ + r'window\.renderMeteogram\(\s*\{[^}]*data:\s*(\[[^\]]*\])', + r'renderMeteogram\(\s*\{[^}]*data:\s*(\[[^\]]*\])', + r'data:\s*(\[.*?\])\s*,\s*[}]\)' + ] + + for i, pattern in enumerate(patterns): + matches = findall(pattern, html_content, DOTALL) + if matches: + print("[Foreca] Found meteogram data with pattern %d" % i) + json_data = matches[0] + print("[Foreca] Meteogram data length: %d" % len(json_data)) + print("[Foreca] Sample data: %s..." % json_data[:200]) + + try: + data = loads(json_data) + print("[Foreca] Meteogram JSON parsed successfully: %d points" % len(data)) + return data + except Exception as e: + print("[Foreca] Error parsing meteogram JSON: %s" % e) + continue + + print("[Foreca] No meteogram data found in HTML") + return None + + except Exception as e: + print("[Foreca] Error extracting meteogram data: %s" % e) + return None + + def createMeteogramSummary(self, data, output_path): + """Create a simple text-based meteogram summary""" + try: + print("[Foreca] Creating meteogram summary from %d data points" % len(data)) + + # Extract key information + summary_lines = [] + summary_lines.append("=== FORECA 5-DAY FORECAST ===") + summary_lines.append("Time Temp Precip Condition") + summary_lines.append("-" * 40) + + for hour_data in data[:24]: # Show first 24 hours + time_str = hour_data.get('time', '')[-8:-3] # Extract HH:MM + temp = hour_data.get('temp', 0) + precip = hour_data.get('rain', 0) + condition = hour_data.get('wx', 'Unknown') + + summary_lines.append(f"{time_str} {temp:2}°C {precip:3}mm {condition}") + + summary_text = "\n".join(summary_lines) + + # Save as text file (or could create a simple image) + with open(output_path.replace('.png', '.txt'), 'w') as f: + f.write(summary_text) + + print("[Foreca] Meteogram summary created") + + # For now, use a local image since we can't easily create PNG + self.useMeteogramFallback(output_path) + + except Exception as e: + print("[Foreca] Error creating meteogram summary: %s" % e) + self.useMeteogramFallback(output_path) + + def useMeteogramFallback(self, output_path): + """Use a local weather map as fallback""" + try: + # Copy a local weather map image + local_images = [ + THUMB_PATH + "temp_map.png", + THUMB_PATH + "pressure_map.png", + THUMB_PATH + "cloud_map.png", + THUMB_PATH + "sat_map.png" + ] + + for local_img in local_images: + if exists(local_img): + import shutil + shutil.copy2(local_img, output_path) + print("[Foreca] Using fallback image: %s" % local_img) + return + + # Create a simple colored image as last resort + self.createSimpleMeteogramImage(output_path) + + except Exception as e: + print("[Foreca] Error with fallback: %s" % e) + + def createSimpleMeteogramImage(self, output_path): + """Create a simple colored rectangle as meteogram placeholder""" + try: + from PIL import Image, ImageDraw + + # Create a simple image with text + img = Image.new('RGB', (800, 400), color=(0, 0, 0)) + d = ImageDraw.Draw(img) + + # Add some text + d.text((50, 50), "FORECA METEOGRAM", fill=(255, 255, 255)) + d.text((50, 100), "5-Day Weather Forecast", fill=(255, 255, 255)) + d.text((50, 150), "Data available but cannot display", fill=(255, 200, 200)) + d.text((50, 200), "graphical meteogram", fill=(255, 200, 200)) + + img.save(output_path, 'PNG') + print("[Foreca] Created simple meteogram placeholder") -# ------------------------------------------------------------------------------------------ -# ------------------------------ City Panel ------------------------------------------------ -# ------------------------------------------------------------------------------------------ + except Exception as e: + print("[Foreca] Cannot create image: %s" % e) + # Create empty file as last resort + open(output_path, 'wb').close() + + def weatherMapSelected(self, result): + """Handle weather map selection""" + if result: + map_file = result[1] + map_path = THUMB_PATH + map_file + + if exists(map_path): + # Determina titolo in base alla mappa + title_map = { + "temp_map.png": _("Temperature Forecast"), + "pressure_map.png": _("Pressure Forecast"), + "cloud_map.png": _("Cloud Cover Forecast"), + "sat_map.png": _("Satellite View"), + "rain_map.png": _("Rain Radar"), + } + + title = title_map.get(map_file, _("Weather Map")) + full_title = f"{self.plaats} - {title}" + + print("[Foreca] Opening weather map: %s" % map_file) + self.session.open(PicView, map_path, 0, False, full_title) + else: + self.session.open(MessageBox, _("Selected map not found"), MessageBox.TYPE_ERROR) + + def showMeteogram(self, devicepath): + """Show meteogram in main thread""" + print("[Foreca] showMeteogram called with: %s" % devicepath) + if exists(devicepath) and getsize(devicepath) > 0: + self.session.open(PicView, devicepath, 0, False, str(self.plaats) + " - 5 Day Forecast") + else: + self.session.open(MessageBox, _("Meteogram file not found"), MessageBox.TYPE_ERROR) + + def showError(self, message): + """Show error in main thread""" + print("[Foreca] showError: %s" % message) + self.session.open(MessageBox, message, MessageBox.TYPE_ERROR) class CityPanelList(MenuList): @@ -1624,12 +1991,11 @@ def info(self): (_("Yellow"), _("Go to Favorite 2")), (_("Blue"), _("Go to Home")), (_("Tv/Txt"), _("Go to City Panel")), - (_("Menu"), _("Satellite photos and maps")), + # (_("Menu"), _("Satellite photos and maps")), (_("Up/Down"), _("Previous/Next page")), (_("< >"), _("Prognosis Previous/Next day")), (_("0 - 9"), _("Prognosis (x) days from now")) ] - message += format_message(entries) self.session.open(MessageBox, message, MessageBox.TYPE_INFO) @@ -1639,16 +2005,16 @@ def openKeyboard(self): self.filter, VirtualKeyBoard, title=_("Search your City"), - text='Rome') + text='') def filter(self, result): if result: try: self.filtered_list = [] - search = result.lower() + search_term = result.lower() for item in self.Mlist: city_name = item[0][0] - if search in city_name.lower(): + if search_term in city_name.lower(): self.search_ok = True self.filtered_list.append(item) if len(self.filtered_list) < 1: @@ -1726,7 +2092,6 @@ def deactivateCacheDialog(self): def exit(self): if self.search_ok is True: self.search_ok = False - # self.city[self.city.rfind("/") + 1:] self.close(self.city) def ok(self): @@ -1742,7 +2107,7 @@ def blue(self): self.city = sub(r" ", "_", self['Mlist'].l.getCurrentSelection()[0][1]) if DEBUG: FAlog("Home:", self.city) - config.plugins.foreca.home.setValue(self.city) # ✅ FIX + config.plugins.foreca.home.setValue(self.city) config.plugins.foreca.home.save() configfile.save() start = self.city[self.city.rfind("/") + 1:] @@ -1754,10 +2119,9 @@ def green(self): self.city = sub(r" ", "_", self['Mlist'].l.getCurrentSelection()[0][1]) if DEBUG: FAlog("Fav1:", self.city) - config.plugins.foreca.fav1.setValue = (self.city) + config.plugins.foreca.fav1.setValue(self.city) config.plugins.foreca.fav1.save() configfile.save() - # fav1 = self.city[self.city.rfind("/") + 1:len(self.city)] # ✅ FIX fav1 = self.city[self.city.rfind("/") + 1:] message = "%s %s" % (_("This city is stored as favorite 1!\n\n "), self.city) self.session.open(MessageBox, message, MessageBox.TYPE_INFO, timeout=8) @@ -1767,10 +2131,9 @@ def yellow(self): self.city = sub(r" ", "_", self['Mlist'].l.getCurrentSelection()[0][1]) if DEBUG: FAlog("Fav2:", self.city) - config.plugins.foreca.fav2.setValue = (self.city) # ✅ FIX + config.plugins.foreca.fav2.setValue(self.city) config.plugins.foreca.fav2.save() configfile.save() - # fav2 = self.city[self.city.rfind("/") + 1:len(self.city)] fav2 = self.city[self.city.rfind("/") + 1:] message = "%s %s" % (_("This city is stored as favorite 2!\n\n "), self.city) self.session.open(MessageBox, message, MessageBox.TYPE_INFO, timeout=8) @@ -1786,728 +2149,43 @@ def CityEntryItem(self, entry): res.append(MultiContentEntryText(pos=(col, 0), size=(1000, itemHeight), font=0, text=entry[0], color=weiss, color_sel=mblau, backcolor_sel=grau, flags=RT_VALIGN_CENTER)) return res -# ------------------------------------------------------------------------------------------ -# ------------------------------ Satellite photos ------------------------------------------ -# ------------------------------------------------------------------------------------------ - - -class SatPanelList(MenuList): - - if HD: - ItemSkin = 143 - else: - ItemSkin = 123 - - def __init__(self, list, font0=28, font1=16, itemHeight=ItemSkin, enableWrapAround=True): - MenuList.__init__(self, [], False, eListboxPythonMultiContent) - GUIComponent.__init__(self) - self.font0 = gFont("Regular", font0) - self.font1 = gFont("Regular", font1) - self.itemHeight = itemHeight - self.pictScale = 0 - self.foregroundColorSelected = 8900346 - self.foregroundColor = 0xffffff - self.backgroundColorSelected = 0x565656 - self.textPos = 230, 45, 380, 50 - -# ---------------------- get skin attribs ---------------------------- - def applySkin(self, desktop, parent): - - def warningWrongSkinParameter(string, wanted, given): - print("[SatPanelList] wrong '%s' skin parameters. Must be %d arguments (%d given)" % (string, wanted, given)) - def font(value): - self.font0 = parseFont(value, ((1, 1), (1, 1))) +class PicView(Screen): - def font1(value): - self.font1 = parseFont(value, ((1, 1), (1, 1))) + def __init__(self, session, filelist, index, startslide, plaats=None): + self.session = session + self.bgcolor = config.plugins.foreca.bgcolor.value + space = config.plugins.foreca.framesize.value + space = space + 5 + self.skin = " \ + \ + \ + \ + " - def itemHeight(value): - self.itemHeight = int(value) - - def setPictScale(value): - self.pictScale = int(value) - - def foregroundColor(value): - self.foregroundColor = parseColor(value).argb() - - def foregroundColorSelected(value): - self.foregroundColorSelected = parseColor(value).argb() - - def backgroundColorSelected(value): - self.backgroundColorSelected = parseColor(value).argb() - - def textPos(value): - self.textPos = list(map(int, value.split(","))) - lx = len(self.textPos) - if lx != 4: - warningWrongSkinParameter(attrib, 4, lx) - - for (attrib, value) in list(self.skinAttributes): - try: - locals().get(attrib)(value) - self.skinAttributes.remove((attrib, value)) - except Exception: - pass - - self.l.setFont(0, self.font0) - self.l.setFont(1, self.font1) - self.l.setItemHeight(self.itemHeight) - return GUIComponent.applySkin(self, desktop, parent) - - -class SatPanel(Screen, HelpableScreen): - - def __init__(self, session, ort): - self.session = session - - if size_w == 1920: - self.skin = """ - - - - - - - - - - - - - - - - - - - """ - elif size_w == 2560: - self.skin = """ - - - - - - - - - - - - - - - - - - - """ - else: - self.skin = """ - - - - - - - - - - - - - - - - - - - """ - - Screen.__init__(self, session) - self.setup_title = _("Satellite photos") - self["Mlist"] = SatPanelList([]) - self.ort = ort - self.loc_id = '' - self["key_red"] = StaticText(_("Continents")) - self["key_green"] = StaticText(_("Europe")) - self["key_yellow"] = StaticText(_("Germany")) - self["key_blue"] = StaticText(_("Settings")) - self.setTitle(_("Satellite photos")) - HelpableScreen.__init__(self) - self["actions"] = HelpableActionMap( - self, "ForecaActions", - { - "cancel": (self.exit, _("Exit - End")), - "left": (self.left, _("Left - Previous page")), - "right": (self.right, _("Right - Next page")), - "up": (self.up, _("Up - Previous")), - "down": (self.down, _("Down - Next")), - "showEventInfo": (self.info, _("Info - Legend")), - "info": (self.info, _("Info - Legend")), - "red": (self.MapsContinents, _("Red - Continents")), - "green": (self.MapsEurope, _("Green - Europe")), - "yellow": (self.MapsGermany, _("Yellow - Germany")), - "blue": (self.PicSetupMenu, _("Blue - Settings")), - "ok": (self.ok, _("OK - Show")), - }, - -2 - ) - self.onShown.append(self.prepare) - - def info(self): - message = str("%s" % (_( - "Server URL: %s\n" - ) % BASEURL)) - entries = [ - ("VERSION", "%s" % VERSION), # Non serve la traduzione - (_("Ok"), _("Show map")), - (_("Red"), _("Continents")), - (_("Green"), _("Europe")), - (_("Yellow"), _("Germany")), - (_("Blue"), _("Settings")), - (_("Txt/Red"), _("Open Keyboard")), - (_("Up/Down"), _("Previous/Next")), - (_("< >"), _("Previous/Next page")), - (_("Info"), _("This information")) - ] - message += format_message(entries) - self.session.open(MessageBox, message, MessageBox.TYPE_INFO) - - def prepare(self): - self.Mlist = [] - self.Mlist.append(self.SatEntryItem((_("Air pressure"), 'pressure'))) - self.Mlist.append(self.SatEntryItem((_("Cloudcover Video"), 'cloud'))) - self.Mlist.append(self.SatEntryItem((_("Showerradar Video"), 'rain'))) - self.Mlist.append(self.SatEntryItem((_("Temperature Video"), 'temp'))) - self.Mlist.append(self.SatEntryItem((_("Weather map Video"), 'sat'))) - self.Mlist.append(self.SatEntryItem((_("Eumetsat"), 'eumetsat'))) - - self["Mlist"].l.setList(self.Mlist) - self["Mlist"].selectionEnabled(1) - - def up(self): - self["Mlist"].up() - self["Mlist"].selectionEnabled(1) - - def down(self): - self["Mlist"].down() - self["Mlist"].selectionEnabled(1) - - def left(self): - self["Mlist"].pageUp() - - def right(self): - self["Mlist"].pageDown() - - def exit(self): - self.close() - - def deactivateCacheDialog(self): - self.cacheDialog.stop() - self.working = False - - def ok(self): - menu = self['Mlist'].l.getCurrentSelection()[0][1] - if DEBUG: - FAlog("SatPanel menu= %s" % menu, "CurrentSelection= %s" % self['Mlist'].l.getCurrentSelection()) - - self.cacheDialog = self.session.instantiateDialog(ForecaPreviewCache) - self.cacheDialog.start() - self.SatBild() - - def MapsGermany(self): - itemList = [ - (_("Baden-Wuerttemberg"), 'badenwuerttemberg'), - (_("Bavaria"), 'bayern'), - (_("Berlin"), 'berlin'), - (_("Brandenburg"), 'brandenburg'), - (_("Bremen"), 'bremen'), - (_("Hamburg"), 'hamburg'), - (_("Hesse"), 'hessen'), - (_("Lower Saxony"), 'niedersachsen'), - (_("Mecklenburg-Vorpommern"), 'mecklenburgvorpommern'), - (_("North Rhine-Westphalia"), 'nordrheinwestfalen'), - (_("Rhineland-Palatine"), 'rheinlandpfalz'), - (_("Saarland"), 'saarland'), - (_("Saxony"), 'sachsen'), - (_("Saxony-Anhalt"), 'sachsenanhalt'), - (_("Schleswig-Holstein"), 'schleswigholstein'), - (_("Thuringia"), 'thueringen'), - ] - itemList.sort(key=lambda i: strxfrm(i[0])) - self.Mlist = [] - for item in itemList: - self.Mlist.append(self.SatEntryItem(item)) - self.session.open(SatPanelb, self.ort, _("Germany"), self.Mlist) - - def MapsEurope(self): - itemList = [ - (_("Austria"), 'oesterreich'), - (_("Belgium"), 'belgien'), - (_("Czech Republic"), 'tschechien'), - (_("Denmark"), 'daenemark'), - (_("France"), 'frankreich'), - (_("Germany"), 'deutschland'), - (_("Greece"), 'griechenland'), - (_("Great Britain"), 'grossbritannien'), - (_("Hungary"), 'ungarn'), - (_("Ireland"), 'irland'), - (_("Italy"), 'italien'), - (_("Latvia"), 'lettland'), - (_("Luxembourg"), 'luxemburg'), - (_("Netherlands"), 'niederlande'), - (_("Poland"), 'polen'), - (_("Portugal"), 'portugal'), - (_("Russia"), 'russland'), - (_("Slovakia"), 'slowakei'), - (_("Spain"), 'spanien'), - (_("Switzerland"), 'schweiz'), - ] - itemList.sort(key=lambda i: strxfrm(i[0])) - self.Mlist = [] - for item in itemList: - self.Mlist.append(self.SatEntryItem(item)) - self.session.open(SatPanelb, self.ort, _("Europe"), self.Mlist) - - def MapsContinents(self): - self.Mlist = [] - self.Mlist.append(self.SatEntryItem((_("Europe"), 'europa'))) - self.Mlist.append(self.SatEntryItem((_("Middle East"), 'naherosten'))) - self.Mlist.append(self.SatEntryItem((_("North Africa"), 'afrika_nord'))) - self.Mlist.append(self.SatEntryItem((_("South Africa"), 'afrika_sued'))) - self.Mlist.append(self.SatEntryItem((_("North America"), 'nordamerika'))) - self.Mlist.append(self.SatEntryItem((_("Middle America"), 'mittelamerika'))) - self.Mlist.append(self.SatEntryItem((_("South America"), 'suedamerika'))) - self.Mlist.append(self.SatEntryItem((_("East Asia"), 'ostasien'))) - self.Mlist.append(self.SatEntryItem((_("Middle Asia"), 'zentralasien'))) - self.Mlist.append(self.SatEntryItem((_("Southeast Asia"), 'suedostasien'))) - self.Mlist.append(self.SatEntryItem((_("Australia"), 'australienundozeanien'))) - self.session.open(SatPanelb, self.ort, _("Continents"), self.Mlist) - -# ------------------------------------------------------------------------------------------ - - def SatEntryItem(self, entry): - pict_scale = self["Mlist"].pictScale - ItemSkin = self["Mlist"].itemHeight - mblau = self["Mlist"].foregroundColorSelected - weiss = self["Mlist"].foregroundColor - grau = self["Mlist"].backgroundColorSelected - - res = [entry] - if DEBUG: - FAlog("entry=", entry) - - thumb = LoadPixmap(THUMB_PATH + entry[1] + ".png") - thumb_width = 200 - if pict_scale: - thumb_width = thumb.size().width() - - res.append(MultiContentEntryPixmapAlphaTest(pos=(2, 2), size=(thumb_width, ItemSkin - 4), png=thumb)) - x, y, w, h = self["Mlist"].textPos - res.append(MultiContentEntryText(pos=(x, y), size=(w, h), font=0, text=entry[0], color=weiss, color_sel=mblau, backcolor_sel=grau, flags=RT_VALIGN_CENTER)) - return res - -# ------------------------------------------------------------------------------------------ - - def PicSetupMenu(self): - self.session.openWithCallback(self.OKCallback, PicSetup) - - def OKCallback(self, callback=None): - global fav1, fav2, start - fav1 = str(config.plugins.foreca.fav1.getValue()) - fav2 = str(config.plugins.foreca.fav2.getValue()) - start = str(config.plugins.foreca.home.getValue()) - city = start - self.ort = city - self.exit() - - def fetch_url(self, x): - menu = self['Mlist'].l.getCurrentSelection()[0][1] - if not x.startswith("http"): - x = "https:" + x - url = x - if '[TYPE]' in url: - url = url.replace('[TYPE]', menu) - - global foundz - foundz = 'jpg' - foundPos = url.find("0000.jpg") - if DEBUG: - FAlog("x= {}".format(x), "url= {}, foundPos= {}".format(url, foundPos)) - if foundPos == -1: - foundPos = url.find(".jpg") - if foundPos == -1: - foundPos = url.find(".png") - foundz = 'png' - file = url[foundPos - 10:foundPos] - file2 = file[0:4] + "-" + file[4:6] + "-" + file[6:8] + " - " + file[8:10] + " " + _("h") - file2 = file2.replace(" ", "") - if DEBUG: - FAlog("file= %s file2= %s" % (file, file2)) - req = Request(url, headers=HEADERS) - resp = urlopen(req, timeout=10) - with open("%s%s.%s" % (CACHE_PATH, file2, foundz), 'wb') as f: - f.write(resp.read()) - - def doContext(self): - text = _("Select action") - base_url = "https://www.sat24.com" - - try: - response = requests.get(base_url + "/en-gb/continent/eu", headers=HEADERS, timeout=10) - response.raise_for_status() - html = response.text if PY3 else response.content - except requests.RequestException as e: - print("Error while page download: %s" % str(e)) - return - pattern = r'
  • \s*\s*(.*?)\s*' - matches = findall(pattern, html) - seen_links = set() - menu = [] - - for href, title in matches: - if 'satellite' in title.lower(): - link = base_url + href - if link not in seen_links: - menu.append((title.strip(), link)) - seen_links.add(link) - - def returnToChoiceBox(result=None): - self.session.openWithCallback(boxAction, ChoiceBox, title=text, list=menu) - - def boxAction(choice): - if choice: - title, url = choice - devicepath = join(CACHE_PATH, "meteogram.png") - try: - req = Request(url, headers=HEADERS) - resp = urlopen(req, timeout=10) - content = resp.read().decode('utf-8') if PY3 else resp.read() - pattern = r'
    .*?' - matches = findall(pattern, content, DOTALL) - if matches: - chosen_link = matches[0] - if not chosen_link.startswith("http"): - chosen_link = base_url + chosen_link - try: - img_response = requests.get(chosen_link, headers=HEADERS, timeout=10) - img = Image.open(BytesIO(img_response.content)) - img = img.convert("RGB") # Rimuove ICC - img.save(devicepath, "PNG") - if DEBUG: - FAlog("Image dimensions: {}x{}".format(img.width, img.height)) - self.session.openWithCallback(returnToChoiceBox, PicViewx, devicepath, 0, False, None) - except requests.RequestException as e: - if DEBUG: - FAlog("Error downloading image: %s" % str(e)) - returnToChoiceBox() - else: - if DEBUG: - FAlog("Image not found on the page.") - returnToChoiceBox() - except Exception as e: - if DEBUG: - FAlog("Error processing page: %s" % str(e)) - returnToChoiceBox() - - if len(menu) > 0: - self.session.openWithCallback(boxAction, ChoiceBox, title=text, list=menu) - - def SatBild(self): - try: - current_selection = self['Mlist'].l.getCurrentSelection() - if not current_selection or not current_selection[0] or len(current_selection[0]) < 2: - if DEBUG: - FAlog("SatBild Error: Invalid selection in CurrentSelection", str(current_selection)) - return - menu = current_selection[0][1] - if DEBUG: - FAlog("SatBild menu= %s" % menu, "CurrentSelection= %s" % current_selection) - self.deactivateCacheDialog() - if menu == "eumetsat": - self.doContext() - else: - try: - url = "%s%s?map=%s" % (BASEURL, pathname2url(self.ort), menu) - if DEBUG: - FAlog("VIDEO URL map = %s" % url) - req = Request(url, headers=HEADERS) - resp = urlopen(req, timeout=10) - content = (resp.read().decode('utf-8') if PY3 else resp.read()) - start_pattern = r"var urltemplate" - end_pattern = r"var timehdrs" - section_pattern = compile(r"%s(.*?)%s" % (start_pattern, end_pattern), DOTALL) - section_match = section_pattern.search(content) - - if section_match: - section_content = section_match.group(1) - fulltext = compile(r'(\/\/cache.*?\.(jpg|png))', DOTALL) - urls = fulltext.findall(section_content) - for url, ext in urls: - full_url = 'https:' + url - if DEBUG: - FAlog("Valid URL:", full_url) - self.fetch_url(full_url) - self.session.open(View_Slideshow, 0, True) - else: - if DEBUG: - FAlog("SatBild Warning: No image URLs found in page content.") - self.session.open(MessageBox, _("No satellite images found."), MessageBox.TYPE_INFO) - return - except Exception as e: - self.session.open(MessageBox, _("Failed to process satellite data: %s" % str(e)), MessageBox.TYPE_ERROR) - except Exception as e: - if DEBUG: - FAlog("SatBild Critical Error", str(e)) - self.session.open(MessageBox, _("A critical error occurred: %s" % str(e)), MessageBox.TYPE_ERROR) - - -# ------------------------------------------------------------------------------------------ -# ------------------------------ Weather Maps ---------------------------------------------- -# ------------------------------------------------------------------------------------------ - - -class SatPanelListb(MenuList): - - if HD: - ItemSkin = 143 - else: - ItemSkin = 123 - - def __init__(self, list, font0=24, font1=16, itemHeight=ItemSkin, enableWrapAround=True): - MenuList.__init__(self, [], False, eListboxPythonMultiContent) - self.font0 = gFont("Regular", font0) - self.font1 = gFont("Regular", font1) - self.itemHeight = itemHeight - -# ---------------------- get skin attribs ---------------------------- - def applySkin(self, desktop, parent): - def font(value): - self.font0 = parseFont(value, ((1, 1), (1, 1))) - - def font1(value): - self.font1 = parseFont(value, ((1, 1), (1, 1))) - - def itemHeight(value): - self.itemHeight = int(value) - - for (attrib, value) in list(self.skinAttributes): - try: - locals().get(attrib)(value) - self.skinAttributes.remove((attrib, value)) - except Exception: - pass - - self.l.setFont(0, self.font0) - self.l.setFont(1, self.font1) - self.l.setItemHeight(self.itemHeight) - return GUIComponent.applySkin(self, desktop, parent) - - -class SatPanelb(Screen, HelpableScreen): - - def __init__(self, session, ort, title, mlist): - self.session = session - self.ort = ort - - if size_w == 1920: - self.skin = """ - - - - - - - - - - - """ - elif size_w == 2560: - self.skin = """ - - - - - - - - - - - """ - else: - self.skin = """ - - - - - - - - - - - """ - - Screen.__init__(self, session) - self.setup_title = title - self.Mlist = mlist - if DEBUG: - FAlog("Mlist= %s" % self.Mlist, "\nSatPanelListb([])= %s" % SatPanelListb([])) - self["Mlist"] = SatPanelListb([]) - self["Mlist"].l.setList(self.Mlist) - self["Mlist"].selectionEnabled(1) - self["key_blue"] = StaticText(_("Settings")) - HelpableScreen.__init__(self) - self["actions"] = HelpableActionMap( - self, "ForecaActions", - { - "cancel": (self.Exit, _("Exit - End")), - "left": (self.left, _("Left - Previous page")), - "right": (self.right, _("Right - Next page")), - "up": (self.up, _("Up - Previous")), - "down": (self.down, _("Down - Next")), - "showEventInfo": (self.info, _("Info - Legend")), - "info": (self.info, _("Info - Legend")), - "blue": (self.PicSetupMenu, _("Blue - Settings")), - "ok": (self.ok, _("OK - Show")), - }, - -2, - ) - self.setTitle(title) - - def info(self): - message = str("%s" % (_( - "Server URL: %s\n" - ) % BASEURL)) - entries = [ - ("VERSION", "%s" % VERSION), # No translation needed - (_("Ok"), _("Show map")), - (_("Blue"), _("Settings")), - (_("Txt/Red"), _("Open Keyboard")), - (_("Up/Down"), _("Previous/Next")), - (_("< >"), _("Previous/Next page")), - (_("Info"), _("This information")) - ] - message += format_message(entries) - self.session.open(MessageBox, message, MessageBox.TYPE_INFO) - - def up(self): - self["Mlist"].up() - self["Mlist"].selectionEnabled(1) - - def down(self): - self["Mlist"].down() - self["Mlist"].selectionEnabled(1) - - def left(self): - self["Mlist"].pageUp() - - def right(self): - self["Mlist"].pageDown() - - def Exit(self): - self.close() - - def ok(self): - menu = self['Mlist'].l.getCurrentSelection()[0][1] - if DEBUG: - FAlog("SatPanelb menu= %s" % menu, "CurrentSelection= %s" % self['Mlist'].l.getCurrentSelection()) - self.SatBild() - - def PicSetupMenu(self): - self.session.openWithCallback(self.OKCallback, PicSetup) - - def OKCallback(self, callback=None): - global fav1, fav2, start - # self.ort = city - # fav1 = str(config.plugins.foreca.fav1.getValue()) - # fav2 = str(config.plugins.foreca.fav2.getValue()) - # start = str(config.plugins.foreca.home.getValue()) - fav1 = config.plugins.foreca.fav1.getValue()[config.plugins.foreca.fav1.getValue().rfind("/") + 1:] - fav2 = config.plugins.foreca.fav2.getValue()[config.plugins.foreca.fav2.getValue().rfind("/") + 1:] - start = config.plugins.foreca.home.getValue()[config.plugins.foreca.home.getValue().rfind("/") + 1:] - self.ort = config.plugins.foreca.home.getValue() - self.Exit() - - def SatBild(self): - try: - current_selection = self['Mlist'].l.getCurrentSelection() - if not current_selection or not current_selection[0] or len(current_selection[0]) < 2: - if DEBUG: - FAlog("SatBild Error: Invalid selection in CurrentSelection", str(current_selection)) - self.session.open(MessageBox, _("Invalid selection. Please select a valid region."), MessageBox.TYPE_ERROR) - return - - region = current_selection[0][1] - if DEBUG: - FAlog("SatBild: Selected region = %s" % region) - devicepath = CACHE_PATH + "meteogram.png" - url = "http://img.wetterkontor.de/karten/" + region + "0.jpg" - if DEBUG: - FAlog("SatBild: Downloading image from URL = %s" % url) - - try: - download_image(url, devicepath) - remove_icc_profile(devicepath) - self.session.open(PicViewx, devicepath, 0, False, None) - except Exception as e: - if DEBUG: - FAlog("SatBild Error: Failed to download or save the image", str(e)) - self.session.open(MessageBox, _("Failed to load the satellite image: %s" % str(e)), MessageBox.TYPE_ERROR) - - except Exception as e: - if DEBUG: - FAlog("SatBild Critical Error", str(e)) - self.session.open(MessageBox, _("A critical error occurred: %s" % str(e)), MessageBox.TYPE_ERROR) - - -# ------------------------------------------------------------------------------------------ -# -------------------------- Picture viewer for large pictures ----------------------------- -# ------------------------------------------------------------------------------------------ - - -class PicViewx(Screen): - - def __init__(self, session, filelist, index, startslide, plaats=None): - self.session = session - self.bgcolor = config.plugins.foreca.bgcolor.value - space = config.plugins.foreca.framesize.value - space = space + 5 - - self.skin = " \ - \ - \ - \ - " - - Screen.__init__(self, session) - self["actions"] = HelpableActionMap( - self, "ForecaActions", - { - "cancel": (self.Exit, _("Exit - End")), - "stop": (self.Exit, _("Exit - End")), - }, - -1 - ) - self["pic"] = Pixmap() - self["city"] = Label(plaats) - self.filelist = filelist - self.old_index = 0 - self.lastindex = index - self.currPic = [] - self.setTitle(plaats) - self.shownow = True - self.dirlistcount = 0 - self.index = 0 - self.picload = ePicLoad() - self.picload.PictureData.get().append(self.finish_decode) - self.onLayoutFinish.append(self.setPicloadConf) - - self.startslide = startslide + Screen.__init__(self, session) + self["actions"] = HelpableActionMap( + self, "ForecaActions", + { + "cancel": (self.Exit, _("Exit - End")), + "stop": (self.Exit, _("Exit - End")), + }, + -1 + ) + self["pic"] = Pixmap() + self["city"] = Label(plaats) + self.filelist = filelist + self.startslide = startslide + self.old_index = 0 + self.lastindex = index + self.currPic = [] + self.setTitle(plaats) + self.shownow = True + self.dirlistcount = 0 + self.index = 0 + self.picload = ePicLoad() + self.picload.PictureData.get().append(self.finish_decode) + self.onLayoutFinish.append(self.setPicloadConf) def setPicloadConf(self): sc = getScale() @@ -2531,7 +2209,6 @@ def ShowPicture(self): if self.shownow and len(self.currPic): self.shownow = False if self.currPic[0]: - # remove_icc_profile(self.currPic[0]) print("[ShowPicture] Imposto l'immagine:", self.currPic[0]) self["pic"].instance.setPixmap(self.currPic[0].__deref__()) else: @@ -2576,236 +2253,6 @@ def Exit(self): self.clear_images() self.close(self.lastindex + self.dirlistcount) -# ------------------------------------------------------------------------------------------ -# ------------------------------ Slide Show ------------------------------------------------ -# ------------------------------------------------------------------------------------------ - - -class View_Slideshow(Screen): - - def __init__(self, session, pindex=0, startslide=False): - - if DEBUG: - FAlog("SlideShow is running...") - self.textcolor = config.plugins.foreca.textcolor.value - self.bgcolor = config.plugins.foreca.bgcolor.value - space = config.plugins.foreca.framesize.value - fontsize = config.plugins.foreca.fontsize.value - - self.skin = " \ - \ - \ - \ - \ - \ - " - Screen.__init__(self, session) - self["actions"] = HelpableActionMap( - self, "ForecaActions", - { - "cancel": (self.Exit, _("Exit - End")), - "red": (self.Exit, _("Exit - End")), - "stop": (self.Exit, _("Exit - End")), - "pause": (self.PlayPause, _("Pause")), - "playpause": (self.PlayPause, _("Play/Pause")), - "previous": (self.prevPic, _("Left - Previous")), - "next": (self.nextPic, _("Right - Next")), - "showEventInfo": (self.info, _("Info - Legend")), - "info": (self.info, _("Info - Legend")), - }, - -1, - ) - self["point"] = Pixmap() - self["pic"] = Pixmap() - self["play_icon"] = Pixmap() - self["file"] = Label(_("Please wait, photo is being loaded ...")) - self.old_index = 0 - self.picfilelist = [] - self.lastindex = pindex - self.currPic = [] - self.shownow = True - self.dirlistcount = 0 - - self.filelist = FileList(CACHE_PATH, showDirectories=False, matchingPattern=r"^.*\.(jpg|png)$", useServiceRef=False) - for x in self.filelist.getFileList(): - if x[0][0]: - if x[0][1] is False: - self.picfilelist.append(x[0][0] if PY3 else CACHE_PATH + x[0][0]) - else: - self.dirlistcount += 1 - - self.maxentry = len(self.picfilelist) - 1 - self.pindex = pindex - self.dirlistcount - if self.pindex < 0: - self.pindex = 0 - - self.picload = ePicLoad() - self.picload.PictureData.get().append(self.finish_decode) - self.slideTimer = eTimer() - self.slideTimer.callback.append(self.slidePic) - - if self.maxentry >= 0: - self.onLayoutFinish.append(self.setPicloadConf) - if startslide is True: - self.PlayPause() - - def info(self): - message = str("%s" % (_( - "Server URL: %s\n" - ) % BASEURL)) - entries = [ - ("VERSION", "%s" % VERSION), # No translation needed - (_("Prev/Next"), _("Prev./Next Pic")), - (_("Pause"), _("Pause Pic")), - (_("Play"), _("Play Pic")), - (_("Stop"), _("Exit")), - (_("Red"), _("Exit")), - (_("Info"), _("This information")) - ] - message += format_message(entries) - self.session.open(MessageBox, message, MessageBox.TYPE_INFO) - - def setPicloadConf(self): - sc = getScale() - if not sc or len(sc) < 2: - sc = (1920, 1080) - if not hasattr(self, 'bgcolor') or not self.bgcolor: - self.bgcolor = "#000000" - resize_value = int(config.plugins.foreca.resize.value) if str(config.plugins.foreca.resize.value).isdigit() else 1 - self.picload.setPara([ - self["pic"].instance.size().width(), - self["pic"].instance.size().height(), - sc[0], - sc[1], - 0, - resize_value, - self.bgcolor - ]) - if "play_icon" in self and self["play_icon"]: - self["play_icon"].hide() - if "file" in self and self["file"] and config.plugins.foreca.infoline.value is False: - self["file"].hide() - self.start_decode() - - def ShowPicture(self): - if self.shownow and len(self.currPic): - self.shownow = False - self["file"].setText(self.currPic[0].replace(".jpg", "").replace(".png", "")) - self.lastindex = self.currPic[1] - if self.currPic[2]: - self["pic"].instance.setPixmap(self.currPic[2].__deref__()) - else: - print("[ShowPicture] No image data present.") - self.currPic = [] - self.nextDay() - self.start_decode() - - def finish_decode(self, picInfo=""): - self["point"].hide() - ptr = self.picload.getData() - if ptr is not None: - text = "" - try: - if picInfo: - parts = picInfo.split('\n', 1) - if parts and '/' in parts[0]: - filename = parts[0].split('/')[-1] - text = "(" + str(self.pindex + 1) + "/" + str(self.maxentry + 1) + ") " + filename - self.currPic = [text, self.pindex, ptr] - self.ShowPicture() - except Exception as e: - print("[finish_decode] Errore:", str(e)) - else: - print("[finish_decode] No image data obtained from picload.") - - def start_decode(self): - if self.pindex < 0 or self.pindex >= len(self.picfilelist): - print("[start_decode] Index out of bounds: %d" % self.pindex) - return - - filepath = self.picfilelist[self.pindex] - if CACHE_PATH not in filepath: - filepath = CACHE_PATH + filepath - if not exists(filepath): - return - - try: - self.picload.startDecode(filepath) - except Exception as e: - print("[start_decode] Error while decoding image: %s" % str(e)) - self["point"].show() - - def nextDay(self): - self.pindex += 1 - if self.pindex > self.maxentry: - self.pindex = 0 - - def prev(self): - self.pindex -= 1 - if self.pindex < 0: - self.pindex = self.maxentry - - def slidePic(self): - if DEBUG: - FAlog("slide to next Picture index=" + str(self.lastindex)) - if config.plugins.foreca.loop.value is False and self.lastindex == self.maxentry: - self.PlayPause() - self.shownow = True - self.ShowPicture() - - def PlayPause(self): - if self.slideTimer.isActive(): - self.slideTimer.stop() - self["play_icon"].hide() - else: - self.slideTimer.start(config.plugins.foreca.slidetime.value * 1000) - self["play_icon"].show() - self.nextPic() - - def prevPic(self): - self.currPic = [] - self.pindex = self.lastindex - self.prev() - self.start_decode() - self.shownow = True - - def nextPic(self): - self.shownow = True - self.ShowPicture() - - def clear_images(self): - try: - for filepath in self.picfilelist: - full_path = join(CACHE_PATH, filepath) - if exists(full_path): - try: - remove(full_path) - except OSError as e: - print("Error while removing file:", full_path, e) - - self.picfilelist = [] - - if exists(CACHE_PATH): - for filename in listdir(CACHE_PATH): - if filename.endswith(".jpg") or filename.endswith(".png"): - file_path = join(CACHE_PATH, filename) - try: - remove(file_path) - # print("Image file removed:", file_path) - except OSError as e: - print("Error while removing file:", file_path, e) - except Exception as e: - print("Error no file:", e) - - def Exit(self): - del self.picload - self.clear_images() - self.close(self.lastindex + self.dirlistcount) - - -# ------------------------------------------------------------------------------------------ -# -------------------------------- Foreca Settings ----------------------------------------- -# ------------------------------------------------------------------------------------------ class PicSetup(Screen, ConfigListScreen): @@ -2911,7 +2358,6 @@ def __layoutFinished(self): def createSetup(self): self.editListEntry = None self.list = [] - # self.list.append(getConfigListEntry(_("Type Server"), config.plugins.foreca.languages)) self.list.append(getConfigListEntry(_("Select units"), config.plugins.foreca.units)) self.list.append(getConfigListEntry(_("Select time format"), config.plugins.foreca.time)) self.list.append(getConfigListEntry(_("City names as labels in the Main screen"), config.plugins.foreca.citylabels)) @@ -2935,13 +2381,6 @@ def OKcity(self): current_item = str(self["Mlist"].getCurrent()[1].getText()) self.config_entry = None - """ - print("current_item:", type(current_item), current_item) - print("config.plugins.foreca.home:", type(config.plugins.foreca.home), config.plugins.foreca.home.value) - print("config.plugins.foreca.fav1:", type(config.plugins.foreca.fav1), config.plugins.foreca.fav1.value) - print("config.plugins.foreca.fav2:", type(config.plugins.foreca.fav2), config.plugins.foreca.fav2.value) - """ - if current_item == config.plugins.foreca.home.value: self.config_entry = config.plugins.foreca.home elif current_item == config.plugins.foreca.fav1.value: @@ -2982,11 +2421,6 @@ def OKCallback(self, city=None): if self.config_entry is None: print("ERROR: self.config_entry is still None after restoring!") return - """ - print("Config entry actual:", self.config_entry, type(self.config_entry)) - print("Available methods:", dir(self.config_entry)) - print("Checking if setValue exists:", hasattr(self.config_entry, "setValue")) - """ if not callable(getattr(self.config_entry, "setValue", None)): print("ERROR: setValue is not callable! It is:", type(self.config_entry.setValue)) @@ -3048,7 +2482,7 @@ def keyUp(self): self['Mlist'].instance.moveSelection(self['Mlist'].instance.moveUp) self.createSetup() - def keyNumber(self, number): + def keyNumberGlobal(self, number): self["Mlist"].handleKey(KEY_0 + number) self.createSetup() From a9726aa013db2688dda615f9d1b22a4685fbfbe9 Mon Sep 17 00:00:00 2001 From: Belfagor2005 <72314956+Belfagor2005@users.noreply.github.com> Date: Sat, 24 Jan 2026 17:41:11 +0100 Subject: [PATCH 2/4] Update control --- plugin/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/control b/plugin/control index 7901891..7488d8d 100644 --- a/plugin/control +++ b/plugin/control @@ -1,5 +1,5 @@ Package: enigma2-plugin-extensions-foreca -Version: 3.3.8 +Version: 3.3.9 Description: Weather forecast for the upcoming 10 days Section: extra Priority: optional From cc97393a70a0254fddee70d47fc3d11c9304b23c Mon Sep 17 00:00:00 2001 From: Belfagor2005 <72314956+Belfagor2005@users.noreply.github.com> Date: Fri, 6 Feb 2026 17:21:08 +0100 Subject: [PATCH 3/4] Create foreca_capabilities.json --- foreca_capabilities.json | 4685 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 4685 insertions(+) create mode 100644 foreca_capabilities.json diff --git a/foreca_capabilities.json b/foreca_capabilities.json new file mode 100644 index 0000000..3683c24 --- /dev/null +++ b/foreca_capabilities.json @@ -0,0 +1,4685 @@ +{ + "images": [ + { + "id": 2, + "attribution": null, + "type": "png", + "title": "Temperature", + "description": "Global surface temperature", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "tempdata-mapped-noalpha", + "temp-fahrenheit", + "temp-fahrenheit-noalpha" + ], + "times": { + "updated": "2026-02-06T06:56:26Z", + "available": [ + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T16:00:00Z", + "2026-02-07T17:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T19:00:00Z", + "2026-02-07T20:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-07T22:00:00Z", + "2026-02-07T23:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T01:00:00Z", + "2026-02-08T02:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T04:00:00Z", + "2026-02-08T05:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T07:00:00Z", + "2026-02-08T08:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T10:00:00Z", + "2026-02-08T11:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z", + "2026-02-10T03:00:00Z", + "2026-02-10T06:00:00Z", + "2026-02-10T09:00:00Z", + "2026-02-10T12:00:00Z", + "2026-02-10T15:00:00Z", + "2026-02-10T18:00:00Z", + "2026-02-10T21:00:00Z", + "2026-02-11T00:00:00Z", + "2026-02-11T03:00:00Z", + "2026-02-11T06:00:00Z", + "2026-02-11T09:00:00Z", + "2026-02-11T12:00:00Z", + "2026-02-11T15:00:00Z", + "2026-02-11T18:00:00Z", + "2026-02-11T21:00:00Z", + "2026-02-12T00:00:00Z" + ], + "current": 25 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 3, + "attribution": null, + "type": "windsvg", + "title": "Wind symbol", + "description": "Wind symbol with wind speed and direction", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T06:03:17Z", + "available": [ + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z" + ], + "current": 37 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 4, + "attribution": null, + "type": "png", + "title": "Cloud cover", + "description": "Global cloud cover forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "cloudpretty-noalpha" + ], + "times": { + "updated": "2026-02-06T15:41:12Z", + "available": [ + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T16:00:00Z", + "2026-02-07T17:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z" + ], + "current": 21 + }, + "analysis": "20260206060000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 8, + "attribution": null, + "type": "png", + "title": "Wind", + "description": "Global wind forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "winds-noalpha", + "winds-mph", + "winds-mph-noalpha" + ], + "times": { + "updated": "2026-02-06T06:03:17Z", + "available": [ + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z" + ], + "current": 37 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 5, + "attribution": "EUMETNET", + "type": "png", + "title": "Europe precipitation radar and forecast", + "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (EU)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:11:20Z", + "available": [ + "2026-02-05T14:15:00Z", + "2026-02-05T14:30:00Z", + "2026-02-05T14:45:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T15:15:00Z", + "2026-02-05T15:30:00Z", + "2026-02-05T15:45:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T16:15:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:45:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:15:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:45:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:15:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:45:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:15:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:45:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:15:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:45:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:15:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:45:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:15:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:45:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:15:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:45:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:15:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:45:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:15:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:45:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:15:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:45:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:15:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:45:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:15:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:45:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:15:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:45:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:15:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:45:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:15:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:45:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:15:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:45:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:15:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:45:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:15:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:45:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:15:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:45:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:15:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:45:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:45:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T19:15:00Z", + "2026-02-06T19:30:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z" + ], + "current": 104 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000,20260206000000", + "extent": { + "minLon": -89.91202346, + "minLat": -40.89080609, + "maxLon": 89.91202346, + "maxLat": 79.171, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 10, + "attribution": "NWS, EC", + "type": "png", + "title": "North America radar and precipitation forecast", + "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (North America)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:14:43Z", + "available": [ + "2026-02-06T04:15:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:25:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:35:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:45:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T04:55:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:05:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:15:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:25:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:35:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:45:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T05:55:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:05:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:15:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:25:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:35:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:45:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T06:55:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:05:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:15:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:25:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:35:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:45:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T07:55:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:05:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:15:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:25:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:35:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:45:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T08:55:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:05:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:15:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:25:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:35:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:45:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T09:55:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:05:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:15:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:25:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:35:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:45:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T10:55:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:05:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:15:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:25:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:35:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:45:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T11:55:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:05:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:15:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:25:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:35:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:45:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T12:55:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:05:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:25:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:35:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T13:55:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:05:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:25:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:35:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T14:55:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:05:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:25:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:35:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T15:55:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:05:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:25:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:35:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T16:55:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:05:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:25:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:35:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T17:55:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:05:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:25:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:35:00Z", + "2026-02-06T18:40:00Z", + "2026-02-06T18:45:00Z", + "2026-02-06T18:50:00Z", + "2026-02-06T18:55:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T19:05:00Z", + "2026-02-06T19:10:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z" + ], + "current": 145 + }, + "analysis": "20260206161000", + "analyses": "20260206161000,20260206160000,20260206000000", + "extent": { + "minLon": -180, + "minLat": -72.8, + "maxLon": 180, + "maxLat": 72.8, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 39, + "attribution": null, + "type": "png", + "title": "Eastern Asia radar and precipitation forecast", + "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (Eastern Asia)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:16:17Z", + "available": [ + "2026-02-05T16:10:00Z", + "2026-02-05T16:20:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:40:00Z", + "2026-02-05T16:50:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:10:00Z", + "2026-02-05T17:20:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:40:00Z", + "2026-02-05T17:50:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:10:00Z", + "2026-02-05T18:20:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:40:00Z", + "2026-02-05T18:50:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:10:00Z", + "2026-02-05T19:20:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:40:00Z", + "2026-02-05T19:50:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:10:00Z", + "2026-02-05T20:20:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:40:00Z", + "2026-02-05T20:50:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:10:00Z", + "2026-02-05T21:20:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:40:00Z", + "2026-02-05T21:50:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:10:00Z", + "2026-02-05T22:20:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:40:00Z", + "2026-02-05T22:50:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:10:00Z", + "2026-02-05T23:20:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:40:00Z", + "2026-02-05T23:50:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:10:00Z", + "2026-02-06T00:20:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:40:00Z", + "2026-02-06T00:50:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:10:00Z", + "2026-02-06T01:20:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:40:00Z", + "2026-02-06T01:50:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:10:00Z", + "2026-02-06T02:20:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:40:00Z", + "2026-02-06T02:50:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:10:00Z", + "2026-02-06T03:20:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:40:00Z", + "2026-02-06T03:50:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:10:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z" + ], + "current": 145 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000,20260206000000", + "extent": { + "minLon": 90, + "minLat": 0, + "maxLon": 180, + "maxLat": 67, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 21, + "attribution": "BOM AU", + "type": "png", + "title": "Australia precipitation radar and forecast", + "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (Australia)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:16:09Z", + "available": [ + "2026-02-05T16:20:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:40:00Z", + "2026-02-05T16:50:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:10:00Z", + "2026-02-05T17:20:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:40:00Z", + "2026-02-05T17:50:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:10:00Z", + "2026-02-05T18:20:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:40:00Z", + "2026-02-05T18:50:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:10:00Z", + "2026-02-05T19:20:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:40:00Z", + "2026-02-05T19:50:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:10:00Z", + "2026-02-05T20:20:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:40:00Z", + "2026-02-05T20:50:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:10:00Z", + "2026-02-05T21:20:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:40:00Z", + "2026-02-05T21:50:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:10:00Z", + "2026-02-05T22:20:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:40:00Z", + "2026-02-05T22:50:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:10:00Z", + "2026-02-05T23:20:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:40:00Z", + "2026-02-05T23:50:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:10:00Z", + "2026-02-06T00:20:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:40:00Z", + "2026-02-06T00:50:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:10:00Z", + "2026-02-06T01:20:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:40:00Z", + "2026-02-06T01:50:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:10:00Z", + "2026-02-06T02:20:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:40:00Z", + "2026-02-06T02:50:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:10:00Z", + "2026-02-06T03:20:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:40:00Z", + "2026-02-06T03:50:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:10:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:40:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z" + ], + "current": 144 + }, + "analysis": "20260206161000", + "analyses": "20260206161000,20260206161000,20260206000000", + "extent": { + "minLon": -180, + "minLat": -72.8, + "maxLon": 180, + "maxLat": 72.8, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 14, + "attribution": "Copyright 2022 EUMETSAT", + "type": "png", + "title": "Satellite", + "description": "Cloud cover from satellite", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T15:28:17Z", + "available": [ + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z" + ], + "current": 31 + }, + "analysis": "20260206150000", + "extent": { + "minLon": -180, + "minLat": -79.171, + "maxLon": 180, + "maxLat": 79.171, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 22, + "attribution": null, + "type": "png", + "title": "Precipitation forecast", + "description": "Global precipitation forecast with precipitation type", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "data-pt-lw" + ], + "times": { + "updated": "2026-02-06T07:12:03Z", + "available": [ + "2026-02-05T18:00:00Z", + "2026-02-05T18:15:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:45:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:15:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:45:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:15:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:45:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:15:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:45:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:15:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:45:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:15:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:45:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:15:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:45:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:15:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:45:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:15:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:45:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:15:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:45:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:15:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:45:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:15:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:45:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:15:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:45:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:15:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:45:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:15:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:45:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:15:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:45:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:15:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:45:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:15:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:45:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:15:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:45:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:45:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T19:15:00Z", + "2026-02-06T19:30:00Z", + "2026-02-06T19:45:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T20:15:00Z", + "2026-02-06T20:30:00Z", + "2026-02-06T20:45:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z" + ], + "current": 89 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -65.0116, + "maxLon": 180, + "maxLat": 79.963, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 9, + "attribution": null, + "type": "png", + "title": "UV Index", + "description": "Global UV index forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "uvi-noalpha" + ], + "times": { + "updated": "2026-02-06T10:15:10Z", + "available": [ + "2026-02-05T12:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-10T12:00:00Z", + "2026-02-11T12:00:00Z" + ], + "current": 1 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 43, + "attribution": null, + "type": "png", + "title": "Sea temperature", + "description": "Global sea temperature", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "sea-temp-fahrenheit" + ], + "times": { + "updated": "2026-02-06T06:10:07Z", + "available": [ + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T16:00:00Z", + "2026-02-07T17:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T19:00:00Z", + "2026-02-07T20:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-07T22:00:00Z", + "2026-02-07T23:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T01:00:00Z", + "2026-02-08T02:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T04:00:00Z", + "2026-02-08T05:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T07:00:00Z", + "2026-02-08T08:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T10:00:00Z", + "2026-02-08T11:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z", + "2026-02-10T03:00:00Z", + "2026-02-10T06:00:00Z", + "2026-02-10T09:00:00Z", + "2026-02-10T12:00:00Z", + "2026-02-10T15:00:00Z", + "2026-02-10T18:00:00Z", + "2026-02-10T21:00:00Z", + "2026-02-11T00:00:00Z", + "2026-02-11T03:00:00Z", + "2026-02-11T06:00:00Z", + "2026-02-11T09:00:00Z", + "2026-02-11T12:00:00Z", + "2026-02-11T15:00:00Z", + "2026-02-11T18:00:00Z", + "2026-02-11T21:00:00Z", + "2026-02-12T00:00:00Z" + ], + "current": 25 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 81, + "attribution": null, + "type": "png", + "title": "Mean sea level pressure", + "description": "Mean sea level pressure (contour)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T06:11:30Z", + "available": [ + "2026-02-05T03:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z" + ], + "current": 12 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 4, + "maxZoom": 14 + } + }, + { + "id": 80, + "attribution": null, + "type": "png", + "title": "Mean sea level pressure", + "description": "Mean sea level pressure (colored)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "pres-color-noalpha" + ], + "times": { + "updated": "2026-02-06T06:11:30Z", + "available": [ + "2026-02-05T03:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z" + ], + "current": 12 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -179.8, + "minLat": -89.6, + "maxLon": 180, + "maxLat": 89.6, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 79, + "attribution": "Copernicus", + "type": "png", + "title": "Air quality index", + "description": "Global air quality index + forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "aqi-noalpha", + "aqi-muted-transparent", + "aqi-muted-noalpha" + ], + "times": { + "updated": "2026-02-06T15:58:32Z", + "available": [ + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z" + ], + "current": 15 + }, + "analysis": "20260206140000", + "extent": { + "minLon": -179.8, + "minLat": -89.6, + "maxLon": 180, + "maxLat": 89.6, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 77, + "attribution": null, + "type": "png", + "title": "Approximate snow depth", + "description": "Approximation of global snow depth", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "snow-depth-in" + ], + "times": { + "updated": "2026-02-06T06:09:11Z", + "available": [ + "2026-02-05T15:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z", + "2026-02-08T15:00:00Z", + "2026-02-08T18:00:00Z", + "2026-02-08T21:00:00Z", + "2026-02-09T00:00:00Z", + "2026-02-09T03:00:00Z", + "2026-02-09T06:00:00Z", + "2026-02-09T09:00:00Z", + "2026-02-09T12:00:00Z", + "2026-02-09T15:00:00Z", + "2026-02-09T18:00:00Z", + "2026-02-09T21:00:00Z", + "2026-02-10T00:00:00Z", + "2026-02-10T03:00:00Z", + "2026-02-10T06:00:00Z", + "2026-02-10T09:00:00Z", + "2026-02-10T12:00:00Z", + "2026-02-10T15:00:00Z", + "2026-02-10T18:00:00Z", + "2026-02-10T21:00:00Z", + "2026-02-11T00:00:00Z", + "2026-02-11T03:00:00Z", + "2026-02-11T06:00:00Z", + "2026-02-11T09:00:00Z", + "2026-02-11T12:00:00Z", + "2026-02-11T15:00:00Z", + "2026-02-11T18:00:00Z", + "2026-02-11T21:00:00Z", + "2026-02-12T00:00:00Z", + "2026-02-12T06:00:00Z", + "2026-02-12T12:00:00Z", + "2026-02-12T18:00:00Z", + "2026-02-13T00:00:00Z", + "2026-02-13T06:00:00Z", + "2026-02-13T12:00:00Z", + "2026-02-13T18:00:00Z", + "2026-02-14T00:00:00Z", + "2026-02-14T06:00:00Z", + "2026-02-14T12:00:00Z", + "2026-02-14T18:00:00Z", + "2026-02-15T00:00:00Z", + "2026-02-15T06:00:00Z", + "2026-02-15T12:00:00Z", + "2026-02-15T18:00:00Z", + "2026-02-16T00:00:00Z" + ], + "current": 8 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 45, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Ragweed pollen forecast", + "description": "Ragweed pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:12Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 47, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Alder pollen forecast", + "description": "Alder pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:13Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 48, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Birch pollen forecast", + "description": "Birch pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:12Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 49, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Olive pollen forecast", + "description": "Olive pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:12Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 50, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Grass pollen forecast", + "description": "Grass pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:12Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 51, + "attribution": "Copernicus Climate Change Service", + "type": "png", + "title": "Mugwort pollen forecast", + "description": "Mugwort pollen forecast for Europe", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T10:05:12Z", + "available": [ + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z", + "2026-02-08T09:00:00Z", + "2026-02-08T12:00:00Z" + ], + "current": 39 + }, + "analysis": "20260206000000", + "extent": { + "minLon": -44.967, + "minLat": 21.9889, + "maxLon": 45.0549, + "maxLat": 74.0391, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 91, + "attribution": "TMD", + "type": "png", + "title": "Thailand Weather Radar Composite", + "description": "Real-time weather radar composite for Thailand + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:18:20Z", + "available": [ + "2026-02-06T08:15:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:45:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:15:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:45:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:15:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:45:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:15:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:45:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:15:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:45:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:15:00Z" + ], + "current": 32 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000", + "extent": { + "minLon": 95.05, + "minLat": 4.04, + "maxLon": 107.96, + "maxLat": 22.45, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 90, + "attribution": "MGM", + "type": "png", + "title": "Turkey Weather Radar Composite", + "description": "Real-time weather radar composite for Turkey + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:09:10Z", + "available": [ + "2026-02-06T12:48:00Z", + "2026-02-06T12:54:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:06:00Z", + "2026-02-06T13:12:00Z", + "2026-02-06T13:18:00Z", + "2026-02-06T13:24:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:36:00Z", + "2026-02-06T13:42:00Z", + "2026-02-06T13:48:00Z", + "2026-02-06T13:54:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:06:00Z", + "2026-02-06T14:12:00Z", + "2026-02-06T14:18:00Z", + "2026-02-06T14:24:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:36:00Z", + "2026-02-06T14:42:00Z", + "2026-02-06T14:48:00Z", + "2026-02-06T14:54:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:06:00Z", + "2026-02-06T15:12:00Z", + "2026-02-06T15:18:00Z", + "2026-02-06T15:24:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:36:00Z", + "2026-02-06T15:42:00Z", + "2026-02-06T15:48:00Z", + "2026-02-06T15:54:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:06:00Z", + "2026-02-06T16:12:00Z", + "2026-02-06T16:18:00Z", + "2026-02-06T16:24:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:36:00Z", + "2026-02-06T16:42:00Z", + "2026-02-06T16:48:00Z", + "2026-02-06T16:54:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:06:00Z", + "2026-02-06T17:12:00Z", + "2026-02-06T17:18:00Z", + "2026-02-06T17:24:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:36:00Z", + "2026-02-06T17:42:00Z" + ], + "current": 35 + }, + "analysis": "20260206155400", + "analyses": "20260206155400,20260206154800", + "extent": { + "minLon": 23.0049, + "minLat": 33.0099, + "maxLon": 47.9951, + "maxLat": 44.996464, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 89, + "attribution": "DECEA", + "type": "png", + "title": "Brazil Weather Radar Composite", + "description": "Real-time weather radar composite for Brazil + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:10:24Z", + "available": [ + "2026-02-06T05:40:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:20:00Z" + ], + "current": 32 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000", + "extent": { + "minLon": -76.4, + "minLat": -35.63, + "maxLon": -30.95, + "maxLat": 6.5, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 92, + "attribution": "METMALAYSIA", + "type": "png", + "title": "East Malaysia Weather Radar Composite", + "description": "Real-time weather radar composite for Eest Malaysia + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:14:00Z", + "available": [ + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z" + ], + "current": 33 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000", + "extent": { + "minLon": 107.08, + "minLat": -1.49, + "maxLon": 121.23, + "maxLat": 9.16, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 93, + "attribution": "METMALAYSIA", + "type": "png", + "title": "Peninsular Malaysia Weather Radar Composite", + "description": "Real-time weather radar composite for Peninsular Malaysia + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2026-02-06T16:13:06Z", + "available": [ + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z" + ], + "current": 33 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000", + "extent": { + "minLon": 96.929, + "minLat": -1.280956336, + "maxLon": 106.318, + "maxLat": 8.961585663, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 114, + "attribution": null, + "type": "png", + "title": "Canary Weather Radar Composite", + "description": "Real-time weather radar composite for Canary Islands + radar forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage" + ], + "times": { + "updated": "2025-08-18T10:54:47Z", + "available": [ + "2025-08-18T02:30:00Z", + "2025-08-18T02:40:00Z", + "2025-08-18T02:50:00Z", + "2025-08-18T03:00:00Z", + "2025-08-18T03:10:00Z", + "2025-08-18T03:20:00Z", + "2025-08-18T03:30:00Z", + "2025-08-18T03:40:00Z", + "2025-08-18T03:50:00Z", + "2025-08-18T04:00:00Z", + "2025-08-18T04:10:00Z", + "2025-08-18T04:20:00Z", + "2025-08-18T04:30:00Z", + "2025-08-18T04:40:00Z", + "2025-08-18T04:50:00Z", + "2025-08-18T05:00:00Z", + "2025-08-18T05:10:00Z", + "2025-08-18T05:20:00Z", + "2025-08-18T05:30:00Z", + "2025-08-18T05:50:00Z", + "2025-08-18T06:00:00Z", + "2025-08-18T06:10:00Z", + "2025-08-18T06:20:00Z", + "2025-08-18T06:30:00Z", + "2025-08-18T06:40:00Z", + "2025-08-18T06:50:00Z", + "2025-08-18T07:00:00Z", + "2025-08-18T07:10:00Z", + "2025-08-18T07:20:00Z", + "2025-08-18T07:30:00Z", + "2025-08-18T07:40:00Z", + "2025-08-18T07:50:00Z", + "2025-08-18T08:00:00Z", + "2025-08-18T08:10:00Z", + "2025-08-18T08:20:00Z", + "2025-08-18T08:30:00Z", + "2025-08-18T08:40:00Z", + "2025-08-18T08:50:00Z", + "2025-08-18T09:00:00Z", + "2025-08-18T09:20:00Z", + "2025-08-18T09:30:00Z", + "2025-08-18T09:40:00Z", + "2025-08-18T09:50:00Z", + "2025-08-18T10:00:00Z", + "2025-08-18T10:10:00Z", + "2025-08-18T10:20:00Z", + "2025-08-18T10:30:00Z", + "2025-08-18T10:40:00Z", + "2025-08-18T10:50:00Z", + "2025-08-18T11:00:00Z", + "2025-08-18T11:10:00Z", + "2025-08-18T11:20:00Z", + "2025-08-18T11:30:00Z", + "2025-08-18T11:40:00Z", + "2025-08-18T11:50:00Z", + "2025-08-18T12:00:00Z", + "2025-08-18T12:10:00Z", + "2025-08-18T12:20:00Z", + "2025-08-18T12:30:00Z", + "2025-08-18T12:40:00Z", + "2025-08-18T12:50:00Z", + "2025-08-18T13:00:00Z", + "2025-08-18T13:10:00Z", + "2025-08-18T13:20:00Z", + "2025-08-18T13:30:00Z", + "2025-08-18T13:40:00Z", + "2025-08-18T13:50:00Z", + "2025-08-18T14:00:00Z", + "2025-08-18T14:10:00Z", + "2025-08-18T14:20:00Z", + "2025-08-18T14:30:00Z" + ], + "current": 70 + }, + "analysis": "20250818104000", + "analyses": "20250818104000,20250818104000", + "extent": { + "minLon": -18.5128, + "minLat": 25.5102, + "maxLon": -12.8429, + "maxLat": 30.5118, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 115, + "attribution": "Eumetnet", + "type": "png", + "title": "5 minute Europe Weather Radar Composite", + "description": "Real-time weather radar composite for Europe in 1km resolution + radar forecast + precipitation type", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:14:43Z", + "available": [ + "2026-02-06T13:10:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:25:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:35:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T13:55:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:05:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:25:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:35:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T14:55:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:05:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:25:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:35:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T15:55:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:05:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:25:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:35:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T16:55:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:05:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:25:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:35:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T17:55:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:05:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:25:00Z" + ], + "current": 38 + }, + "analysis": "20260206160500", + "analyses": "20260206160500,20260206160000", + "extent": { + "minLon": -39.522, + "minLat": 31.752, + "maxLon": 57.792, + "maxLat": 73.926, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 123, + "attribution": "NWS", + "type": "png", + "title": "North America radar with lightning and radar forecast", + "description": "Real-time weather radar composite for North America + radar forecast + precipitation type + lightning", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:14:33Z", + "available": [ + "2026-02-06T04:15:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:25:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:35:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:45:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T04:55:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:05:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:15:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:25:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:35:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:45:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T05:55:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:05:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:15:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:25:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:35:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:45:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T06:55:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:05:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:15:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:25:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:35:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:45:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T07:55:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:05:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:15:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:25:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:35:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:45:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T08:55:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:05:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:15:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:25:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:35:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:45:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T09:55:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:05:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:15:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:25:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:35:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:45:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T10:55:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:05:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:15:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:25:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:35:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:45:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T11:55:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:05:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:15:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:25:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:35:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:45:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T12:55:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:05:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:25:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:35:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T13:55:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:05:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:25:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:35:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T14:55:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:05:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:25:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:35:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T15:55:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:05:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:25:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:35:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T16:55:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:05:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:25:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:35:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T17:55:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:05:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:25:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:35:00Z", + "2026-02-06T18:40:00Z", + "2026-02-06T18:45:00Z", + "2026-02-06T18:50:00Z", + "2026-02-06T18:55:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T19:05:00Z", + "2026-02-06T19:10:00Z" + ], + "current": 145 + }, + "analysis": "20260206161000", + "analyses": "20260206161500,20260206160000", + "extent": { + "minLon": -170.502, + "minLat": 13.5018, + "maxLon": -50.0043, + "maxLat": 69.9999, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 130, + "attribution": null, + "type": "png", + "title": "Satellite and cloud forecast", + "description": "Satellite observations + cloud forecast", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T15:28:17Z", + "available": [ + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T19:00:00Z", + "2026-02-06T20:00:00Z", + "2026-02-06T21:00:00Z", + "2026-02-06T22:00:00Z", + "2026-02-06T23:00:00Z", + "2026-02-07T00:00:00Z", + "2026-02-07T01:00:00Z", + "2026-02-07T02:00:00Z", + "2026-02-07T03:00:00Z", + "2026-02-07T04:00:00Z", + "2026-02-07T05:00:00Z", + "2026-02-07T06:00:00Z", + "2026-02-07T07:00:00Z", + "2026-02-07T08:00:00Z", + "2026-02-07T09:00:00Z", + "2026-02-07T10:00:00Z", + "2026-02-07T11:00:00Z", + "2026-02-07T12:00:00Z", + "2026-02-07T13:00:00Z", + "2026-02-07T14:00:00Z", + "2026-02-07T15:00:00Z", + "2026-02-07T16:00:00Z", + "2026-02-07T17:00:00Z", + "2026-02-07T18:00:00Z", + "2026-02-07T21:00:00Z", + "2026-02-08T00:00:00Z", + "2026-02-08T03:00:00Z", + "2026-02-08T06:00:00Z" + ], + "current": 32 + }, + "analysis": "20260206150000", + "extent": { + "minLon": -180, + "minLat": -90, + "maxLon": 180, + "maxLat": 90, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 136, + "attribution": null, + "type": "png", + "title": "Europe 1 Hour Radar Precipitation Accumulation", + "description": "Accumulation of precipitation from radar in Europe during an hour.", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T16:14:44Z", + "available": [ + "2026-02-02T09:00:00Z", + "2026-02-02T10:00:00Z", + "2026-02-02T11:00:00Z", + "2026-02-02T12:00:00Z", + "2026-02-02T13:00:00Z", + "2026-02-02T14:00:00Z", + "2026-02-02T15:00:00Z", + "2026-02-02T16:00:00Z", + "2026-02-02T17:00:00Z", + "2026-02-02T18:00:00Z", + "2026-02-02T19:00:00Z", + "2026-02-02T20:00:00Z", + "2026-02-02T21:00:00Z", + "2026-02-02T22:00:00Z", + "2026-02-02T23:00:00Z", + "2026-02-03T00:00:00Z", + "2026-02-03T01:00:00Z", + "2026-02-03T02:00:00Z", + "2026-02-03T03:00:00Z", + "2026-02-03T04:00:00Z", + "2026-02-03T05:00:00Z", + "2026-02-03T06:00:00Z", + "2026-02-03T07:00:00Z", + "2026-02-03T08:00:00Z", + "2026-02-03T09:00:00Z", + "2026-02-03T10:00:00Z", + "2026-02-03T11:00:00Z", + "2026-02-03T12:00:00Z", + "2026-02-03T13:00:00Z", + "2026-02-03T14:00:00Z", + "2026-02-03T15:00:00Z", + "2026-02-03T16:00:00Z", + "2026-02-03T17:00:00Z", + "2026-02-03T18:00:00Z", + "2026-02-03T19:00:00Z", + "2026-02-03T20:00:00Z", + "2026-02-03T21:00:00Z", + "2026-02-03T22:00:00Z", + "2026-02-03T23:00:00Z", + "2026-02-04T00:00:00Z", + "2026-02-04T01:00:00Z", + "2026-02-04T02:00:00Z", + "2026-02-04T03:00:00Z", + "2026-02-04T04:00:00Z", + "2026-02-04T05:00:00Z", + "2026-02-04T06:00:00Z", + "2026-02-04T07:00:00Z", + "2026-02-04T08:00:00Z", + "2026-02-04T09:00:00Z", + "2026-02-04T10:00:00Z", + "2026-02-04T11:00:00Z", + "2026-02-04T12:00:00Z", + "2026-02-04T13:00:00Z", + "2026-02-04T14:00:00Z", + "2026-02-04T15:00:00Z", + "2026-02-04T16:00:00Z", + "2026-02-04T17:00:00Z", + "2026-02-04T18:00:00Z", + "2026-02-04T19:00:00Z", + "2026-02-04T20:00:00Z", + "2026-02-04T21:00:00Z", + "2026-02-04T22:00:00Z", + "2026-02-04T23:00:00Z", + "2026-02-05T00:00:00Z", + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z" + ], + "current": 103 + }, + "analysis": "20260206160000", + "extent": { + "minLon": -39.522, + "minLat": 31.752, + "maxLon": 57.792, + "maxLat": 73.926, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 137, + "attribution": null, + "type": "png", + "title": "Europe 24 Hour Radar Precipitation Accumulation", + "description": "Accumulation of precipitation from radar in Europe during 24 hours.", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T16:15:21Z", + "available": [ + "2026-02-02T09:00:00Z", + "2026-02-02T10:00:00Z", + "2026-02-02T11:00:00Z", + "2026-02-02T12:00:00Z", + "2026-02-02T13:00:00Z", + "2026-02-02T14:00:00Z", + "2026-02-02T15:00:00Z", + "2026-02-02T16:00:00Z", + "2026-02-02T17:00:00Z", + "2026-02-02T18:00:00Z", + "2026-02-02T19:00:00Z", + "2026-02-02T20:00:00Z", + "2026-02-02T21:00:00Z", + "2026-02-02T22:00:00Z", + "2026-02-02T23:00:00Z", + "2026-02-03T00:00:00Z", + "2026-02-03T01:00:00Z", + "2026-02-03T02:00:00Z", + "2026-02-03T03:00:00Z", + "2026-02-03T04:00:00Z", + "2026-02-03T05:00:00Z", + "2026-02-03T06:00:00Z", + "2026-02-03T07:00:00Z", + "2026-02-03T08:00:00Z", + "2026-02-03T09:00:00Z", + "2026-02-03T10:00:00Z", + "2026-02-03T11:00:00Z", + "2026-02-03T12:00:00Z", + "2026-02-03T13:00:00Z", + "2026-02-03T14:00:00Z", + "2026-02-03T15:00:00Z", + "2026-02-03T16:00:00Z", + "2026-02-03T17:00:00Z", + "2026-02-03T18:00:00Z", + "2026-02-03T19:00:00Z", + "2026-02-03T20:00:00Z", + "2026-02-03T21:00:00Z", + "2026-02-03T22:00:00Z", + "2026-02-03T23:00:00Z", + "2026-02-04T00:00:00Z", + "2026-02-04T01:00:00Z", + "2026-02-04T02:00:00Z", + "2026-02-04T03:00:00Z", + "2026-02-04T04:00:00Z", + "2026-02-04T05:00:00Z", + "2026-02-04T06:00:00Z", + "2026-02-04T07:00:00Z", + "2026-02-04T08:00:00Z", + "2026-02-04T09:00:00Z", + "2026-02-04T10:00:00Z", + "2026-02-04T11:00:00Z", + "2026-02-04T12:00:00Z", + "2026-02-04T13:00:00Z", + "2026-02-04T14:00:00Z", + "2026-02-04T15:00:00Z", + "2026-02-04T16:00:00Z", + "2026-02-04T17:00:00Z", + "2026-02-04T18:00:00Z", + "2026-02-04T19:00:00Z", + "2026-02-04T20:00:00Z", + "2026-02-04T21:00:00Z", + "2026-02-04T22:00:00Z", + "2026-02-04T23:00:00Z", + "2026-02-05T00:00:00Z", + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z" + ], + "current": 103 + }, + "analysis": "20260206160000", + "extent": { + "minLon": -39.522, + "minLat": 31.752, + "maxLon": 57.792, + "maxLat": 73.926, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 138, + "attribution": "NWS", + "type": "png", + "title": "North America 1 Hour Radar Precipitation Accumulation", + "description": "Accumulation of precipitation from radar in North America during an hour.", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T16:14:43Z", + "available": [ + "2026-02-02T09:00:00Z", + "2026-02-02T10:00:00Z", + "2026-02-02T11:00:00Z", + "2026-02-02T12:00:00Z", + "2026-02-02T13:00:00Z", + "2026-02-02T14:00:00Z", + "2026-02-02T15:00:00Z", + "2026-02-02T16:00:00Z", + "2026-02-02T17:00:00Z", + "2026-02-02T18:00:00Z", + "2026-02-02T19:00:00Z", + "2026-02-02T20:00:00Z", + "2026-02-02T21:00:00Z", + "2026-02-02T22:00:00Z", + "2026-02-02T23:00:00Z", + "2026-02-03T00:00:00Z", + "2026-02-03T01:00:00Z", + "2026-02-03T02:00:00Z", + "2026-02-03T03:00:00Z", + "2026-02-03T04:00:00Z", + "2026-02-03T05:00:00Z", + "2026-02-03T06:00:00Z", + "2026-02-03T07:00:00Z", + "2026-02-03T08:00:00Z", + "2026-02-03T09:00:00Z", + "2026-02-03T10:00:00Z", + "2026-02-03T11:00:00Z", + "2026-02-03T12:00:00Z", + "2026-02-03T13:00:00Z", + "2026-02-03T14:00:00Z", + "2026-02-03T15:00:00Z", + "2026-02-03T16:00:00Z", + "2026-02-03T17:00:00Z", + "2026-02-03T18:00:00Z", + "2026-02-03T19:00:00Z", + "2026-02-03T20:00:00Z", + "2026-02-03T21:00:00Z", + "2026-02-03T22:00:00Z", + "2026-02-03T23:00:00Z", + "2026-02-04T00:00:00Z", + "2026-02-04T01:00:00Z", + "2026-02-04T02:00:00Z", + "2026-02-04T03:00:00Z", + "2026-02-04T04:00:00Z", + "2026-02-04T05:00:00Z", + "2026-02-04T06:00:00Z", + "2026-02-04T07:00:00Z", + "2026-02-04T08:00:00Z", + "2026-02-04T09:00:00Z", + "2026-02-04T10:00:00Z", + "2026-02-04T11:00:00Z", + "2026-02-04T12:00:00Z", + "2026-02-04T13:00:00Z", + "2026-02-04T14:00:00Z", + "2026-02-04T15:00:00Z", + "2026-02-04T16:00:00Z", + "2026-02-04T17:00:00Z", + "2026-02-04T18:00:00Z", + "2026-02-04T19:00:00Z", + "2026-02-04T20:00:00Z", + "2026-02-04T21:00:00Z", + "2026-02-04T22:00:00Z", + "2026-02-04T23:00:00Z", + "2026-02-05T00:00:00Z", + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z" + ], + "current": 103 + }, + "analysis": "20260206160000", + "extent": { + "minLon": -170.5, + "minLat": 13.5018, + "maxLon": -50.0043, + "maxLat": 69.9999, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 139, + "attribution": "NWS", + "type": "png", + "title": "North America 24 Hour Radar Precipitation Accumulation", + "description": "Accumulation of precipitation from radar in North America during 24 hours.", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default" + ], + "times": { + "updated": "2026-02-06T16:15:14Z", + "available": [ + "2026-02-02T09:00:00Z", + "2026-02-02T10:00:00Z", + "2026-02-02T11:00:00Z", + "2026-02-02T12:00:00Z", + "2026-02-02T13:00:00Z", + "2026-02-02T14:00:00Z", + "2026-02-02T15:00:00Z", + "2026-02-02T16:00:00Z", + "2026-02-02T17:00:00Z", + "2026-02-02T18:00:00Z", + "2026-02-02T19:00:00Z", + "2026-02-02T20:00:00Z", + "2026-02-02T21:00:00Z", + "2026-02-02T22:00:00Z", + "2026-02-02T23:00:00Z", + "2026-02-03T00:00:00Z", + "2026-02-03T01:00:00Z", + "2026-02-03T02:00:00Z", + "2026-02-03T03:00:00Z", + "2026-02-03T04:00:00Z", + "2026-02-03T05:00:00Z", + "2026-02-03T06:00:00Z", + "2026-02-03T07:00:00Z", + "2026-02-03T08:00:00Z", + "2026-02-03T09:00:00Z", + "2026-02-03T10:00:00Z", + "2026-02-03T11:00:00Z", + "2026-02-03T12:00:00Z", + "2026-02-03T13:00:00Z", + "2026-02-03T14:00:00Z", + "2026-02-03T15:00:00Z", + "2026-02-03T16:00:00Z", + "2026-02-03T17:00:00Z", + "2026-02-03T18:00:00Z", + "2026-02-03T19:00:00Z", + "2026-02-03T20:00:00Z", + "2026-02-03T21:00:00Z", + "2026-02-03T22:00:00Z", + "2026-02-03T23:00:00Z", + "2026-02-04T00:00:00Z", + "2026-02-04T01:00:00Z", + "2026-02-04T02:00:00Z", + "2026-02-04T03:00:00Z", + "2026-02-04T04:00:00Z", + "2026-02-04T05:00:00Z", + "2026-02-04T06:00:00Z", + "2026-02-04T07:00:00Z", + "2026-02-04T08:00:00Z", + "2026-02-04T09:00:00Z", + "2026-02-04T10:00:00Z", + "2026-02-04T11:00:00Z", + "2026-02-04T12:00:00Z", + "2026-02-04T13:00:00Z", + "2026-02-04T14:00:00Z", + "2026-02-04T15:00:00Z", + "2026-02-04T16:00:00Z", + "2026-02-04T17:00:00Z", + "2026-02-04T18:00:00Z", + "2026-02-04T19:00:00Z", + "2026-02-04T20:00:00Z", + "2026-02-04T21:00:00Z", + "2026-02-04T22:00:00Z", + "2026-02-04T23:00:00Z", + "2026-02-05T00:00:00Z", + "2026-02-05T01:00:00Z", + "2026-02-05T02:00:00Z", + "2026-02-05T03:00:00Z", + "2026-02-05T04:00:00Z", + "2026-02-05T05:00:00Z", + "2026-02-05T06:00:00Z", + "2026-02-05T07:00:00Z", + "2026-02-05T08:00:00Z", + "2026-02-05T09:00:00Z", + "2026-02-05T10:00:00Z", + "2026-02-05T11:00:00Z", + "2026-02-05T12:00:00Z", + "2026-02-05T13:00:00Z", + "2026-02-05T14:00:00Z", + "2026-02-05T15:00:00Z", + "2026-02-05T16:00:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T23:00:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T16:00:00Z" + ], + "current": 103 + }, + "analysis": "20260206160000", + "extent": { + "minLon": -170.5, + "minLat": 13.5018, + "maxLon": -50.0043, + "maxLat": 69.9999, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 128, + "attribution": "SMN", + "type": "png", + "title": "Mexico Weather Radar Composite", + "description": "Real-time weather radar composite for Mexico", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:18:39Z", + "available": [ + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z" + ], + "current": 33 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206155000", + "extent": { + "minLon": -118.722, + "minLat": 6.4, + "maxLon": -84.6, + "maxLat": 31.5771, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 126, + "attribution": null, + "type": "png", + "title": "Southeast Asia Radar Composite", + "description": "Radar composite (Southeast Asia)", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:18:26Z", + "available": [ + "2026-02-05T16:10:00Z", + "2026-02-05T16:20:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:40:00Z", + "2026-02-05T16:50:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:10:00Z", + "2026-02-05T17:20:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:40:00Z", + "2026-02-05T17:50:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:10:00Z", + "2026-02-05T18:20:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:40:00Z", + "2026-02-05T18:50:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:10:00Z", + "2026-02-05T19:20:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:40:00Z", + "2026-02-05T19:50:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:10:00Z", + "2026-02-05T20:20:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:40:00Z", + "2026-02-05T20:50:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:10:00Z", + "2026-02-05T21:20:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:40:00Z", + "2026-02-05T21:50:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:10:00Z", + "2026-02-05T22:20:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:40:00Z", + "2026-02-05T22:50:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:10:00Z", + "2026-02-05T23:20:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:40:00Z", + "2026-02-05T23:50:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:10:00Z", + "2026-02-06T00:20:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:40:00Z", + "2026-02-06T00:50:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:10:00Z", + "2026-02-06T01:20:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:40:00Z", + "2026-02-06T01:50:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:10:00Z", + "2026-02-06T02:20:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:40:00Z", + "2026-02-06T02:50:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:10:00Z", + "2026-02-06T03:20:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:40:00Z", + "2026-02-06T03:50:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:10:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z" + ], + "current": 145 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206155000", + "extent": { + "minLon": 95.05, + "minLat": -1.49, + "maxLon": 127.5, + "maxLat": 25.3785, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 133, + "attribution": null, + "type": "png", + "title": "Australia Weather Radar Composite", + "description": "Real-time weather radar composite for Australia + radar forecast + precipitation type", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:16:10Z", + "available": [ + "2026-02-05T16:20:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:40:00Z", + "2026-02-05T16:50:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:10:00Z", + "2026-02-05T17:20:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:40:00Z", + "2026-02-05T17:50:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:10:00Z", + "2026-02-05T18:20:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:40:00Z", + "2026-02-05T18:50:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:10:00Z", + "2026-02-05T19:20:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:40:00Z", + "2026-02-05T19:50:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:10:00Z", + "2026-02-05T20:20:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:40:00Z", + "2026-02-05T20:50:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:10:00Z", + "2026-02-05T21:20:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:40:00Z", + "2026-02-05T21:50:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:10:00Z", + "2026-02-05T22:20:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:40:00Z", + "2026-02-05T22:50:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:10:00Z", + "2026-02-05T23:20:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:40:00Z", + "2026-02-05T23:50:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:10:00Z", + "2026-02-06T00:20:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:40:00Z", + "2026-02-06T00:50:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:10:00Z", + "2026-02-06T01:20:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:40:00Z", + "2026-02-06T01:50:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:10:00Z", + "2026-02-06T02:20:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:40:00Z", + "2026-02-06T02:50:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:10:00Z", + "2026-02-06T03:20:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:40:00Z", + "2026-02-06T03:50:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:10:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:30:00Z", + "2026-02-06T18:40:00Z" + ], + "current": 144 + }, + "analysis": "20260206161000", + "analyses": "20260206161000,20260206161000", + "extent": { + "minLon": 106.7, + "minLat": -46.1483, + "maxLon": 159.697, + "maxLat": -6.22399, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 94, + "attribution": null, + "type": "png", + "title": "Australia 1km 5min radar composite", + "description": "Australia radar composite", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-eu" + ], + "times": { + "updated": "2026-02-06T16:16:30Z", + "available": [ + "2026-02-06T13:35:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T13:55:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:05:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:25:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:35:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T14:55:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:05:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:25:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:35:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T15:55:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:05:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:25:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:35:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T16:55:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:05:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:25:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:35:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T17:55:00Z" + ], + "current": 33 + }, + "analysis": "20260206161000", + "analyses": "20260206161000,20260206160000", + "extent": { + "minLon": 109.9971, + "minLat": -47.0024, + "maxLon": 158.0029, + "maxLat": -6.9976, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 134, + "attribution": null, + "type": "png", + "title": "Eastern Asia Weather Radar Composite", + "description": "Real-time weather radar composite for Eastern Asia + radar forecast + precipitation type", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:16:08Z", + "available": [ + "2026-02-05T16:10:00Z", + "2026-02-05T16:20:00Z", + "2026-02-05T16:30:00Z", + "2026-02-05T16:40:00Z", + "2026-02-05T16:50:00Z", + "2026-02-05T17:00:00Z", + "2026-02-05T17:10:00Z", + "2026-02-05T17:20:00Z", + "2026-02-05T17:30:00Z", + "2026-02-05T17:40:00Z", + "2026-02-05T17:50:00Z", + "2026-02-05T18:00:00Z", + "2026-02-05T18:10:00Z", + "2026-02-05T18:20:00Z", + "2026-02-05T18:30:00Z", + "2026-02-05T18:40:00Z", + "2026-02-05T18:50:00Z", + "2026-02-05T19:00:00Z", + "2026-02-05T19:10:00Z", + "2026-02-05T19:20:00Z", + "2026-02-05T19:30:00Z", + "2026-02-05T19:40:00Z", + "2026-02-05T19:50:00Z", + "2026-02-05T20:00:00Z", + "2026-02-05T20:10:00Z", + "2026-02-05T20:20:00Z", + "2026-02-05T20:30:00Z", + "2026-02-05T20:40:00Z", + "2026-02-05T20:50:00Z", + "2026-02-05T21:00:00Z", + "2026-02-05T21:10:00Z", + "2026-02-05T21:20:00Z", + "2026-02-05T21:30:00Z", + "2026-02-05T21:40:00Z", + "2026-02-05T21:50:00Z", + "2026-02-05T22:00:00Z", + "2026-02-05T22:10:00Z", + "2026-02-05T22:20:00Z", + "2026-02-05T22:30:00Z", + "2026-02-05T22:40:00Z", + "2026-02-05T22:50:00Z", + "2026-02-05T23:00:00Z", + "2026-02-05T23:10:00Z", + "2026-02-05T23:20:00Z", + "2026-02-05T23:30:00Z", + "2026-02-05T23:40:00Z", + "2026-02-05T23:50:00Z", + "2026-02-06T00:00:00Z", + "2026-02-06T00:10:00Z", + "2026-02-06T00:20:00Z", + "2026-02-06T00:30:00Z", + "2026-02-06T00:40:00Z", + "2026-02-06T00:50:00Z", + "2026-02-06T01:00:00Z", + "2026-02-06T01:10:00Z", + "2026-02-06T01:20:00Z", + "2026-02-06T01:30:00Z", + "2026-02-06T01:40:00Z", + "2026-02-06T01:50:00Z", + "2026-02-06T02:00:00Z", + "2026-02-06T02:10:00Z", + "2026-02-06T02:20:00Z", + "2026-02-06T02:30:00Z", + "2026-02-06T02:40:00Z", + "2026-02-06T02:50:00Z", + "2026-02-06T03:00:00Z", + "2026-02-06T03:10:00Z", + "2026-02-06T03:20:00Z", + "2026-02-06T03:30:00Z", + "2026-02-06T03:40:00Z", + "2026-02-06T03:50:00Z", + "2026-02-06T04:00:00Z", + "2026-02-06T04:10:00Z", + "2026-02-06T04:20:00Z", + "2026-02-06T04:30:00Z", + "2026-02-06T04:40:00Z", + "2026-02-06T04:50:00Z", + "2026-02-06T05:00:00Z", + "2026-02-06T05:10:00Z", + "2026-02-06T05:20:00Z", + "2026-02-06T05:30:00Z", + "2026-02-06T05:40:00Z", + "2026-02-06T05:50:00Z", + "2026-02-06T06:00:00Z", + "2026-02-06T06:10:00Z", + "2026-02-06T06:20:00Z", + "2026-02-06T06:30:00Z", + "2026-02-06T06:40:00Z", + "2026-02-06T06:50:00Z", + "2026-02-06T07:00:00Z", + "2026-02-06T07:10:00Z", + "2026-02-06T07:20:00Z", + "2026-02-06T07:30:00Z", + "2026-02-06T07:40:00Z", + "2026-02-06T07:50:00Z", + "2026-02-06T08:00:00Z", + "2026-02-06T08:10:00Z", + "2026-02-06T08:20:00Z", + "2026-02-06T08:30:00Z", + "2026-02-06T08:40:00Z", + "2026-02-06T08:50:00Z", + "2026-02-06T09:00:00Z", + "2026-02-06T09:10:00Z", + "2026-02-06T09:20:00Z", + "2026-02-06T09:30:00Z", + "2026-02-06T09:40:00Z", + "2026-02-06T09:50:00Z", + "2026-02-06T10:00:00Z", + "2026-02-06T10:10:00Z", + "2026-02-06T10:20:00Z", + "2026-02-06T10:30:00Z", + "2026-02-06T10:40:00Z", + "2026-02-06T10:50:00Z", + "2026-02-06T11:00:00Z", + "2026-02-06T11:10:00Z", + "2026-02-06T11:20:00Z", + "2026-02-06T11:30:00Z", + "2026-02-06T11:40:00Z", + "2026-02-06T11:50:00Z", + "2026-02-06T12:00:00Z", + "2026-02-06T12:10:00Z", + "2026-02-06T12:20:00Z", + "2026-02-06T12:30:00Z", + "2026-02-06T12:40:00Z", + "2026-02-06T12:50:00Z", + "2026-02-06T13:00:00Z", + "2026-02-06T13:10:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:50:00Z" + ], + "current": 145 + }, + "analysis": "20260206160000", + "analyses": "20260206160000,20260206160000", + "extent": { + "minLon": 115, + "minLat": 18, + "maxLon": 150, + "maxLat": 48, + "minZoom": 2, + "maxZoom": 21 + } + }, + { + "id": 141, + "attribution": "Eumetnet", + "type": "png", + "title": "5 minute Europe Weather Radar Composite with lightning", + "description": "Real-time weather radar composite for Europe in 1km resolution + radar forecast + precipitation type + lightning", + "formats": [ + "image/png" + ], + "colorschemes": [ + "default", + "radar-coverage", + "radar-nomask" + ], + "times": { + "updated": "2026-02-06T16:14:43Z", + "available": [ + "2026-02-06T13:10:00Z", + "2026-02-06T13:15:00Z", + "2026-02-06T13:20:00Z", + "2026-02-06T13:25:00Z", + "2026-02-06T13:30:00Z", + "2026-02-06T13:35:00Z", + "2026-02-06T13:40:00Z", + "2026-02-06T13:45:00Z", + "2026-02-06T13:50:00Z", + "2026-02-06T13:55:00Z", + "2026-02-06T14:00:00Z", + "2026-02-06T14:05:00Z", + "2026-02-06T14:10:00Z", + "2026-02-06T14:15:00Z", + "2026-02-06T14:20:00Z", + "2026-02-06T14:25:00Z", + "2026-02-06T14:30:00Z", + "2026-02-06T14:35:00Z", + "2026-02-06T14:40:00Z", + "2026-02-06T14:45:00Z", + "2026-02-06T14:50:00Z", + "2026-02-06T14:55:00Z", + "2026-02-06T15:00:00Z", + "2026-02-06T15:05:00Z", + "2026-02-06T15:10:00Z", + "2026-02-06T15:15:00Z", + "2026-02-06T15:20:00Z", + "2026-02-06T15:25:00Z", + "2026-02-06T15:30:00Z", + "2026-02-06T15:35:00Z", + "2026-02-06T15:40:00Z", + "2026-02-06T15:45:00Z", + "2026-02-06T15:50:00Z", + "2026-02-06T15:55:00Z", + "2026-02-06T16:00:00Z", + "2026-02-06T16:05:00Z", + "2026-02-06T16:10:00Z", + "2026-02-06T16:15:00Z", + "2026-02-06T16:20:00Z", + "2026-02-06T16:25:00Z", + "2026-02-06T16:30:00Z", + "2026-02-06T16:35:00Z", + "2026-02-06T16:40:00Z", + "2026-02-06T16:45:00Z", + "2026-02-06T16:50:00Z", + "2026-02-06T16:55:00Z", + "2026-02-06T17:00:00Z", + "2026-02-06T17:05:00Z", + "2026-02-06T17:10:00Z", + "2026-02-06T17:15:00Z", + "2026-02-06T17:20:00Z", + "2026-02-06T17:25:00Z", + "2026-02-06T17:30:00Z", + "2026-02-06T17:35:00Z", + "2026-02-06T17:40:00Z", + "2026-02-06T17:45:00Z", + "2026-02-06T17:50:00Z", + "2026-02-06T17:55:00Z", + "2026-02-06T18:00:00Z", + "2026-02-06T18:05:00Z", + "2026-02-06T18:10:00Z", + "2026-02-06T18:15:00Z", + "2026-02-06T18:20:00Z", + "2026-02-06T18:25:00Z" + ], + "current": 38 + }, + "analysis": "20260206160500", + "analyses": "20260206160500,20260206160000", + "extent": { + "minLon": -39.522, + "minLat": 31.752, + "maxLon": 57.792, + "maxLat": 73.926, + "minZoom": 2, + "maxZoom": 21 + } + } + ] +} \ No newline at end of file From 59b4df45ef40702c3a157972bd227618825ac8cb Mon Sep 17 00:00:00 2001 From: Belfagor2005 <72314956+Belfagor2005@users.noreply.github.com> Date: Mon, 9 Feb 2026 11:36:19 +0100 Subject: [PATCH 4/4] Delete foreca_capabilities.json --- foreca_capabilities.json | 4685 -------------------------------------- 1 file changed, 4685 deletions(-) delete mode 100644 foreca_capabilities.json diff --git a/foreca_capabilities.json b/foreca_capabilities.json deleted file mode 100644 index 3683c24..0000000 --- a/foreca_capabilities.json +++ /dev/null @@ -1,4685 +0,0 @@ -{ - "images": [ - { - "id": 2, - "attribution": null, - "type": "png", - "title": "Temperature", - "description": "Global surface temperature", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "tempdata-mapped-noalpha", - "temp-fahrenheit", - "temp-fahrenheit-noalpha" - ], - "times": { - "updated": "2026-02-06T06:56:26Z", - "available": [ - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T16:00:00Z", - "2026-02-07T17:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T19:00:00Z", - "2026-02-07T20:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-07T22:00:00Z", - "2026-02-07T23:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T01:00:00Z", - "2026-02-08T02:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T04:00:00Z", - "2026-02-08T05:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T07:00:00Z", - "2026-02-08T08:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T10:00:00Z", - "2026-02-08T11:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z", - "2026-02-10T03:00:00Z", - "2026-02-10T06:00:00Z", - "2026-02-10T09:00:00Z", - "2026-02-10T12:00:00Z", - "2026-02-10T15:00:00Z", - "2026-02-10T18:00:00Z", - "2026-02-10T21:00:00Z", - "2026-02-11T00:00:00Z", - "2026-02-11T03:00:00Z", - "2026-02-11T06:00:00Z", - "2026-02-11T09:00:00Z", - "2026-02-11T12:00:00Z", - "2026-02-11T15:00:00Z", - "2026-02-11T18:00:00Z", - "2026-02-11T21:00:00Z", - "2026-02-12T00:00:00Z" - ], - "current": 25 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 3, - "attribution": null, - "type": "windsvg", - "title": "Wind symbol", - "description": "Wind symbol with wind speed and direction", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T06:03:17Z", - "available": [ - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z" - ], - "current": 37 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 4, - "attribution": null, - "type": "png", - "title": "Cloud cover", - "description": "Global cloud cover forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "cloudpretty-noalpha" - ], - "times": { - "updated": "2026-02-06T15:41:12Z", - "available": [ - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T16:00:00Z", - "2026-02-07T17:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z" - ], - "current": 21 - }, - "analysis": "20260206060000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 8, - "attribution": null, - "type": "png", - "title": "Wind", - "description": "Global wind forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "winds-noalpha", - "winds-mph", - "winds-mph-noalpha" - ], - "times": { - "updated": "2026-02-06T06:03:17Z", - "available": [ - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z" - ], - "current": 37 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 5, - "attribution": "EUMETNET", - "type": "png", - "title": "Europe precipitation radar and forecast", - "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (EU)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:11:20Z", - "available": [ - "2026-02-05T14:15:00Z", - "2026-02-05T14:30:00Z", - "2026-02-05T14:45:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T15:15:00Z", - "2026-02-05T15:30:00Z", - "2026-02-05T15:45:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T16:15:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:45:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:15:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:45:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:15:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:45:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:15:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:45:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:15:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:45:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:15:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:45:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:15:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:45:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:15:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:45:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:15:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:45:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:15:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:45:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:15:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:45:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:15:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:45:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:15:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:45:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:15:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:45:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:15:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:45:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:15:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:45:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:15:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:45:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:15:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:45:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:15:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:45:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:15:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:45:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:15:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:45:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:45:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T19:15:00Z", - "2026-02-06T19:30:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z" - ], - "current": 104 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000,20260206000000", - "extent": { - "minLon": -89.91202346, - "minLat": -40.89080609, - "maxLon": 89.91202346, - "maxLat": 79.171, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 10, - "attribution": "NWS, EC", - "type": "png", - "title": "North America radar and precipitation forecast", - "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (North America)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:14:43Z", - "available": [ - "2026-02-06T04:15:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:25:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:35:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:45:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T04:55:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:05:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:15:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:25:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:35:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:45:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T05:55:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:05:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:15:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:25:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:35:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:45:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T06:55:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:05:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:15:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:25:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:35:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:45:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T07:55:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:05:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:15:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:25:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:35:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:45:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T08:55:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:05:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:15:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:25:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:35:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:45:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T09:55:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:05:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:15:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:25:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:35:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:45:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T10:55:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:05:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:15:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:25:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:35:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:45:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T11:55:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:05:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:15:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:25:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:35:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:45:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T12:55:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:05:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:25:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:35:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T13:55:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:05:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:25:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:35:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T14:55:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:05:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:25:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:35:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T15:55:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:05:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:25:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:35:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T16:55:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:05:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:25:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:35:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T17:55:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:05:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:25:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:35:00Z", - "2026-02-06T18:40:00Z", - "2026-02-06T18:45:00Z", - "2026-02-06T18:50:00Z", - "2026-02-06T18:55:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T19:05:00Z", - "2026-02-06T19:10:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z" - ], - "current": 145 - }, - "analysis": "20260206161000", - "analyses": "20260206161000,20260206160000,20260206000000", - "extent": { - "minLon": -180, - "minLat": -72.8, - "maxLon": 180, - "maxLat": 72.8, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 39, - "attribution": null, - "type": "png", - "title": "Eastern Asia radar and precipitation forecast", - "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (Eastern Asia)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:16:17Z", - "available": [ - "2026-02-05T16:10:00Z", - "2026-02-05T16:20:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:40:00Z", - "2026-02-05T16:50:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:10:00Z", - "2026-02-05T17:20:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:40:00Z", - "2026-02-05T17:50:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:10:00Z", - "2026-02-05T18:20:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:40:00Z", - "2026-02-05T18:50:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:10:00Z", - "2026-02-05T19:20:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:40:00Z", - "2026-02-05T19:50:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:10:00Z", - "2026-02-05T20:20:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:40:00Z", - "2026-02-05T20:50:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:10:00Z", - "2026-02-05T21:20:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:40:00Z", - "2026-02-05T21:50:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:10:00Z", - "2026-02-05T22:20:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:40:00Z", - "2026-02-05T22:50:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:10:00Z", - "2026-02-05T23:20:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:40:00Z", - "2026-02-05T23:50:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:10:00Z", - "2026-02-06T00:20:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:40:00Z", - "2026-02-06T00:50:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:10:00Z", - "2026-02-06T01:20:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:40:00Z", - "2026-02-06T01:50:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:10:00Z", - "2026-02-06T02:20:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:40:00Z", - "2026-02-06T02:50:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:10:00Z", - "2026-02-06T03:20:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:40:00Z", - "2026-02-06T03:50:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:10:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z" - ], - "current": 145 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000,20260206000000", - "extent": { - "minLon": 90, - "minLat": 0, - "maxLon": 180, - "maxLat": 67, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 21, - "attribution": "BOM AU", - "type": "png", - "title": "Australia precipitation radar and forecast", - "description": "Radar + radar forecast + cell simulated precipitation with precipitation type (Australia)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:16:09Z", - "available": [ - "2026-02-05T16:20:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:40:00Z", - "2026-02-05T16:50:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:10:00Z", - "2026-02-05T17:20:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:40:00Z", - "2026-02-05T17:50:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:10:00Z", - "2026-02-05T18:20:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:40:00Z", - "2026-02-05T18:50:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:10:00Z", - "2026-02-05T19:20:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:40:00Z", - "2026-02-05T19:50:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:10:00Z", - "2026-02-05T20:20:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:40:00Z", - "2026-02-05T20:50:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:10:00Z", - "2026-02-05T21:20:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:40:00Z", - "2026-02-05T21:50:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:10:00Z", - "2026-02-05T22:20:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:40:00Z", - "2026-02-05T22:50:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:10:00Z", - "2026-02-05T23:20:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:40:00Z", - "2026-02-05T23:50:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:10:00Z", - "2026-02-06T00:20:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:40:00Z", - "2026-02-06T00:50:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:10:00Z", - "2026-02-06T01:20:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:40:00Z", - "2026-02-06T01:50:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:10:00Z", - "2026-02-06T02:20:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:40:00Z", - "2026-02-06T02:50:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:10:00Z", - "2026-02-06T03:20:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:40:00Z", - "2026-02-06T03:50:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:10:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:40:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z" - ], - "current": 144 - }, - "analysis": "20260206161000", - "analyses": "20260206161000,20260206161000,20260206000000", - "extent": { - "minLon": -180, - "minLat": -72.8, - "maxLon": 180, - "maxLat": 72.8, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 14, - "attribution": "Copyright 2022 EUMETSAT", - "type": "png", - "title": "Satellite", - "description": "Cloud cover from satellite", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T15:28:17Z", - "available": [ - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z" - ], - "current": 31 - }, - "analysis": "20260206150000", - "extent": { - "minLon": -180, - "minLat": -79.171, - "maxLon": 180, - "maxLat": 79.171, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 22, - "attribution": null, - "type": "png", - "title": "Precipitation forecast", - "description": "Global precipitation forecast with precipitation type", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "data-pt-lw" - ], - "times": { - "updated": "2026-02-06T07:12:03Z", - "available": [ - "2026-02-05T18:00:00Z", - "2026-02-05T18:15:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:45:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:15:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:45:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:15:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:45:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:15:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:45:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:15:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:45:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:15:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:45:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:15:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:45:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:15:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:45:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:15:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:45:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:15:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:45:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:15:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:45:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:15:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:45:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:15:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:45:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:15:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:45:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:15:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:45:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:15:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:45:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:15:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:45:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:15:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:45:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:15:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:45:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:45:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T19:15:00Z", - "2026-02-06T19:30:00Z", - "2026-02-06T19:45:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T20:15:00Z", - "2026-02-06T20:30:00Z", - "2026-02-06T20:45:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z" - ], - "current": 89 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -65.0116, - "maxLon": 180, - "maxLat": 79.963, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 9, - "attribution": null, - "type": "png", - "title": "UV Index", - "description": "Global UV index forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "uvi-noalpha" - ], - "times": { - "updated": "2026-02-06T10:15:10Z", - "available": [ - "2026-02-05T12:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-10T12:00:00Z", - "2026-02-11T12:00:00Z" - ], - "current": 1 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 43, - "attribution": null, - "type": "png", - "title": "Sea temperature", - "description": "Global sea temperature", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "sea-temp-fahrenheit" - ], - "times": { - "updated": "2026-02-06T06:10:07Z", - "available": [ - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T16:00:00Z", - "2026-02-07T17:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T19:00:00Z", - "2026-02-07T20:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-07T22:00:00Z", - "2026-02-07T23:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T01:00:00Z", - "2026-02-08T02:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T04:00:00Z", - "2026-02-08T05:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T07:00:00Z", - "2026-02-08T08:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T10:00:00Z", - "2026-02-08T11:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z", - "2026-02-10T03:00:00Z", - "2026-02-10T06:00:00Z", - "2026-02-10T09:00:00Z", - "2026-02-10T12:00:00Z", - "2026-02-10T15:00:00Z", - "2026-02-10T18:00:00Z", - "2026-02-10T21:00:00Z", - "2026-02-11T00:00:00Z", - "2026-02-11T03:00:00Z", - "2026-02-11T06:00:00Z", - "2026-02-11T09:00:00Z", - "2026-02-11T12:00:00Z", - "2026-02-11T15:00:00Z", - "2026-02-11T18:00:00Z", - "2026-02-11T21:00:00Z", - "2026-02-12T00:00:00Z" - ], - "current": 25 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 81, - "attribution": null, - "type": "png", - "title": "Mean sea level pressure", - "description": "Mean sea level pressure (contour)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T06:11:30Z", - "available": [ - "2026-02-05T03:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z" - ], - "current": 12 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 4, - "maxZoom": 14 - } - }, - { - "id": 80, - "attribution": null, - "type": "png", - "title": "Mean sea level pressure", - "description": "Mean sea level pressure (colored)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "pres-color-noalpha" - ], - "times": { - "updated": "2026-02-06T06:11:30Z", - "available": [ - "2026-02-05T03:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z" - ], - "current": 12 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -179.8, - "minLat": -89.6, - "maxLon": 180, - "maxLat": 89.6, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 79, - "attribution": "Copernicus", - "type": "png", - "title": "Air quality index", - "description": "Global air quality index + forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "aqi-noalpha", - "aqi-muted-transparent", - "aqi-muted-noalpha" - ], - "times": { - "updated": "2026-02-06T15:58:32Z", - "available": [ - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z" - ], - "current": 15 - }, - "analysis": "20260206140000", - "extent": { - "minLon": -179.8, - "minLat": -89.6, - "maxLon": 180, - "maxLat": 89.6, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 77, - "attribution": null, - "type": "png", - "title": "Approximate snow depth", - "description": "Approximation of global snow depth", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "snow-depth-in" - ], - "times": { - "updated": "2026-02-06T06:09:11Z", - "available": [ - "2026-02-05T15:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z", - "2026-02-08T15:00:00Z", - "2026-02-08T18:00:00Z", - "2026-02-08T21:00:00Z", - "2026-02-09T00:00:00Z", - "2026-02-09T03:00:00Z", - "2026-02-09T06:00:00Z", - "2026-02-09T09:00:00Z", - "2026-02-09T12:00:00Z", - "2026-02-09T15:00:00Z", - "2026-02-09T18:00:00Z", - "2026-02-09T21:00:00Z", - "2026-02-10T00:00:00Z", - "2026-02-10T03:00:00Z", - "2026-02-10T06:00:00Z", - "2026-02-10T09:00:00Z", - "2026-02-10T12:00:00Z", - "2026-02-10T15:00:00Z", - "2026-02-10T18:00:00Z", - "2026-02-10T21:00:00Z", - "2026-02-11T00:00:00Z", - "2026-02-11T03:00:00Z", - "2026-02-11T06:00:00Z", - "2026-02-11T09:00:00Z", - "2026-02-11T12:00:00Z", - "2026-02-11T15:00:00Z", - "2026-02-11T18:00:00Z", - "2026-02-11T21:00:00Z", - "2026-02-12T00:00:00Z", - "2026-02-12T06:00:00Z", - "2026-02-12T12:00:00Z", - "2026-02-12T18:00:00Z", - "2026-02-13T00:00:00Z", - "2026-02-13T06:00:00Z", - "2026-02-13T12:00:00Z", - "2026-02-13T18:00:00Z", - "2026-02-14T00:00:00Z", - "2026-02-14T06:00:00Z", - "2026-02-14T12:00:00Z", - "2026-02-14T18:00:00Z", - "2026-02-15T00:00:00Z", - "2026-02-15T06:00:00Z", - "2026-02-15T12:00:00Z", - "2026-02-15T18:00:00Z", - "2026-02-16T00:00:00Z" - ], - "current": 8 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 45, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Ragweed pollen forecast", - "description": "Ragweed pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:12Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 47, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Alder pollen forecast", - "description": "Alder pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:13Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 48, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Birch pollen forecast", - "description": "Birch pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:12Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 49, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Olive pollen forecast", - "description": "Olive pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:12Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 50, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Grass pollen forecast", - "description": "Grass pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:12Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 51, - "attribution": "Copernicus Climate Change Service", - "type": "png", - "title": "Mugwort pollen forecast", - "description": "Mugwort pollen forecast for Europe", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T10:05:12Z", - "available": [ - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z", - "2026-02-08T09:00:00Z", - "2026-02-08T12:00:00Z" - ], - "current": 39 - }, - "analysis": "20260206000000", - "extent": { - "minLon": -44.967, - "minLat": 21.9889, - "maxLon": 45.0549, - "maxLat": 74.0391, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 91, - "attribution": "TMD", - "type": "png", - "title": "Thailand Weather Radar Composite", - "description": "Real-time weather radar composite for Thailand + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:18:20Z", - "available": [ - "2026-02-06T08:15:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:45:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:15:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:45:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:15:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:45:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:15:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:45:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:15:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:45:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:15:00Z" - ], - "current": 32 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000", - "extent": { - "minLon": 95.05, - "minLat": 4.04, - "maxLon": 107.96, - "maxLat": 22.45, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 90, - "attribution": "MGM", - "type": "png", - "title": "Turkey Weather Radar Composite", - "description": "Real-time weather radar composite for Turkey + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:09:10Z", - "available": [ - "2026-02-06T12:48:00Z", - "2026-02-06T12:54:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:06:00Z", - "2026-02-06T13:12:00Z", - "2026-02-06T13:18:00Z", - "2026-02-06T13:24:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:36:00Z", - "2026-02-06T13:42:00Z", - "2026-02-06T13:48:00Z", - "2026-02-06T13:54:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:06:00Z", - "2026-02-06T14:12:00Z", - "2026-02-06T14:18:00Z", - "2026-02-06T14:24:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:36:00Z", - "2026-02-06T14:42:00Z", - "2026-02-06T14:48:00Z", - "2026-02-06T14:54:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:06:00Z", - "2026-02-06T15:12:00Z", - "2026-02-06T15:18:00Z", - "2026-02-06T15:24:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:36:00Z", - "2026-02-06T15:42:00Z", - "2026-02-06T15:48:00Z", - "2026-02-06T15:54:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:06:00Z", - "2026-02-06T16:12:00Z", - "2026-02-06T16:18:00Z", - "2026-02-06T16:24:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:36:00Z", - "2026-02-06T16:42:00Z", - "2026-02-06T16:48:00Z", - "2026-02-06T16:54:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:06:00Z", - "2026-02-06T17:12:00Z", - "2026-02-06T17:18:00Z", - "2026-02-06T17:24:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:36:00Z", - "2026-02-06T17:42:00Z" - ], - "current": 35 - }, - "analysis": "20260206155400", - "analyses": "20260206155400,20260206154800", - "extent": { - "minLon": 23.0049, - "minLat": 33.0099, - "maxLon": 47.9951, - "maxLat": 44.996464, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 89, - "attribution": "DECEA", - "type": "png", - "title": "Brazil Weather Radar Composite", - "description": "Real-time weather radar composite for Brazil + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:10:24Z", - "available": [ - "2026-02-06T05:40:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:20:00Z" - ], - "current": 32 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000", - "extent": { - "minLon": -76.4, - "minLat": -35.63, - "maxLon": -30.95, - "maxLat": 6.5, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 92, - "attribution": "METMALAYSIA", - "type": "png", - "title": "East Malaysia Weather Radar Composite", - "description": "Real-time weather radar composite for Eest Malaysia + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:14:00Z", - "available": [ - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z" - ], - "current": 33 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000", - "extent": { - "minLon": 107.08, - "minLat": -1.49, - "maxLon": 121.23, - "maxLat": 9.16, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 93, - "attribution": "METMALAYSIA", - "type": "png", - "title": "Peninsular Malaysia Weather Radar Composite", - "description": "Real-time weather radar composite for Peninsular Malaysia + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2026-02-06T16:13:06Z", - "available": [ - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z" - ], - "current": 33 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000", - "extent": { - "minLon": 96.929, - "minLat": -1.280956336, - "maxLon": 106.318, - "maxLat": 8.961585663, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 114, - "attribution": null, - "type": "png", - "title": "Canary Weather Radar Composite", - "description": "Real-time weather radar composite for Canary Islands + radar forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage" - ], - "times": { - "updated": "2025-08-18T10:54:47Z", - "available": [ - "2025-08-18T02:30:00Z", - "2025-08-18T02:40:00Z", - "2025-08-18T02:50:00Z", - "2025-08-18T03:00:00Z", - "2025-08-18T03:10:00Z", - "2025-08-18T03:20:00Z", - "2025-08-18T03:30:00Z", - "2025-08-18T03:40:00Z", - "2025-08-18T03:50:00Z", - "2025-08-18T04:00:00Z", - "2025-08-18T04:10:00Z", - "2025-08-18T04:20:00Z", - "2025-08-18T04:30:00Z", - "2025-08-18T04:40:00Z", - "2025-08-18T04:50:00Z", - "2025-08-18T05:00:00Z", - "2025-08-18T05:10:00Z", - "2025-08-18T05:20:00Z", - "2025-08-18T05:30:00Z", - "2025-08-18T05:50:00Z", - "2025-08-18T06:00:00Z", - "2025-08-18T06:10:00Z", - "2025-08-18T06:20:00Z", - "2025-08-18T06:30:00Z", - "2025-08-18T06:40:00Z", - "2025-08-18T06:50:00Z", - "2025-08-18T07:00:00Z", - "2025-08-18T07:10:00Z", - "2025-08-18T07:20:00Z", - "2025-08-18T07:30:00Z", - "2025-08-18T07:40:00Z", - "2025-08-18T07:50:00Z", - "2025-08-18T08:00:00Z", - "2025-08-18T08:10:00Z", - "2025-08-18T08:20:00Z", - "2025-08-18T08:30:00Z", - "2025-08-18T08:40:00Z", - "2025-08-18T08:50:00Z", - "2025-08-18T09:00:00Z", - "2025-08-18T09:20:00Z", - "2025-08-18T09:30:00Z", - "2025-08-18T09:40:00Z", - "2025-08-18T09:50:00Z", - "2025-08-18T10:00:00Z", - "2025-08-18T10:10:00Z", - "2025-08-18T10:20:00Z", - "2025-08-18T10:30:00Z", - "2025-08-18T10:40:00Z", - "2025-08-18T10:50:00Z", - "2025-08-18T11:00:00Z", - "2025-08-18T11:10:00Z", - "2025-08-18T11:20:00Z", - "2025-08-18T11:30:00Z", - "2025-08-18T11:40:00Z", - "2025-08-18T11:50:00Z", - "2025-08-18T12:00:00Z", - "2025-08-18T12:10:00Z", - "2025-08-18T12:20:00Z", - "2025-08-18T12:30:00Z", - "2025-08-18T12:40:00Z", - "2025-08-18T12:50:00Z", - "2025-08-18T13:00:00Z", - "2025-08-18T13:10:00Z", - "2025-08-18T13:20:00Z", - "2025-08-18T13:30:00Z", - "2025-08-18T13:40:00Z", - "2025-08-18T13:50:00Z", - "2025-08-18T14:00:00Z", - "2025-08-18T14:10:00Z", - "2025-08-18T14:20:00Z", - "2025-08-18T14:30:00Z" - ], - "current": 70 - }, - "analysis": "20250818104000", - "analyses": "20250818104000,20250818104000", - "extent": { - "minLon": -18.5128, - "minLat": 25.5102, - "maxLon": -12.8429, - "maxLat": 30.5118, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 115, - "attribution": "Eumetnet", - "type": "png", - "title": "5 minute Europe Weather Radar Composite", - "description": "Real-time weather radar composite for Europe in 1km resolution + radar forecast + precipitation type", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:14:43Z", - "available": [ - "2026-02-06T13:10:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:25:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:35:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T13:55:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:05:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:25:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:35:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T14:55:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:05:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:25:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:35:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T15:55:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:05:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:25:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:35:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T16:55:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:05:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:25:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:35:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T17:55:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:05:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:25:00Z" - ], - "current": 38 - }, - "analysis": "20260206160500", - "analyses": "20260206160500,20260206160000", - "extent": { - "minLon": -39.522, - "minLat": 31.752, - "maxLon": 57.792, - "maxLat": 73.926, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 123, - "attribution": "NWS", - "type": "png", - "title": "North America radar with lightning and radar forecast", - "description": "Real-time weather radar composite for North America + radar forecast + precipitation type + lightning", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:14:33Z", - "available": [ - "2026-02-06T04:15:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:25:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:35:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:45:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T04:55:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:05:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:15:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:25:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:35:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:45:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T05:55:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:05:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:15:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:25:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:35:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:45:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T06:55:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:05:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:15:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:25:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:35:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:45:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T07:55:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:05:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:15:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:25:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:35:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:45:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T08:55:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:05:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:15:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:25:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:35:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:45:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T09:55:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:05:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:15:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:25:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:35:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:45:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T10:55:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:05:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:15:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:25:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:35:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:45:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T11:55:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:05:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:15:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:25:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:35:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:45:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T12:55:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:05:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:25:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:35:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T13:55:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:05:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:25:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:35:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T14:55:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:05:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:25:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:35:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T15:55:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:05:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:25:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:35:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T16:55:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:05:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:25:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:35:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T17:55:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:05:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:25:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:35:00Z", - "2026-02-06T18:40:00Z", - "2026-02-06T18:45:00Z", - "2026-02-06T18:50:00Z", - "2026-02-06T18:55:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T19:05:00Z", - "2026-02-06T19:10:00Z" - ], - "current": 145 - }, - "analysis": "20260206161000", - "analyses": "20260206161500,20260206160000", - "extent": { - "minLon": -170.502, - "minLat": 13.5018, - "maxLon": -50.0043, - "maxLat": 69.9999, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 130, - "attribution": null, - "type": "png", - "title": "Satellite and cloud forecast", - "description": "Satellite observations + cloud forecast", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T15:28:17Z", - "available": [ - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T19:00:00Z", - "2026-02-06T20:00:00Z", - "2026-02-06T21:00:00Z", - "2026-02-06T22:00:00Z", - "2026-02-06T23:00:00Z", - "2026-02-07T00:00:00Z", - "2026-02-07T01:00:00Z", - "2026-02-07T02:00:00Z", - "2026-02-07T03:00:00Z", - "2026-02-07T04:00:00Z", - "2026-02-07T05:00:00Z", - "2026-02-07T06:00:00Z", - "2026-02-07T07:00:00Z", - "2026-02-07T08:00:00Z", - "2026-02-07T09:00:00Z", - "2026-02-07T10:00:00Z", - "2026-02-07T11:00:00Z", - "2026-02-07T12:00:00Z", - "2026-02-07T13:00:00Z", - "2026-02-07T14:00:00Z", - "2026-02-07T15:00:00Z", - "2026-02-07T16:00:00Z", - "2026-02-07T17:00:00Z", - "2026-02-07T18:00:00Z", - "2026-02-07T21:00:00Z", - "2026-02-08T00:00:00Z", - "2026-02-08T03:00:00Z", - "2026-02-08T06:00:00Z" - ], - "current": 32 - }, - "analysis": "20260206150000", - "extent": { - "minLon": -180, - "minLat": -90, - "maxLon": 180, - "maxLat": 90, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 136, - "attribution": null, - "type": "png", - "title": "Europe 1 Hour Radar Precipitation Accumulation", - "description": "Accumulation of precipitation from radar in Europe during an hour.", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T16:14:44Z", - "available": [ - "2026-02-02T09:00:00Z", - "2026-02-02T10:00:00Z", - "2026-02-02T11:00:00Z", - "2026-02-02T12:00:00Z", - "2026-02-02T13:00:00Z", - "2026-02-02T14:00:00Z", - "2026-02-02T15:00:00Z", - "2026-02-02T16:00:00Z", - "2026-02-02T17:00:00Z", - "2026-02-02T18:00:00Z", - "2026-02-02T19:00:00Z", - "2026-02-02T20:00:00Z", - "2026-02-02T21:00:00Z", - "2026-02-02T22:00:00Z", - "2026-02-02T23:00:00Z", - "2026-02-03T00:00:00Z", - "2026-02-03T01:00:00Z", - "2026-02-03T02:00:00Z", - "2026-02-03T03:00:00Z", - "2026-02-03T04:00:00Z", - "2026-02-03T05:00:00Z", - "2026-02-03T06:00:00Z", - "2026-02-03T07:00:00Z", - "2026-02-03T08:00:00Z", - "2026-02-03T09:00:00Z", - "2026-02-03T10:00:00Z", - "2026-02-03T11:00:00Z", - "2026-02-03T12:00:00Z", - "2026-02-03T13:00:00Z", - "2026-02-03T14:00:00Z", - "2026-02-03T15:00:00Z", - "2026-02-03T16:00:00Z", - "2026-02-03T17:00:00Z", - "2026-02-03T18:00:00Z", - "2026-02-03T19:00:00Z", - "2026-02-03T20:00:00Z", - "2026-02-03T21:00:00Z", - "2026-02-03T22:00:00Z", - "2026-02-03T23:00:00Z", - "2026-02-04T00:00:00Z", - "2026-02-04T01:00:00Z", - "2026-02-04T02:00:00Z", - "2026-02-04T03:00:00Z", - "2026-02-04T04:00:00Z", - "2026-02-04T05:00:00Z", - "2026-02-04T06:00:00Z", - "2026-02-04T07:00:00Z", - "2026-02-04T08:00:00Z", - "2026-02-04T09:00:00Z", - "2026-02-04T10:00:00Z", - "2026-02-04T11:00:00Z", - "2026-02-04T12:00:00Z", - "2026-02-04T13:00:00Z", - "2026-02-04T14:00:00Z", - "2026-02-04T15:00:00Z", - "2026-02-04T16:00:00Z", - "2026-02-04T17:00:00Z", - "2026-02-04T18:00:00Z", - "2026-02-04T19:00:00Z", - "2026-02-04T20:00:00Z", - "2026-02-04T21:00:00Z", - "2026-02-04T22:00:00Z", - "2026-02-04T23:00:00Z", - "2026-02-05T00:00:00Z", - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z" - ], - "current": 103 - }, - "analysis": "20260206160000", - "extent": { - "minLon": -39.522, - "minLat": 31.752, - "maxLon": 57.792, - "maxLat": 73.926, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 137, - "attribution": null, - "type": "png", - "title": "Europe 24 Hour Radar Precipitation Accumulation", - "description": "Accumulation of precipitation from radar in Europe during 24 hours.", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T16:15:21Z", - "available": [ - "2026-02-02T09:00:00Z", - "2026-02-02T10:00:00Z", - "2026-02-02T11:00:00Z", - "2026-02-02T12:00:00Z", - "2026-02-02T13:00:00Z", - "2026-02-02T14:00:00Z", - "2026-02-02T15:00:00Z", - "2026-02-02T16:00:00Z", - "2026-02-02T17:00:00Z", - "2026-02-02T18:00:00Z", - "2026-02-02T19:00:00Z", - "2026-02-02T20:00:00Z", - "2026-02-02T21:00:00Z", - "2026-02-02T22:00:00Z", - "2026-02-02T23:00:00Z", - "2026-02-03T00:00:00Z", - "2026-02-03T01:00:00Z", - "2026-02-03T02:00:00Z", - "2026-02-03T03:00:00Z", - "2026-02-03T04:00:00Z", - "2026-02-03T05:00:00Z", - "2026-02-03T06:00:00Z", - "2026-02-03T07:00:00Z", - "2026-02-03T08:00:00Z", - "2026-02-03T09:00:00Z", - "2026-02-03T10:00:00Z", - "2026-02-03T11:00:00Z", - "2026-02-03T12:00:00Z", - "2026-02-03T13:00:00Z", - "2026-02-03T14:00:00Z", - "2026-02-03T15:00:00Z", - "2026-02-03T16:00:00Z", - "2026-02-03T17:00:00Z", - "2026-02-03T18:00:00Z", - "2026-02-03T19:00:00Z", - "2026-02-03T20:00:00Z", - "2026-02-03T21:00:00Z", - "2026-02-03T22:00:00Z", - "2026-02-03T23:00:00Z", - "2026-02-04T00:00:00Z", - "2026-02-04T01:00:00Z", - "2026-02-04T02:00:00Z", - "2026-02-04T03:00:00Z", - "2026-02-04T04:00:00Z", - "2026-02-04T05:00:00Z", - "2026-02-04T06:00:00Z", - "2026-02-04T07:00:00Z", - "2026-02-04T08:00:00Z", - "2026-02-04T09:00:00Z", - "2026-02-04T10:00:00Z", - "2026-02-04T11:00:00Z", - "2026-02-04T12:00:00Z", - "2026-02-04T13:00:00Z", - "2026-02-04T14:00:00Z", - "2026-02-04T15:00:00Z", - "2026-02-04T16:00:00Z", - "2026-02-04T17:00:00Z", - "2026-02-04T18:00:00Z", - "2026-02-04T19:00:00Z", - "2026-02-04T20:00:00Z", - "2026-02-04T21:00:00Z", - "2026-02-04T22:00:00Z", - "2026-02-04T23:00:00Z", - "2026-02-05T00:00:00Z", - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z" - ], - "current": 103 - }, - "analysis": "20260206160000", - "extent": { - "minLon": -39.522, - "minLat": 31.752, - "maxLon": 57.792, - "maxLat": 73.926, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 138, - "attribution": "NWS", - "type": "png", - "title": "North America 1 Hour Radar Precipitation Accumulation", - "description": "Accumulation of precipitation from radar in North America during an hour.", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T16:14:43Z", - "available": [ - "2026-02-02T09:00:00Z", - "2026-02-02T10:00:00Z", - "2026-02-02T11:00:00Z", - "2026-02-02T12:00:00Z", - "2026-02-02T13:00:00Z", - "2026-02-02T14:00:00Z", - "2026-02-02T15:00:00Z", - "2026-02-02T16:00:00Z", - "2026-02-02T17:00:00Z", - "2026-02-02T18:00:00Z", - "2026-02-02T19:00:00Z", - "2026-02-02T20:00:00Z", - "2026-02-02T21:00:00Z", - "2026-02-02T22:00:00Z", - "2026-02-02T23:00:00Z", - "2026-02-03T00:00:00Z", - "2026-02-03T01:00:00Z", - "2026-02-03T02:00:00Z", - "2026-02-03T03:00:00Z", - "2026-02-03T04:00:00Z", - "2026-02-03T05:00:00Z", - "2026-02-03T06:00:00Z", - "2026-02-03T07:00:00Z", - "2026-02-03T08:00:00Z", - "2026-02-03T09:00:00Z", - "2026-02-03T10:00:00Z", - "2026-02-03T11:00:00Z", - "2026-02-03T12:00:00Z", - "2026-02-03T13:00:00Z", - "2026-02-03T14:00:00Z", - "2026-02-03T15:00:00Z", - "2026-02-03T16:00:00Z", - "2026-02-03T17:00:00Z", - "2026-02-03T18:00:00Z", - "2026-02-03T19:00:00Z", - "2026-02-03T20:00:00Z", - "2026-02-03T21:00:00Z", - "2026-02-03T22:00:00Z", - "2026-02-03T23:00:00Z", - "2026-02-04T00:00:00Z", - "2026-02-04T01:00:00Z", - "2026-02-04T02:00:00Z", - "2026-02-04T03:00:00Z", - "2026-02-04T04:00:00Z", - "2026-02-04T05:00:00Z", - "2026-02-04T06:00:00Z", - "2026-02-04T07:00:00Z", - "2026-02-04T08:00:00Z", - "2026-02-04T09:00:00Z", - "2026-02-04T10:00:00Z", - "2026-02-04T11:00:00Z", - "2026-02-04T12:00:00Z", - "2026-02-04T13:00:00Z", - "2026-02-04T14:00:00Z", - "2026-02-04T15:00:00Z", - "2026-02-04T16:00:00Z", - "2026-02-04T17:00:00Z", - "2026-02-04T18:00:00Z", - "2026-02-04T19:00:00Z", - "2026-02-04T20:00:00Z", - "2026-02-04T21:00:00Z", - "2026-02-04T22:00:00Z", - "2026-02-04T23:00:00Z", - "2026-02-05T00:00:00Z", - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z" - ], - "current": 103 - }, - "analysis": "20260206160000", - "extent": { - "minLon": -170.5, - "minLat": 13.5018, - "maxLon": -50.0043, - "maxLat": 69.9999, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 139, - "attribution": "NWS", - "type": "png", - "title": "North America 24 Hour Radar Precipitation Accumulation", - "description": "Accumulation of precipitation from radar in North America during 24 hours.", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default" - ], - "times": { - "updated": "2026-02-06T16:15:14Z", - "available": [ - "2026-02-02T09:00:00Z", - "2026-02-02T10:00:00Z", - "2026-02-02T11:00:00Z", - "2026-02-02T12:00:00Z", - "2026-02-02T13:00:00Z", - "2026-02-02T14:00:00Z", - "2026-02-02T15:00:00Z", - "2026-02-02T16:00:00Z", - "2026-02-02T17:00:00Z", - "2026-02-02T18:00:00Z", - "2026-02-02T19:00:00Z", - "2026-02-02T20:00:00Z", - "2026-02-02T21:00:00Z", - "2026-02-02T22:00:00Z", - "2026-02-02T23:00:00Z", - "2026-02-03T00:00:00Z", - "2026-02-03T01:00:00Z", - "2026-02-03T02:00:00Z", - "2026-02-03T03:00:00Z", - "2026-02-03T04:00:00Z", - "2026-02-03T05:00:00Z", - "2026-02-03T06:00:00Z", - "2026-02-03T07:00:00Z", - "2026-02-03T08:00:00Z", - "2026-02-03T09:00:00Z", - "2026-02-03T10:00:00Z", - "2026-02-03T11:00:00Z", - "2026-02-03T12:00:00Z", - "2026-02-03T13:00:00Z", - "2026-02-03T14:00:00Z", - "2026-02-03T15:00:00Z", - "2026-02-03T16:00:00Z", - "2026-02-03T17:00:00Z", - "2026-02-03T18:00:00Z", - "2026-02-03T19:00:00Z", - "2026-02-03T20:00:00Z", - "2026-02-03T21:00:00Z", - "2026-02-03T22:00:00Z", - "2026-02-03T23:00:00Z", - "2026-02-04T00:00:00Z", - "2026-02-04T01:00:00Z", - "2026-02-04T02:00:00Z", - "2026-02-04T03:00:00Z", - "2026-02-04T04:00:00Z", - "2026-02-04T05:00:00Z", - "2026-02-04T06:00:00Z", - "2026-02-04T07:00:00Z", - "2026-02-04T08:00:00Z", - "2026-02-04T09:00:00Z", - "2026-02-04T10:00:00Z", - "2026-02-04T11:00:00Z", - "2026-02-04T12:00:00Z", - "2026-02-04T13:00:00Z", - "2026-02-04T14:00:00Z", - "2026-02-04T15:00:00Z", - "2026-02-04T16:00:00Z", - "2026-02-04T17:00:00Z", - "2026-02-04T18:00:00Z", - "2026-02-04T19:00:00Z", - "2026-02-04T20:00:00Z", - "2026-02-04T21:00:00Z", - "2026-02-04T22:00:00Z", - "2026-02-04T23:00:00Z", - "2026-02-05T00:00:00Z", - "2026-02-05T01:00:00Z", - "2026-02-05T02:00:00Z", - "2026-02-05T03:00:00Z", - "2026-02-05T04:00:00Z", - "2026-02-05T05:00:00Z", - "2026-02-05T06:00:00Z", - "2026-02-05T07:00:00Z", - "2026-02-05T08:00:00Z", - "2026-02-05T09:00:00Z", - "2026-02-05T10:00:00Z", - "2026-02-05T11:00:00Z", - "2026-02-05T12:00:00Z", - "2026-02-05T13:00:00Z", - "2026-02-05T14:00:00Z", - "2026-02-05T15:00:00Z", - "2026-02-05T16:00:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T23:00:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T16:00:00Z" - ], - "current": 103 - }, - "analysis": "20260206160000", - "extent": { - "minLon": -170.5, - "minLat": 13.5018, - "maxLon": -50.0043, - "maxLat": 69.9999, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 128, - "attribution": "SMN", - "type": "png", - "title": "Mexico Weather Radar Composite", - "description": "Real-time weather radar composite for Mexico", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:18:39Z", - "available": [ - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z" - ], - "current": 33 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206155000", - "extent": { - "minLon": -118.722, - "minLat": 6.4, - "maxLon": -84.6, - "maxLat": 31.5771, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 126, - "attribution": null, - "type": "png", - "title": "Southeast Asia Radar Composite", - "description": "Radar composite (Southeast Asia)", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:18:26Z", - "available": [ - "2026-02-05T16:10:00Z", - "2026-02-05T16:20:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:40:00Z", - "2026-02-05T16:50:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:10:00Z", - "2026-02-05T17:20:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:40:00Z", - "2026-02-05T17:50:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:10:00Z", - "2026-02-05T18:20:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:40:00Z", - "2026-02-05T18:50:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:10:00Z", - "2026-02-05T19:20:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:40:00Z", - "2026-02-05T19:50:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:10:00Z", - "2026-02-05T20:20:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:40:00Z", - "2026-02-05T20:50:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:10:00Z", - "2026-02-05T21:20:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:40:00Z", - "2026-02-05T21:50:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:10:00Z", - "2026-02-05T22:20:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:40:00Z", - "2026-02-05T22:50:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:10:00Z", - "2026-02-05T23:20:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:40:00Z", - "2026-02-05T23:50:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:10:00Z", - "2026-02-06T00:20:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:40:00Z", - "2026-02-06T00:50:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:10:00Z", - "2026-02-06T01:20:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:40:00Z", - "2026-02-06T01:50:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:10:00Z", - "2026-02-06T02:20:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:40:00Z", - "2026-02-06T02:50:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:10:00Z", - "2026-02-06T03:20:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:40:00Z", - "2026-02-06T03:50:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:10:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z" - ], - "current": 145 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206155000", - "extent": { - "minLon": 95.05, - "minLat": -1.49, - "maxLon": 127.5, - "maxLat": 25.3785, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 133, - "attribution": null, - "type": "png", - "title": "Australia Weather Radar Composite", - "description": "Real-time weather radar composite for Australia + radar forecast + precipitation type", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:16:10Z", - "available": [ - "2026-02-05T16:20:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:40:00Z", - "2026-02-05T16:50:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:10:00Z", - "2026-02-05T17:20:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:40:00Z", - "2026-02-05T17:50:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:10:00Z", - "2026-02-05T18:20:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:40:00Z", - "2026-02-05T18:50:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:10:00Z", - "2026-02-05T19:20:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:40:00Z", - "2026-02-05T19:50:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:10:00Z", - "2026-02-05T20:20:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:40:00Z", - "2026-02-05T20:50:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:10:00Z", - "2026-02-05T21:20:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:40:00Z", - "2026-02-05T21:50:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:10:00Z", - "2026-02-05T22:20:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:40:00Z", - "2026-02-05T22:50:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:10:00Z", - "2026-02-05T23:20:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:40:00Z", - "2026-02-05T23:50:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:10:00Z", - "2026-02-06T00:20:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:40:00Z", - "2026-02-06T00:50:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:10:00Z", - "2026-02-06T01:20:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:40:00Z", - "2026-02-06T01:50:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:10:00Z", - "2026-02-06T02:20:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:40:00Z", - "2026-02-06T02:50:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:10:00Z", - "2026-02-06T03:20:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:40:00Z", - "2026-02-06T03:50:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:10:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:30:00Z", - "2026-02-06T18:40:00Z" - ], - "current": 144 - }, - "analysis": "20260206161000", - "analyses": "20260206161000,20260206161000", - "extent": { - "minLon": 106.7, - "minLat": -46.1483, - "maxLon": 159.697, - "maxLat": -6.22399, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 94, - "attribution": null, - "type": "png", - "title": "Australia 1km 5min radar composite", - "description": "Australia radar composite", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-eu" - ], - "times": { - "updated": "2026-02-06T16:16:30Z", - "available": [ - "2026-02-06T13:35:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T13:55:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:05:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:25:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:35:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T14:55:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:05:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:25:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:35:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T15:55:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:05:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:25:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:35:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T16:55:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:05:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:25:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:35:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T17:55:00Z" - ], - "current": 33 - }, - "analysis": "20260206161000", - "analyses": "20260206161000,20260206160000", - "extent": { - "minLon": 109.9971, - "minLat": -47.0024, - "maxLon": 158.0029, - "maxLat": -6.9976, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 134, - "attribution": null, - "type": "png", - "title": "Eastern Asia Weather Radar Composite", - "description": "Real-time weather radar composite for Eastern Asia + radar forecast + precipitation type", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:16:08Z", - "available": [ - "2026-02-05T16:10:00Z", - "2026-02-05T16:20:00Z", - "2026-02-05T16:30:00Z", - "2026-02-05T16:40:00Z", - "2026-02-05T16:50:00Z", - "2026-02-05T17:00:00Z", - "2026-02-05T17:10:00Z", - "2026-02-05T17:20:00Z", - "2026-02-05T17:30:00Z", - "2026-02-05T17:40:00Z", - "2026-02-05T17:50:00Z", - "2026-02-05T18:00:00Z", - "2026-02-05T18:10:00Z", - "2026-02-05T18:20:00Z", - "2026-02-05T18:30:00Z", - "2026-02-05T18:40:00Z", - "2026-02-05T18:50:00Z", - "2026-02-05T19:00:00Z", - "2026-02-05T19:10:00Z", - "2026-02-05T19:20:00Z", - "2026-02-05T19:30:00Z", - "2026-02-05T19:40:00Z", - "2026-02-05T19:50:00Z", - "2026-02-05T20:00:00Z", - "2026-02-05T20:10:00Z", - "2026-02-05T20:20:00Z", - "2026-02-05T20:30:00Z", - "2026-02-05T20:40:00Z", - "2026-02-05T20:50:00Z", - "2026-02-05T21:00:00Z", - "2026-02-05T21:10:00Z", - "2026-02-05T21:20:00Z", - "2026-02-05T21:30:00Z", - "2026-02-05T21:40:00Z", - "2026-02-05T21:50:00Z", - "2026-02-05T22:00:00Z", - "2026-02-05T22:10:00Z", - "2026-02-05T22:20:00Z", - "2026-02-05T22:30:00Z", - "2026-02-05T22:40:00Z", - "2026-02-05T22:50:00Z", - "2026-02-05T23:00:00Z", - "2026-02-05T23:10:00Z", - "2026-02-05T23:20:00Z", - "2026-02-05T23:30:00Z", - "2026-02-05T23:40:00Z", - "2026-02-05T23:50:00Z", - "2026-02-06T00:00:00Z", - "2026-02-06T00:10:00Z", - "2026-02-06T00:20:00Z", - "2026-02-06T00:30:00Z", - "2026-02-06T00:40:00Z", - "2026-02-06T00:50:00Z", - "2026-02-06T01:00:00Z", - "2026-02-06T01:10:00Z", - "2026-02-06T01:20:00Z", - "2026-02-06T01:30:00Z", - "2026-02-06T01:40:00Z", - "2026-02-06T01:50:00Z", - "2026-02-06T02:00:00Z", - "2026-02-06T02:10:00Z", - "2026-02-06T02:20:00Z", - "2026-02-06T02:30:00Z", - "2026-02-06T02:40:00Z", - "2026-02-06T02:50:00Z", - "2026-02-06T03:00:00Z", - "2026-02-06T03:10:00Z", - "2026-02-06T03:20:00Z", - "2026-02-06T03:30:00Z", - "2026-02-06T03:40:00Z", - "2026-02-06T03:50:00Z", - "2026-02-06T04:00:00Z", - "2026-02-06T04:10:00Z", - "2026-02-06T04:20:00Z", - "2026-02-06T04:30:00Z", - "2026-02-06T04:40:00Z", - "2026-02-06T04:50:00Z", - "2026-02-06T05:00:00Z", - "2026-02-06T05:10:00Z", - "2026-02-06T05:20:00Z", - "2026-02-06T05:30:00Z", - "2026-02-06T05:40:00Z", - "2026-02-06T05:50:00Z", - "2026-02-06T06:00:00Z", - "2026-02-06T06:10:00Z", - "2026-02-06T06:20:00Z", - "2026-02-06T06:30:00Z", - "2026-02-06T06:40:00Z", - "2026-02-06T06:50:00Z", - "2026-02-06T07:00:00Z", - "2026-02-06T07:10:00Z", - "2026-02-06T07:20:00Z", - "2026-02-06T07:30:00Z", - "2026-02-06T07:40:00Z", - "2026-02-06T07:50:00Z", - "2026-02-06T08:00:00Z", - "2026-02-06T08:10:00Z", - "2026-02-06T08:20:00Z", - "2026-02-06T08:30:00Z", - "2026-02-06T08:40:00Z", - "2026-02-06T08:50:00Z", - "2026-02-06T09:00:00Z", - "2026-02-06T09:10:00Z", - "2026-02-06T09:20:00Z", - "2026-02-06T09:30:00Z", - "2026-02-06T09:40:00Z", - "2026-02-06T09:50:00Z", - "2026-02-06T10:00:00Z", - "2026-02-06T10:10:00Z", - "2026-02-06T10:20:00Z", - "2026-02-06T10:30:00Z", - "2026-02-06T10:40:00Z", - "2026-02-06T10:50:00Z", - "2026-02-06T11:00:00Z", - "2026-02-06T11:10:00Z", - "2026-02-06T11:20:00Z", - "2026-02-06T11:30:00Z", - "2026-02-06T11:40:00Z", - "2026-02-06T11:50:00Z", - "2026-02-06T12:00:00Z", - "2026-02-06T12:10:00Z", - "2026-02-06T12:20:00Z", - "2026-02-06T12:30:00Z", - "2026-02-06T12:40:00Z", - "2026-02-06T12:50:00Z", - "2026-02-06T13:00:00Z", - "2026-02-06T13:10:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:50:00Z" - ], - "current": 145 - }, - "analysis": "20260206160000", - "analyses": "20260206160000,20260206160000", - "extent": { - "minLon": 115, - "minLat": 18, - "maxLon": 150, - "maxLat": 48, - "minZoom": 2, - "maxZoom": 21 - } - }, - { - "id": 141, - "attribution": "Eumetnet", - "type": "png", - "title": "5 minute Europe Weather Radar Composite with lightning", - "description": "Real-time weather radar composite for Europe in 1km resolution + radar forecast + precipitation type + lightning", - "formats": [ - "image/png" - ], - "colorschemes": [ - "default", - "radar-coverage", - "radar-nomask" - ], - "times": { - "updated": "2026-02-06T16:14:43Z", - "available": [ - "2026-02-06T13:10:00Z", - "2026-02-06T13:15:00Z", - "2026-02-06T13:20:00Z", - "2026-02-06T13:25:00Z", - "2026-02-06T13:30:00Z", - "2026-02-06T13:35:00Z", - "2026-02-06T13:40:00Z", - "2026-02-06T13:45:00Z", - "2026-02-06T13:50:00Z", - "2026-02-06T13:55:00Z", - "2026-02-06T14:00:00Z", - "2026-02-06T14:05:00Z", - "2026-02-06T14:10:00Z", - "2026-02-06T14:15:00Z", - "2026-02-06T14:20:00Z", - "2026-02-06T14:25:00Z", - "2026-02-06T14:30:00Z", - "2026-02-06T14:35:00Z", - "2026-02-06T14:40:00Z", - "2026-02-06T14:45:00Z", - "2026-02-06T14:50:00Z", - "2026-02-06T14:55:00Z", - "2026-02-06T15:00:00Z", - "2026-02-06T15:05:00Z", - "2026-02-06T15:10:00Z", - "2026-02-06T15:15:00Z", - "2026-02-06T15:20:00Z", - "2026-02-06T15:25:00Z", - "2026-02-06T15:30:00Z", - "2026-02-06T15:35:00Z", - "2026-02-06T15:40:00Z", - "2026-02-06T15:45:00Z", - "2026-02-06T15:50:00Z", - "2026-02-06T15:55:00Z", - "2026-02-06T16:00:00Z", - "2026-02-06T16:05:00Z", - "2026-02-06T16:10:00Z", - "2026-02-06T16:15:00Z", - "2026-02-06T16:20:00Z", - "2026-02-06T16:25:00Z", - "2026-02-06T16:30:00Z", - "2026-02-06T16:35:00Z", - "2026-02-06T16:40:00Z", - "2026-02-06T16:45:00Z", - "2026-02-06T16:50:00Z", - "2026-02-06T16:55:00Z", - "2026-02-06T17:00:00Z", - "2026-02-06T17:05:00Z", - "2026-02-06T17:10:00Z", - "2026-02-06T17:15:00Z", - "2026-02-06T17:20:00Z", - "2026-02-06T17:25:00Z", - "2026-02-06T17:30:00Z", - "2026-02-06T17:35:00Z", - "2026-02-06T17:40:00Z", - "2026-02-06T17:45:00Z", - "2026-02-06T17:50:00Z", - "2026-02-06T17:55:00Z", - "2026-02-06T18:00:00Z", - "2026-02-06T18:05:00Z", - "2026-02-06T18:10:00Z", - "2026-02-06T18:15:00Z", - "2026-02-06T18:20:00Z", - "2026-02-06T18:25:00Z" - ], - "current": 38 - }, - "analysis": "20260206160500", - "analyses": "20260206160500,20260206160000", - "extent": { - "minLon": -39.522, - "minLat": 31.752, - "maxLon": 57.792, - "maxLat": 73.926, - "minZoom": 2, - "maxZoom": 21 - } - } - ] -} \ No newline at end of file