It is currently April 1st, 2020, 7:35 am

Discussion about parsing weather.com (JSON part's structure included)

General topics related to Rainmeter.
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Discussion about parsing weather.com (JSON part's structure included)

Post by Yincognito »

I would like to keep my weather skin structure relatively unchanged from the "wxdata days", where I was able to have the weather for "current conditions", today and the following 5 days after today - all in one place, so to speak (i.e. on the same page source that I could regex). Meaning that I would look to make changes only to the URL address, the "super-parent regex" and its children when needed, but keep the same elements / measures / meters as when working with wxdata.

I understood quite easily what the URL must be for a 5 day forecast (e.g. https://weather.com/en-GB/weather/5day/l/#LocationCode# for metric system in English, and https://weather.com/en-US/weather/5day/l/#LocationCode# for the imperial one) and already found the bits I'll get the data from within the page source (i.e. "dayPartName":...), however I have 2 questions:
- where is the data for the "current conditions"? I can't seem to find the today_nowcard string anywhere in the above page's source (metric system used in testing) - please don't tell me that I have to use a different "template" (i.e. parse a second URL) just to get the weather for "now"... :(
- this is more like an observation rather than a question, but I see that although I asked for a 5 day forecast, the last forecasted day in the page source is 2020-02-14, that is 2 weeks / 14 days from now. Is this normal and could this mean that I could forecast for 2 weeks irrespective of the amount of days I specify in the URL address?
Last edited by Yincognito on February 3rd, 2020, 9:41 am, edited 1 time in total.
User avatar
jsmorley
Developer
Posts: 20426
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Discussion about parsing weather.com

Post by jsmorley »

You have to use a different "template" (i.e. parse a second URL) just to get the weather for "now".
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Discussion about parsing weather.com

Post by Yincognito »

jsmorley wrote:
January 31st, 2020, 8:32 pm
You have to use a different "template" (i.e. parse a second URL) just to get the weather for "now".
Actually, after further investigation, it seems I jumped to conclusions too early. The page source for "now" / "current conditions" (i.e. https://weather.com/en-GB/weather/today/l/#LocationCode#) apparently contains the same 2 weeks forecast as the explicit https://weather.com/en-GB/weather/Nday/l/#LocationCode# page source (where N is 5, 10, whatever).

Can you confirm or deny it? I'm just searching the page source of both URL addresses with CTRL+F and I see the same forecasted data, although the first URL address should, in theory, provide only the "now" / "today" conditions. The one difference between the two is that the former page source also contains the data for "now", while the latter does not:

Screenshot for https://weather.com/en-GB/weather/today/l/#LocationCode#:
Weather.com today weather.jpg
You do not have the required permissions to view the files attached to this post.
xenium
Posts: 474
Joined: January 4th, 2018, 9:52 pm

Re: Discussion about parsing weather.com

Post by xenium »

Yincognito wrote:
February 1st, 2020, 12:01 pm
Oh, ok then - no worries. I'll start a new thread only if I stumble in the process. For now I'm in "analysis mode", and I was only sharing my findings. I didn't know what you had in mind for this thread, so sorry if I went off topic a bit ;-)
Maybe the file attached here will help:
https://forum.rainmeter.net/viewtopic.php?f=27&t=34461&p=170432&hilit=quote+enclose+option#p170432
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Discussion about parsing weather.com

Post by Yincognito »

xenium wrote:
February 1st, 2020, 12:55 pm
Maybe the file attached here will help:
https://forum.rainmeter.net/viewtopic.php?f=27&t=34461&p=170432&hilit=quote+enclose+option#p170432
Thank you for your help - greatly appreciated. Looking at the code though, while it's very close to what I envision for the forecast (I'll probably build my regex to be make use of String2 option in the WebParser measure in the end), it still employs multiple regex patterrns / "templates", meaning it will parse multiple URLs when one big parse of the "today" URL should be enough to grab everything in a comprehensive regex pattern.

That being said, I've already used a free online service and some manual touch to properly format / indent the page source code for today's URL earlier (since I only saw your reply now), and that massively helps in seeing clearly the actual structure of the HTML, making the overall regex build-up much easier.

One small question though: you have a PrefixPostfix variable in the linked attachement. Does this mean that the regex pattern stored in the variable can be located either before or after other patterns in the source, or it's just a variable name related to the order you have things in your skin?
xenium
Posts: 474
Joined: January 4th, 2018, 9:52 pm

Re: Discussion about parsing weather.com

Post by xenium »

Yincognito wrote:
February 2nd, 2020, 3:23 am
Thank you for your help - greatly appreciated. Looking at the code though, while it's very close to what I envision for the forecast (I'll probably build my regex to be make use of String2 option in the WebParser measure in the end), it still employs multiple regex patterrns / "templates", meaning it will parse multiple URLs when one big parse of the "today" URL should be enough to grab everything in a comprehensive regex pattern.

That being said, I've already used a free online service and some manual touch to properly format / indent the page source code for today's URL earlier (since I only saw your reply now), and that massively helps in seeing clearly the actual structure of the HTML, making the overall regex build-up much easier.

One small question though: you have a PrefixPostfix variable in the linked attachement. Does this mean that the regex pattern stored in the variable can be located either before or after other patterns in the source, or it's just a variable name related to the order you have things in your skin?
The source of the web page has 2 sections: HTML and JSON

My code used for W10WEnterp, uses the HTML section.The resulting final code is large but easy to use (except for alerts).
Each RegExp contains all the data together (elements, values, units of measure).
When the language is changed the translation is done automatically and the units are automatically converted from imperial to metric.

The JSON section is huge, but once you get the data you need the final code is small.
Small but ... a little more complicated.
Each date must be converted.
Is needed one RegExp for values and another RegExp ( "PrefixPostfix ") for elements and units of measure .
The translation is done automatically but the units are not automatically converted from imperial to metric, they must be modified manually.
If you make a skin that uses only one language, you can exclude RegExp for elements and units and place them manually.
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Discussion about parsing weather.com

Post by Yincognito »

xenium wrote:
February 2nd, 2020, 7:19 am
Each RegExp contains all the data together (elements, values, units of measure.
Yeah, but I'm looking to build a single regex pattern for everything (now + forecast days), and make a single request to a weather.com URL instead of doing everything multiple times. Something like merging the essentials from those regexes. But don't worry, I can do it.
xenium wrote:
February 2nd, 2020, 7:19 am
Small but ... a little more complicated. Each date must be converted. Is needed one RegExp for values and another RegExp ( "PrefixPostfix ") for elements and units of measure . The translation is done automatically but the units are not automatically converted from imperial to metric, they must be modified manually. If you make a skin that uses only one language, you can exclude RegExp for elements and units and place them manually.
I respectfully disagree with almost everything you said above. You can get almost everything you want exclusively by parsing the JSON part of the source. Dates don't necessarily have to be converted, as you have both the long and short names for days and months within the JSON, and it's only a matter of regex manipulation to grab them (as well as removing leading zeros). Also, the units and their values are converted automatically, as you can see below:
Weather Language Comparison.jpg
Yes, I use a single language, but will be able to toggle between both unit systems (by using en-US and en-GB). I don't think I'll have to do anything manually, as I see almost everything wxdata had (and more) in the JSON (and alternatively, in the HTML) part of the weather.com page source. I may do some things manually only if it's easier, but not because I have to.

P.S. If you don't find the long and short names of the weekdays and months, I can PM their location to you or start a new thread, as I don't want to continue "polluting" jsmorley's one. :D
You do not have the required permissions to view the files attached to this post.
xenium
Posts: 474
Joined: January 4th, 2018, 9:52 pm

Re: Discussion about parsing weather.com

Post by xenium »

Yincognito wrote:
February 2nd, 2020, 12:10 pm
Yeah, but I'm looking to build a single regex pattern for everything (now + forecast days), and make a single request to a weather.com URL instead of doing everything multiple times. Something like merging the essentials from those regexes. But don't worry, I can do it.



I respectfully disagree with almost everything you said above. You can get almost everything you want exclusively by parsing the JSON part of the source. Dates don't necessarily have to be converted, as you have both the long and short names for days and months within the JSON, and it's only a matter of regex manipulation to grab them (as well as removing leading zeros). Also, the units and their values are converted automatically, as you can see below:
Weather Language Comparison.jpg
Yes, I use a single language, but will be able to toggle between both unit systems (by using en-US and en-GB). I don't think I'll have to do anything manually, as I see almost everything wxdata had (and more) in the JSON (and alternatively, in the HTML) part of the weather.com page source. I may do some things manually only if it's easier, but not because I have to.

P.S. If you don't find the long and short names of the weekdays and months, I can PM their location to you or start a new thread, as I don't want to continue "polluting" jsmorley's one. :D
If you want to display only the name of the day , yes I know there are short days in JSON.
If you want to display the full date (Mon, Feb 3) the date must be converted (2020-02-03T07: 00: 00 + 0100)

In the attached image the text for weather details is displayed("narrative"), which is automatically translated and the units are automatically converted.
If you look in the image posted, below the details, is the wind speed where only the value is displayed, not and the unit.
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Discussion about parsing weather.com

Post by Yincognito »

xenium wrote:
February 2nd, 2020, 1:06 pm
If you want to display only the name of the day , yes I know there are short days in JSON.
If you want to display the full date (Mon, Feb 3) the date must be converted (2020-02-03T07: 00: 00 + 0100)

In the attached image the text for weather details is displayed("narrative"), which is automatically translated and the units are automatically converted.
If you look in the image posted, below the details, is the wind speed where only the value is displayed, not and the unit.
Of course there are only the numerical values that are being displayed there and everywhere else except the "narrative" and a few other places - it was the same in wxdata's case, nothing strange about it. One must look at the "unitOfMeasurement" record further below (or even at the "units" record even further below, although I believe that one is just for translation) to get all the units used in the file. The only difference compared to wxdata is that the units are after the values in the file and not before - but that is irrelevant, after all.

It would have been bad if the values were not converted, but they are. The fact that the unit text is in a different location (also within the JSON part) is totally fine, and it's the expected behavior, at least when comparing with the wxdata's structure.

Regarding the dates, it requires a bit of regex kung fu, but you can replace the month numbers with the corresponding short text from the JSON part without actually "converting" anything. However, I agree that using Time measure's TimeStamp option is much easier.
User avatar
Yincognito
Posts: 1075
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Discussion about parsing weather.com

Post by Yincognito »

Since jsmorley finally separated this thread from his - thanks, jsmorley - I think it might be a good idea to post what I mapped from the JSON part of the weather.com URL's page source in a readable form, maybe it helps others that might see it to easier understand its structure. I've omitted the things that one normally doesn't include in a weather skin, replacing them with ... (they'll probably be .* in your regex). It should also be noted that while the text below is properly indented and spaced, there are no new line, tab or space characters outside a field's or a record's content in the original page source (for example there is no space between : and {, and so on). In places that have data one can use in a weather skin I let the actual content instead of replacing it with (number) or (string), so you can see its format. By the way, this was taken from the page source of the URL: https://weather.com/en-GB/weather/today/l/ROXX4613:1:RO

Code: Select all

...
	...
		...
		<script charSet="UTF-8">
			window.__data= {
				...
				"dal": {
					...
					"Location": {
						...
						"canonicalCityId:...": {
							...
							"data": {
								"location": {
									"latitude":47.96,
									"longitude":26.4,
									"city":"Dorohoi",
									"locale": {
										"locale1": null,
										"locale2": "Dorohoi",
										"locale3": null,
										"locale4": null
									}
									,
									"neighborhood":null,
									"adminDistrict":"Botoșani County",
									...
									"country":"Romania",
									"countryCode":"RO",
									...
								}
							}
							...
						}
					}
					,
					"Alerts": {
						"geocode:...": {
							...
						}
					}
					,
					"HourlyForecast": {
						"geocode:...": {
							...
							"data": {
								...
								"vt1hourlyForecast":[ {
									"processTime": "2020-02-01T15:00:00+0200",
									"temperature": 13,
									"precipPct": 0,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 26,
									"iconExtended": 2600,
									"windDirCompass": "SSW",
									"windDirDegrees": 196,
									"windSpeed": 5,
									"phrase": "Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 64,
									"feelsLike": 12.5
								}
								,
								{
									"processTime": "2020-02-01T16:00:00+0200",
									"temperature": 12,
									"precipPct": 0,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 26,
									"iconExtended": 2600,
									"windDirCompass": "S",
									"windDirDegrees": 188,
									"windSpeed": 7,
									"phrase": "Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 66,
									"feelsLike": 11.9
								}
								,
								{
									"processTime": "2020-02-01T17:00:00+0200",
									"temperature": 11,
									"precipPct": 0,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 26,
									"iconExtended": 2600,
									"windDirCompass": "SSW",
									"windDirDegrees": 195,
									"windSpeed": 7,
									"phrase": "Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 72,
									"feelsLike": 10.3
								}
								,
								{
									"processTime": "2020-02-01T18:00:00+0200",
									"temperature": 10,
									"precipPct": 0,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "SW",
									"windDirDegrees": 216,
									"windSpeed": 8,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 74,
									"feelsLike": 9.2
								}
								,
								{
									"processTime": "2020-02-01T19:00:00+0200",
									"temperature": 9,
									"precipPct": 1,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "SW",
									"windDirDegrees": 235,
									"windSpeed": 8,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 76,
									"feelsLike": 8
								}
								,
								{
									"processTime": "2020-02-01T20:00:00+0200",
									"temperature": 8,
									"precipPct": 4,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "WSW",
									"windDirDegrees": 238,
									"windSpeed": 8,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 79,
									"feelsLike": 6.9
								}
								,
								{
									"processTime": "2020-02-01T21:00:00+0200",
									"temperature": 8,
									"precipPct": 5,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SW",
									"windDirDegrees": 232,
									"windSpeed": 8,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 79,
									"feelsLike": 6.3
								}
								,
								{
									"processTime": "2020-02-01T22:00:00+0200",
									"temperature": 7,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SW",
									"windDirDegrees": 226,
									"windSpeed": 9,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 79,
									"feelsLike": 5.4
								}
								,
								{
									"processTime": "2020-02-01T23:00:00+0200",
									"temperature": 7,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SW",
									"windDirDegrees": 221,
									"windSpeed": 9,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 81,
									"feelsLike": 4.8
								}
								,
								{
									"processTime": "2020-02-02T00:00:00+0200",
									"temperature": 7,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SSW",
									"windDirDegrees": 213,
									"windSpeed": 9,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 81,
									"feelsLike": 4.7
								}
								,
								{
									"processTime": "2020-02-02T01:00:00+0200",
									"temperature": 6,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SSW",
									"windDirDegrees": 211,
									"windSpeed": 10,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 81,
									"feelsLike": 4.3
								}
								,
								{
									"processTime": "2020-02-02T02:00:00+0200",
									"temperature": 6,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SSW",
									"windDirDegrees": 204,
									"windSpeed": 10,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 81,
									"feelsLike": 4.4
								}
								,
								{
									"processTime": "2020-02-02T03:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SSW",
									"windDirDegrees": 195,
									"windSpeed": 9,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 82,
									"feelsLike": 4.5
								}
								,
								{
									"processTime": "2020-02-02T04:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 33,
									"iconExtended": 3300,
									"windDirCompass": "SSW",
									"windDirDegrees": 199,
									"windSpeed": 10,
									"phrase": "Mostly Clear",
									"dayInd": "N",
									"severity": 1,
									"rh": 84,
									"feelsLike": 3.9
								}
								,
								{
									"processTime": "2020-02-02T05:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SSW",
									"windDirDegrees": 200,
									"windSpeed": 9,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 84,
									"feelsLike": 4
								}
								,
								{
									"processTime": "2020-02-02T06:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 31,
									"iconExtended": 3100,
									"windDirCompass": "SW",
									"windDirDegrees": 215,
									"windSpeed": 10,
									"phrase": "Clear",
									"dayInd": "N",
									"severity": 1,
									"rh": 84,
									"feelsLike": 3.9
								}
								,
								{
									"processTime": "2020-02-02T07:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "SW",
									"windDirDegrees": 222,
									"windSpeed": 10,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 83,
									"feelsLike": 3.9
								}
								,
								{
									"processTime": "2020-02-02T08:00:00+0200",
									"temperature": 7,
									"precipPct": 13,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "SW",
									"windDirDegrees": 231,
									"windSpeed": 10,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 81,
									"feelsLike": 4.4
								}
								,
								{
									"processTime": "2020-02-02T09:00:00+0200",
									"temperature": 8,
									"precipPct": 5,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WSW",
									"windDirDegrees": 257,
									"windSpeed": 10,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 77,
									"feelsLike": 6.2
								}
								,
								{
									"processTime": "2020-02-02T10:00:00+0200",
									"temperature": 10,
									"precipPct": 3,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "W",
									"windDirDegrees": 279,
									"windSpeed": 12,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 73,
									"feelsLike": 7.9
								}
								,
								{
									"processTime": "2020-02-02T11:00:00+0200",
									"temperature": 12,
									"precipPct": 2,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "WNW",
									"windDirDegrees": 285,
									"windSpeed": 14,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 67,
									"feelsLike": 10
								}
								,
								{
									"processTime": "2020-02-02T12:00:00+0200",
									"temperature": 13,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "WNW",
									"windDirDegrees": 288,
									"windSpeed": 16,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 62,
									"feelsLike": 11.3
								}
								,
								{
									"processTime": "2020-02-02T13:00:00+0200",
									"temperature": 13,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "WNW",
									"windDirDegrees": 295,
									"windSpeed": 19,
									"phrase": "Light Rain",
									"dayInd": "D",
									"severity": 1,
									"rh": 59,
									"feelsLike": 11.5
								}
								,
								{
									"processTime": "2020-02-02T14:00:00+0200",
									"temperature": 13,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "WNW",
									"windDirDegrees": 299,
									"windSpeed": 19,
									"phrase": "Light Rain",
									"dayInd": "D",
									"severity": 1,
									"rh": 61,
									"feelsLike": 10.7
								}
								,
								{
									"processTime": "2020-02-02T15:00:00+0200",
									"temperature": 12,
									"precipPct": 42,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "WNW",
									"windDirDegrees": 299,
									"windSpeed": 18,
									"phrase": "Light Rain",
									"dayInd": "D",
									"severity": 1,
									"rh": 63,
									"feelsLike": 9.8
								}
								,
								{
									"processTime": "2020-02-02T16:00:00+0200",
									"temperature": 11,
									"precipPct": 24,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "WNW",
									"windDirDegrees": 300,
									"windSpeed": 17,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 63,
									"feelsLike": 8.9
								}
								,
								{
									"processTime": "2020-02-02T17:00:00+0200",
									"temperature": 10,
									"precipPct": 14,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 30,
									"iconExtended": 3000,
									"windDirCompass": "WNW",
									"windDirDegrees": 296,
									"windSpeed": 13,
									"phrase": "Partly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 67,
									"feelsLike": 8.3
								}
								,
								{
									"processTime": "2020-02-02T18:00:00+0200",
									"temperature": 9,
									"precipPct": 5,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 29,
									"iconExtended": 2900,
									"windDirCompass": "WNW",
									"windDirDegrees": 295,
									"windSpeed": 11,
									"phrase": "Partly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 71,
									"feelsLike": 7.4
								}
								,
								{
									"processTime": "2020-02-02T19:00:00+0200",
									"temperature": 8,
									"precipPct": 6,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 282,
									"windSpeed": 11,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 72,
									"feelsLike": 6.5
								}
								,
								{
									"processTime": "2020-02-02T20:00:00+0200",
									"temperature": 8,
									"precipPct": 4,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 269,
									"windSpeed": 11,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 73,
									"feelsLike": 5.6
								}
								,
								{
									"processTime": "2020-02-02T21:00:00+0200",
									"temperature": 7,
									"precipPct": 4,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 266,
									"windSpeed": 11,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 71,
									"feelsLike": 5.3
								}
								,
								{
									"processTime": "2020-02-02T22:00:00+0200",
									"temperature": 7,
									"precipPct": 3,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 265,
									"windSpeed": 13,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 69,
									"feelsLike": 4.6
								}
								,
								{
									"processTime": "2020-02-02T23:00:00+0200",
									"temperature": 7,
									"precipPct": 3,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 261,
									"windSpeed": 12,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 69,
									"feelsLike": 4.5
								}
								,
								{
									"processTime": "2020-02-03T00:00:00+0200",
									"temperature": 6,
									"precipPct": 7,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "W",
									"windDirDegrees": 264,
									"windSpeed": 11,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 69,
									"feelsLike": 4.2
								}
								,
								{
									"processTime": "2020-02-03T01:00:00+0200",
									"temperature": 6,
									"precipPct": 8,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "WSW",
									"windDirDegrees": 255,
									"windSpeed": 9,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 70,
									"feelsLike": 4.2
								}
								,
								{
									"processTime": "2020-02-03T02:00:00+0200",
									"temperature": 6,
									"precipPct": 20,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 27,
									"iconExtended": 2700,
									"windDirCompass": "SW",
									"windDirDegrees": 228,
									"windSpeed": 8,
									"phrase": "Mostly Cloudy",
									"dayInd": "N",
									"severity": 1,
									"rh": 73,
									"feelsLike": 4.5
								}
								,
								{
									"processTime": "2020-02-03T03:00:00+0200",
									"temperature": 6,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "SSW",
									"windDirDegrees": 194,
									"windSpeed": 8,
									"phrase": "Light Rain",
									"dayInd": "N",
									"severity": 1,
									"rh": 73,
									"feelsLike": 4.4
								}
								,
								{
									"processTime": "2020-02-03T04:00:00+0200",
									"temperature": 6,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "SSW",
									"windDirDegrees": 194,
									"windSpeed": 9,
									"phrase": "Light Rain",
									"dayInd": "N",
									"severity": 1,
									"rh": 74,
									"feelsLike": 4.5
								}
								,
								{
									"processTime": "2020-02-03T05:00:00+0200",
									"temperature": 7,
									"precipPct": 42,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "S",
									"windDirDegrees": 187,
									"windSpeed": 9,
									"phrase": "Light Rain",
									"dayInd": "N",
									"severity": 1,
									"rh": 74,
									"feelsLike": 4.8
								}
								,
								{
									"processTime": "2020-02-03T06:00:00+0200",
									"temperature": 7,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "SW",
									"windDirDegrees": 217,
									"windSpeed": 11,
									"phrase": "Light Rain",
									"dayInd": "N",
									"severity": 1,
									"rh": 75,
									"feelsLike": 5
								}
								,
								{
									"processTime": "2020-02-03T07:00:00+0200",
									"temperature": 8,
									"precipPct": 38,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "WSW",
									"windDirDegrees": 245,
									"windSpeed": 12,
									"phrase": "Light Rain",
									"dayInd": "N",
									"severity": 1,
									"rh": 74,
									"feelsLike": 5.8
								}
								,
								{
									"processTime": "2020-02-03T08:00:00+0200",
									"temperature": 8,
									"precipPct": 42,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "W",
									"windDirDegrees": 269,
									"windSpeed": 15,
									"phrase": "Light Rain",
									"dayInd": "D",
									"severity": 1,
									"rh": 74,
									"feelsLike": 5.6
								}
								,
								{
									"processTime": "2020-02-03T09:00:00+0200",
									"temperature": 9,
									"precipPct": 35,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 11,
									"iconExtended": 1201,
									"windDirCompass": "WNW",
									"windDirDegrees": 282,
									"windSpeed": 17,
									"phrase": "Light Rain",
									"dayInd": "D",
									"severity": 1,
									"rh": 73,
									"feelsLike": 6.4
								}
								,
								{
									"processTime": "2020-02-03T10:00:00+0200",
									"temperature": 10,
									"precipPct": 23,
									"precipType": "rain",
									"uvIndex": 0,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WNW",
									"windDirDegrees": 293,
									"windSpeed": 17,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 72,
									"feelsLike": 7.1
								}
								,
								{
									"processTime": "2020-02-03T11:00:00+0200",
									"temperature": 11,
									"precipPct": 14,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WNW",
									"windDirDegrees": 295,
									"windSpeed": 20,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 68,
									"feelsLike": 8
								}
								,
								{
									"processTime": "2020-02-03T12:00:00+0200",
									"temperature": 11,
									"precipPct": 16,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WNW",
									"windDirDegrees": 294,
									"windSpeed": 24,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 63,
									"feelsLike": 8.7
								}
								,
								{
									"processTime": "2020-02-03T13:00:00+0200",
									"temperature": 12,
									"precipPct": 14,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WNW",
									"windDirDegrees": 302,
									"windSpeed": 26,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 59,
									"feelsLike": 8.9
								}
								,
								{
									"processTime": "2020-02-03T14:00:00+0200",
									"temperature": 11,
									"precipPct": 14,
									"precipType": "rain",
									"uvIndex": 1,
									"icon": 28,
									"iconExtended": 2800,
									"windDirCompass": "WNW",
									"windDirDegrees": 303,
									"windSpeed": 28,
									"phrase": "Mostly Cloudy",
									"dayInd": "D",
									"severity": 1,
									"rh": 59,
									"feelsLike": 8.6
								}
								]
							}
							...
						}
					}
					...
					"Observation": {
						"geocode:...": {
							...
							"data": {
								...
								"vt1observation": {
									"altimeter": 1010.5,
									"barometerTrend": "Falling",
									"barometerCode": 2,
									"barometerChange": -0.68,
									"dewPoint": 6,
									"feelsLike": 12,
									"gust": null,
									"humidity": 66,
									"icon": 26,
									"observationTime": "2020-02-01T14:16:25+0200",
									"obsQualifierCode": null,
									"obsQualifierSeverity": null,
									"phrase": "Cloudy",
									"precip24Hour": 9.14,
									"snowDepth": 0,
									"temperature": 12,
									"temperatureMaxSince7am": 12,
									"uvIndex": 0,
									"uvDescription": "Low",
									"visibility": 12.87,
									"windSpeed": 5,
									"windDirCompass": "SSW",
									"windDirDegrees": 200
								}
							}
							...
						}
					}
					,
					"DateTime": {
						"ianaTimeZone:...": {
							...
							"data": {
								"dateTime": "2020-02-01T14:15:44.353+02:00",
								"timeZoneAbbreviation": "EET"
							}
							...
						}
					}
					,
					"DailyForecast": {
						"geocode:...": {
							...
							"data": {
								...
								"vt1dailyForecast":[ {
									"validDate":"2020-02-01T07:00:00+0200",
									"sunrise":"2020-02-01T07:43:08+0200",
									"sunset":"2020-02-01T17:13:39+0200",
									"moonIcon":"FQ",
									"moonPhrase":"First Quarter",
									"moonrise":"2020-02-01T11:07:11+0200",
									"moonset":"",
									"dayOfWeek":"Saturday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Today",
										"precipPct": 0,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 12,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 26,
										"iconExtended": 2600,
										"phrase": "Cloudy",
										"narrative": "Cloudy. High 12ºC. Winds SSW and variable.",
										"cloudPct": 82,
										"windDirCompass": "SSW",
										"windDirDegrees": 202,
										"windSpeed": 7,
										"humidityPct": 70,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-01T07:43:08+0200",
										"sunset": "2020-02-01T17:13:39+0200",
										"isNight": false,
										"validDate": "2020-02-01T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Tonight",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 5,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low 5ºC. Winds SW at 10 to 15 km\u002Fh.",
										"cloudPct": 43,
										"windDirCompass": "SW",
										"windDirDegrees": 217,
										"windSpeed": 10,
										"humidityPct": 81,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-01T07:43:08+0200",
										"sunset": "2020-02-01T17:13:39+0200",
										"isNight": true,
										"validDate": "2020-02-01T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-02T07:00:00+0200",
									"sunrise":"2020-02-02T07:41:50+0200",
									"sunset":"2020-02-02T17:15:15+0200",
									"moonIcon":"FQ",
									"moonPhrase":"First Quarter",
									"moonrise":"2020-02-02T11:29:41+0200",
									"moonset":"2020-02-02T00:58:11+0200",
									"dayOfWeek":"Sunday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Sun",
										"precipPct": 40,
										"precipAmt": 0.83,
										"precipType": "rain",
										"temperature": 14,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 11,
										"iconExtended": 7304,
										"phrase": "PM Light Rain",
										"narrative": "Light rain developing in the afternoon. High 14ºC. Winds W at 15 to 25 km\u002Fh. Chance of rain 40%.",
										"cloudPct": 58,
										"windDirCompass": "W",
										"windDirDegrees": 281,
										"windSpeed": 19,
										"humidityPct": 69,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-02T07:41:50+0200",
										"sunset": "2020-02-02T17:15:15+0200",
										"isNight": false,
										"validDate": "2020-02-02T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Sun",
										"precipPct": 40,
										"precipAmt": 0.53,
										"precipType": "rain",
										"temperature": 5,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 11,
										"iconExtended": 7301,
										"phrase": "Light Rain Late",
										"narrative": "Light rain developing late. Low 5ºC. Winds WSW at 10 to 15 km\u002Fh. Chance of rain 40%.",
										"cloudPct": 76,
										"windDirCompass": "WSW",
										"windDirDegrees": 241,
										"windSpeed": 13,
										"humidityPct": 72,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-02T07:41:50+0200",
										"sunset": "2020-02-02T17:15:15+0200",
										"isNight": true,
										"validDate": "2020-02-02T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-03T07:00:00+0200",
									"sunrise":"2020-02-03T07:40:30+0200",
									"sunset":"2020-02-03T17:16:51+0200",
									"moonIcon":"WXG",
									"moonPhrase":"Waxing Gibbous",
									"moonrise":"2020-02-03T11:55:41+0200",
									"moonset":"2020-02-03T02:03:59+0200",
									"dayOfWeek":"Monday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Mon",
										"precipPct": 40,
										"precipAmt": 0.73,
										"precipType": "rain",
										"temperature": 12,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 11,
										"iconExtended": 6304,
										"phrase": "AM Light Rain",
										"narrative": "Light morning rain. High 12ºC. Winds WNW at 15 to 30 km\u002Fh. Chance of rain 40%.",
										"cloudPct": 77,
										"windDirCompass": "WNW",
										"windDirDegrees": 294,
										"windSpeed": 27,
										"humidityPct": 67,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-03T07:40:30+0200",
										"sunset": "2020-02-03T17:16:51+0200",
										"isNight": false,
										"validDate": "2020-02-03T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Mon",
										"precipPct": 40,
										"precipAmt": 0.87,
										"precipType": "rain",
										"temperature": 4,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 45,
										"iconExtended": 6100,
										"phrase": "Showers Early",
										"narrative": "Showers early. Low 4ºC. Winds WNW at 10 to 15 km\u002Fh. Chance of rain 40%.",
										"cloudPct": 75,
										"windDirCompass": "WNW",
										"windDirDegrees": 287,
										"windSpeed": 16,
										"humidityPct": 80,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-03T07:40:30+0200",
										"sunset": "2020-02-03T17:16:51+0200",
										"isNight": true,
										"validDate": "2020-02-03T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-04T07:00:00+0200",
									"sunrise":"2020-02-04T07:39:08+0200",
									"sunset":"2020-02-04T17:18:28+0200",
									"moonIcon":"WXG",
									"moonPhrase":"Waxing Gibbous",
									"moonrise":"2020-02-04T12:27:20+0200",
									"moonset":"2020-02-04T03:11:26+0200",
									"dayOfWeek":"Tuesday",
									"snowQpf":2.2,
									"day": {
										"dayPartName": "Tue",
										"precipPct": 70,
										"precipAmt": 2.7,
										"precipType": "rain",
										"temperature": 10,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 11,
										"iconExtended": 1100,
										"phrase": "Showers",
										"narrative": "Showers. High 10ºC. Winds S at 10 to 15 km\u002Fh. Chance of rain 70%.",
										"cloudPct": 90,
										"windDirCompass": "S",
										"windDirDegrees": 180,
										"windSpeed": 12,
										"humidityPct": 77,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-04T07:39:08+0200",
										"sunset": "2020-02-04T17:18:28+0200",
										"isNight": false,
										"validDate": "2020-02-04T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Tue",
										"precipPct": 90,
										"precipAmt": 10.2,
										"precipType": "precip",
										"temperature": 1,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 5,
										"iconExtended": 500,
										"phrase": "Rain \u002F Snow",
										"narrative": "A mix of rain and snow. Low 1ºC. Winds N at 15 to 30 km\u002Fh. Chance of precip 90%. Snowfall of 2-3 cm.",
										"cloudPct": 100,
										"windDirCompass": "N",
										"windDirDegrees": 4,
										"windSpeed": 22,
										"humidityPct": 91,
										"qualifier": null,
										"snowRange": "2-3",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-04T07:39:08+0200",
										"sunset": "2020-02-04T17:18:28+0200",
										"isNight": true,
										"validDate": "2020-02-04T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-05T07:00:00+0200",
									"sunrise":"2020-02-05T07:37:44+0200",
									"sunset":"2020-02-05T17:20:04+0200",
									"moonIcon":"WXG",
									"moonPhrase":"Waxing Gibbous",
									"moonrise":"2020-02-05T13:07:58+0200",
									"moonset":"2020-02-05T04:18:30+0200",
									"dayOfWeek":"Wednesday",
									"snowQpf":4.7,
									"day": {
										"dayPartName": "Wed",
										"precipPct": 80,
										"precipAmt": 5.21,
										"precipType": "snow",
										"temperature": 2,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 16,
										"iconExtended": 1600,
										"phrase": "Snow",
										"narrative": "Snow. High 2ºC. Winds NNW at 25 to 40 km\u002Fh. Chance of snow 80%. Snowfall of 3-7 cm.",
										"cloudPct": 96,
										"windDirCompass": "NNW",
										"windDirDegrees": 346,
										"windSpeed": 29,
										"humidityPct": 78,
										"qualifier": null,
										"snowRange": "3-7",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-05T07:37:44+0200",
										"sunset": "2020-02-05T17:20:04+0200",
										"isNight": false,
										"validDate": "2020-02-05T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Wed",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "snow",
										"temperature": -5,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 9000,
										"phrase": "Clouds Early \u002F Clearing Late",
										"narrative": "Skies clearing overnight. Low -5ºC. Winds NNW at 25 to 40 km\u002Fh.",
										"cloudPct": 65,
										"windDirCompass": "NNW",
										"windDirDegrees": 331,
										"windSpeed": 28,
										"humidityPct": 63,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-05T07:37:44+0200",
										"sunset": "2020-02-05T17:20:04+0200",
										"isNight": true,
										"validDate": "2020-02-05T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-06T07:00:00+0200",
									"sunrise":"2020-02-06T07:36:18+0200",
									"sunset":"2020-02-06T17:21:41+0200",
									"moonIcon":"WXG",
									"moonPhrase":"Waxing Gibbous",
									"moonrise":"2020-02-06T13:58:56+0200",
									"moonset":"2020-02-06T05:23:47+0200",
									"dayOfWeek":"Thursday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Thu",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 2,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 2ºC. Winds WNW at 15 to 30 km\u002Fh.",
										"cloudPct": 56,
										"windDirCompass": "WNW",
										"windDirDegrees": 303,
										"windSpeed": 23,
										"humidityPct": 62,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-06T07:36:18+0200",
										"sunset": "2020-02-06T17:21:41+0200",
										"isNight": false,
										"validDate": "2020-02-06T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Thu",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "snow",
										"temperature": -4,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low -4ºC. Winds NW at 15 to 30 km\u002Fh.",
										"cloudPct": 64,
										"windDirCompass": "NW",
										"windDirDegrees": 312,
										"windSpeed": 21,
										"humidityPct": 70,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-06T07:36:18+0200",
										"sunset": "2020-02-06T17:21:41+0200",
										"isNight": true,
										"validDate": "2020-02-06T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-07T07:00:00+0200",
									"sunrise":"2020-02-07T07:34:50+0200",
									"sunset":"2020-02-07T17:23:17+0200",
									"moonIcon":"WXG",
									"moonPhrase":"Waxing Gibbous",
									"moonrise":"2020-02-07T15:01:47+0200",
									"moonset":"2020-02-07T06:22:17+0200",
									"dayOfWeek":"Friday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Fri",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 0,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 0ºC. Winds NW at 15 to 30 km\u002Fh.",
										"cloudPct": 60,
										"windDirCompass": "NW",
										"windDirDegrees": 317,
										"windSpeed": 26,
										"humidityPct": 66,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-07T07:34:50+0200",
										"sunset": "2020-02-07T17:23:17+0200",
										"isNight": false,
										"validDate": "2020-02-07T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Fri",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "snow",
										"temperature": -5,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low -5ºC. Winds NW at 15 to 25 km\u002Fh.",
										"cloudPct": 58,
										"windDirCompass": "NW",
										"windDirDegrees": 320,
										"windSpeed": 18,
										"humidityPct": 73,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-07T07:34:50+0200",
										"sunset": "2020-02-07T17:23:17+0200",
										"isNight": true,
										"validDate": "2020-02-07T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-08T07:00:00+0200",
									"sunrise":"2020-02-08T07:33:21+0200",
									"sunset":"2020-02-08T17:24:54+0200",
									"moonIcon":"F",
									"moonPhrase":"Full",
									"moonrise":"2020-02-08T16:14:47+0200",
									"moonset":"2020-02-08T07:13:12+0200",
									"dayOfWeek":"Saturday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Sat",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 0,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 0ºC. Winds NW at 10 to 15 km\u002Fh.",
										"cloudPct": 54,
										"windDirCompass": "NW",
										"windDirDegrees": 309,
										"windSpeed": 13,
										"humidityPct": 68,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-08T07:33:21+0200",
										"sunset": "2020-02-08T17:24:54+0200",
										"isNight": false,
										"validDate": "2020-02-08T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Sat",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "snow",
										"temperature": -6,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low -6ºC. Winds WNW and variable.",
										"cloudPct": 40,
										"windDirCompass": "WNW",
										"windDirDegrees": 285,
										"windSpeed": 9,
										"humidityPct": 70,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-08T07:33:21+0200",
										"sunset": "2020-02-08T17:24:54+0200",
										"isNight": true,
										"validDate": "2020-02-08T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-09T07:00:00+0200",
									"sunrise":"2020-02-09T07:31:50+0200",
									"sunset":"2020-02-09T17:26:31+0200",
									"moonIcon":"F",
									"moonPhrase":"Full",
									"moonrise":"2020-02-09T17:35:05+0200",
									"moonset":"2020-02-09T07:54:57+0200",
									"dayOfWeek":"Sunday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Sun",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 3,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 3ºC. Winds SW and variable.",
										"cloudPct": 32,
										"windDirCompass": "SW",
										"windDirDegrees": 217,
										"windSpeed": 8,
										"humidityPct": 68,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-09T07:31:50+0200",
										"sunset": "2020-02-09T17:26:31+0200",
										"isNight": false,
										"validDate": "2020-02-09T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Sun",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": -4,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 33,
										"iconExtended": 3300,
										"phrase": "Mostly Clear",
										"narrative": "Generally clear. Low -4ºC. Winds SW and variable.",
										"cloudPct": 30,
										"windDirCompass": "SW",
										"windDirDegrees": 222,
										"windSpeed": 9,
										"humidityPct": 77,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-09T07:31:50+0200",
										"sunset": "2020-02-09T17:26:31+0200",
										"isNight": true,
										"validDate": "2020-02-09T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-10T07:00:00+0200",
									"sunrise":"2020-02-10T07:30:17+0200",
									"sunset":"2020-02-10T17:28:07+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"2020-02-10T18:57:12+0200",
									"moonset":"2020-02-10T08:29:03+0200",
									"dayOfWeek":"Monday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Mon",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 6,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 6ºC. Winds SSW at 10 to 15 km\u002Fh.",
										"cloudPct": 42,
										"windDirCompass": "SSW",
										"windDirDegrees": 205,
										"windSpeed": 12,
										"humidityPct": 68,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-10T07:30:17+0200",
										"sunset": "2020-02-10T17:28:07+0200",
										"isNight": false,
										"validDate": "2020-02-10T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Mon",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 0,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low 0ºC. Winds SW at 10 to 15 km\u002Fh.",
										"cloudPct": 45,
										"windDirCompass": "SW",
										"windDirDegrees": 224,
										"windSpeed": 12,
										"humidityPct": 76,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-10T07:30:17+0200",
										"sunset": "2020-02-10T17:28:07+0200",
										"isNight": true,
										"validDate": "2020-02-10T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-11T07:00:00+0200",
									"sunrise":"2020-02-11T07:28:42+0200",
									"sunset":"2020-02-11T17:29:43+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"2020-02-11T20:19:11+0200",
									"moonset":"2020-02-11T08:58:27+0200",
									"dayOfWeek":"Tuesday",
									"snowQpf":0.2,
									"day": {
										"dayPartName": "Tue",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 7,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 7ºC. Winds WSW at 10 to 15 km\u002Fh.",
										"cloudPct": 50,
										"windDirCompass": "WSW",
										"windDirDegrees": 246,
										"windSpeed": 14,
										"humidityPct": 70,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-11T07:28:42+0200",
										"sunset": "2020-02-11T17:29:43+0200",
										"isNight": false,
										"validDate": "2020-02-11T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Tue",
										"precipPct": 30,
										"precipAmt": 0.2,
										"precipType": "snow",
										"temperature": 1,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 46,
										"iconExtended": 7800,
										"phrase": "Snow Showers Late",
										"narrative": "Snow showers overnight. Low 1ºC. Winds WSW at 10 to 15 km\u002Fh. Chance of snow 30%.",
										"cloudPct": 48,
										"windDirCompass": "WSW",
										"windDirDegrees": 248,
										"windSpeed": 13,
										"humidityPct": 77,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-11T07:28:42+0200",
										"sunset": "2020-02-11T17:29:43+0200",
										"isNight": true,
										"validDate": "2020-02-11T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-12T07:00:00+0200",
									"sunrise":"2020-02-12T07:27:07+0200",
									"sunset":"2020-02-12T17:31:20+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"2020-02-12T21:40:29+0200",
									"moonset":"2020-02-12T09:24:44+0200",
									"dayOfWeek":"Wednesday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Wed",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 8,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 8ºC. Winds W at 15 to 25 km\u002Fh.",
										"cloudPct": 45,
										"windDirCompass": "W",
										"windDirDegrees": 269,
										"windSpeed": 18,
										"humidityPct": 67,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-12T07:27:07+0200",
										"sunset": "2020-02-12T17:31:20+0200",
										"isNight": false,
										"validDate": "2020-02-12T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Wed",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 1,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low 1ºC. Winds WSW at 10 to 15 km\u002Fh.",
										"cloudPct": 41,
										"windDirCompass": "WSW",
										"windDirDegrees": 237,
										"windSpeed": 12,
										"humidityPct": 75,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-12T07:27:07+0200",
										"sunset": "2020-02-12T17:31:20+0200",
										"isNight": true,
										"validDate": "2020-02-12T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-13T07:00:00+0200",
									"sunrise":"2020-02-13T07:25:29+0200",
									"sunset":"2020-02-13T17:32:56+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"2020-02-13T22:59:32+0200",
									"moonset":"2020-02-13T09:49:23+0200",
									"dayOfWeek":"Thursday",
									"snowQpf":0.9,
									"day": {
										"dayPartName": "Thu",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 9,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 9ºC. Winds WSW at 10 to 15 km\u002Fh.",
										"cloudPct": 51,
										"windDirCompass": "WSW",
										"windDirDegrees": 254,
										"windSpeed": 16,
										"humidityPct": 68,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-13T07:25:29+0200",
										"sunset": "2020-02-13T17:32:56+0200",
										"isNight": false,
										"validDate": "2020-02-13T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Thu",
										"precipPct": 40,
										"precipAmt": 1.5,
										"precipType": "snow",
										"temperature": 2,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 14,
										"iconExtended": 1400,
										"phrase": "Snow Shower",
										"narrative": "Snow showers. Low 2ºC. Winds W at 10 to 15 km\u002Fh. Chance of snow 40%.",
										"cloudPct": 52,
										"windDirCompass": "W",
										"windDirDegrees": 264,
										"windSpeed": 14,
										"humidityPct": 74,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-13T07:25:29+0200",
										"sunset": "2020-02-13T17:32:56+0200",
										"isNight": true,
										"validDate": "2020-02-13T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-14T07:00:00+0200",
									"sunrise":"2020-02-14T07:23:50+0200",
									"sunset":"2020-02-14T17:34:31+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"",
									"moonset":"2020-02-14T10:14:04+0200",
									"dayOfWeek":"Friday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Fri",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 10,
										"uvIndex": 1,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 10ºC. Winds W at 10 to 15 km\u002Fh.",
										"cloudPct": 59,
										"windDirCompass": "W",
										"windDirDegrees": 272,
										"windSpeed": 14,
										"humidityPct": 67,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-14T07:23:50+0200",
										"sunset": "2020-02-14T17:34:31+0200",
										"isNight": false,
										"validDate": "2020-02-14T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Fri",
										"precipPct": 20,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 2,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low 2ºC. Winds W at 10 to 15 km\u002Fh.",
										"cloudPct": 51,
										"windDirCompass": "W",
										"windDirDegrees": 268,
										"windSpeed": 13,
										"humidityPct": 78,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-14T07:23:50+0200",
										"sunset": "2020-02-14T17:34:31+0200",
										"isNight": true,
										"validDate": "2020-02-14T07:00:00+0200"
									}
								}
								,
								{
									"validDate":"2020-02-15T07:00:00+0200",
									"sunrise":"2020-02-15T07:22:10+0200",
									"sunset":"2020-02-15T17:36:07+0200",
									"moonIcon":"WNG",
									"moonPhrase":"Waning Gibbous",
									"moonrise":"2020-02-15T00:17:06+0200",
									"moonset":"2020-02-15T10:41:04+0200",
									"dayOfWeek":"Saturday",
									"snowQpf":0,
									"day": {
										"dayPartName": "Sat",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "rain",
										"temperature": 11,
										"uvIndex": 2,
										"uvDescription": "Low",
										"icon": 30,
										"iconExtended": 3000,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. High 11ºC. Winds W at 10 to 15 km\u002Fh.",
										"cloudPct": 48,
										"windDirCompass": "W",
										"windDirDegrees": 268,
										"windSpeed": 15,
										"humidityPct": 67,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-15T07:22:10+0200",
										"sunset": "2020-02-15T17:36:07+0200",
										"isNight": false,
										"validDate": "2020-02-15T07:00:00+0200"
									}
									,
									"night": {
										"dayPartName": "Sat",
										"precipPct": 10,
										"precipAmt": 0,
										"precipType": "precip",
										"temperature": 3,
										"uvIndex": 0,
										"uvDescription": "Low",
										"icon": 29,
										"iconExtended": 2900,
										"phrase": "Partly Cloudy",
										"narrative": "Partly cloudy. Low 3ºC. Winds WNW at 10 to 15 km\u002Fh.",
										"cloudPct": 49,
										"windDirCompass": "WNW",
										"windDirDegrees": 286,
										"windSpeed": 16,
										"humidityPct": 76,
										"qualifier": null,
										"snowRange": "",
										"thunderEnum": 0,
										"thunderEnumPhrase": null,
										"sunrise": "2020-02-15T07:22:10+0200",
										"sunset": "2020-02-15T17:36:07+0200",
										"isNight": true,
										"validDate": "2020-02-15T07:00:00+0200"
									}
								}
								]
							}
							...
						}
					}
					...
					"CurrentDateTime": {
						"timezone:...": {
							...
							"data": {
								"datetime": "2020-02-01 14:16:00 +0200 EET",
								"timezone": "Europe\u002FBucharest"
							}
							...
						}
					}
				}
				...
				"unitOfMeasurement": {
					"units": "m",
					"temp": "C",
					"speed": "km\u002Fh",
					"distance": "km",
					"accumulation": "cm",
					"precip": "mm",
					"pressure": "mb"
				}
				...
			}
			...
		</script>
		<script charSet="UTF-8">
			window.i18n= {
				...
				"common": {
					...
					"MONTH": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
					"SHORTDAY": ["sun", "Mon", "Tue", "Wed", "thu", "Fri", "Sat"],
					"SHORTMONTH": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
					"DAY": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
					...
				}
				...
				"units": {
					"mph": "mph",
					"km\u002Fh": "km\u002Fh",
					"in": "in",
					"mb": "mb",
					"mi": "mi",
					"km": "km",
					"M": "M",
					"K": "K",
					"F": "F",
					"C": "C",
					"cm": "cm",
					"mm": "mm"
				}
			...
			}
			...
		</script>
		...
	...
...
Note: since this isn't in any way complete and doesn't pretent do be either, not to mention it doesn't include the HTML part of the page source where you can also grab some of this data, it isn't posted in the 'Tips & Tricks' section of this forum. However, if one adds the HTML part to it in a similar way, he or she can post it there if needed.

TIP: To better navigate through this, you may want to copy it to your Notepad++, set the Language to HTML from the menu, and use the + and - links on the left side of Notepad++ window to quickly expand or collapse sections of it.