{"id":4232,"date":"2015-02-17T08:59:05","date_gmt":"2015-02-17T13:59:05","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=4232"},"modified":"2015-02-17T09:06:33","modified_gmt":"2015-02-17T14:06:33","slug":"getting-the-weather-where-on-earth","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/","title":{"rendered":"Getting the Weather Where On Earth"},"content":{"rendered":"<p>Yesterday I posted a popular <a title=\"read the previous post\" href=\"http:\/\/bit.ly\/1Bh19rO\" target=\"_blank\">article<\/a> about using Invoke-WebRequest to get weather conditions. That function used the Yahoo web site but really only worked for US cities. So I also cleaned up and revised another set of advanced PowerShell functions (required PowerShell 3) that can retrieve weather information for probably any location on Earth. The first piece of information you need is your WOEID, or \"Where On Earth ID\". Here is a function to do just that.<\/p>\n<pre class=\"lang:ps decode:true \">Function Get-Woeid {\r\n\r\n&lt;#\r\n.Synopsis\r\n   Retrieve WOEID information\r\n.Description\r\n    Search Yahoo's Geo Places for a WOEID (Where On Earth ID). You can search based on a postal code, or place name. Optionally, you can save the XML results to the pipeline.\r\n.Parameter Search\r\n    A search parameter such as a postal or zip code. You can also use a place name.\r\n.Parameter AsXML\r\n    Write the XML document to the pipeline.\r\n.Example\r\nPS C:\\&gt; get-woeid 89101\r\n\r\nCountry : US\r\nRegion  : Nevada\r\nPostal  : 89101\r\nLocale  : Las Vegas\r\nWOEID   : 12795439\r\n\r\n.Example\r\nPS C:\\&gt; get-woeid -search \"H1A0A1\"\r\n\r\nRegion  : Quebec\r\nPostal  : H1A 0A1\r\nWOEID   : 55963829\r\nLocale  : Montreal\r\nCountry : CA\r\n\r\n.Example\r\nPS C:\\&gt; get-woeid \"Helsinki, Finland\"\r\n\r\nCountry : FI\r\nRegion  : Uudenmaan maakunta\r\nPostal  :\r\nLocale  : Helsinki\r\nWOEID   : 565346\r\n.Example\r\nPS C:\\&gt; get-woeid \"Helsinki, Finland\" | get-weather -unit C\r\n\r\n\r\nDate              : Mon, 16 Feb 2015 4:49 pm EET\r\nLocation          : Helsinki, Finland\r\nTemperature       : -2 C\r\nCondition         : Fair\r\nForecastCondition : Clear\r\nForecastLow       : -6 C\r\nForecastHigh      : -2 C\r\n.Example\r\nPS C:\\&gt; [xml]$doc = get-woeid \"omaha, ne\" -AsXML\r\nPS C:\\&gt; $doc.Save(\"c:\\work\\omahaid.xml\")\r\n\r\nThe first command gets the raw XML document and the second command writes it to disk. Or you can explore the document interactively.\r\n\r\nPS C:\\&gt; $doc.query.results.place.timezone\r\n\r\ntype                          woeid                         #text                       \r\n----                          -----                         -----                       \r\nTime Zone                     56043661                      America\/Chicago  \r\n.Inputs\r\n    strings\r\n.Outputs\r\n    custom object\r\n.Link\r\nInvoke-RestMethod\r\n    \r\n.Notes\r\n NAME:      Get-Woeid\r\n VERSION:   3.0\r\n AUTHOR:    Jeffery Hicks\r\n LASTEDIT:  February 16, 2015\r\n \r\n Learn more about PowerShell:\r\n <blockquote class=\"wp-embedded-content\" data-secret=\"0yLmKqHv6k\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/essential-powershell-resources\/\">Essential PowerShell Learning Resources<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Essential PowerShell Learning Resources&#8221; &#8212; The Lonely Administrator\" src=\"https:\/\/jdhitsolutions.com\/blog\/essential-powershell-resources\/embed\/#?secret=N09nQhp6m2#?secret=0yLmKqHv6k\" data-secret=\"0yLmKqHv6k\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\r\n \r\n#&gt;\r\n\r\nParam(\r\n[parameter(Position=0,Mandatory,ValueFromPipeline,\r\nHelpMessage=\"Enter a place name or postal (zip) code.\")]\r\n[string[]]$Search,\r\n[switch]$AsXML\r\n)\r\n\r\nBegin {\r\n    Write-Verbose \"Starting $($myinvocation.mycommand)\"\r\n}\r\n\r\nProcess {\r\n    foreach ($item in $search) {\r\n        Write-Verbose \"Querying for $search\"\r\n        $uri = \"https:\/\/query.yahooapis.com\/v1\/public\/yql?q=select%20*%20from%20geo.places%20where%20text%3D'$ITEM'%20limit%201\"\r\n        \r\n        Write-Verbose $uri\r\n        [xml]$xml= Invoke-RestMethod -Uri $uri\r\n\r\n        if ($AsXML) {\r\n            Write-Verbose \"Writing XML document\"\r\n            $xml\r\n            Write-Verbose \"Ending function\"\r\n            #bail out since we're done\r\n            Return\r\n        }\r\n\r\n        if ($xml.query.results.place.woeid) {\r\n            Write-Verbose \"Parsing XML into an ordered hashtable\"\r\n            $hash = [ordered]@{\r\n                WOEID   = $xml.query.results.place.woeid\r\n                Locale  = $xml.query.results.place.locality1.'#text'\r\n                Region  = $xml.query.results.place.admin1.'#text'\r\n                Postal  = $xml.query.results.place.postal.'#text'\r\n                Country = $xml.query.results.place.country.code            \r\n            }\r\n            Write-Verbose \"Writing custom object\"\r\n            New-Object -TypeName PSObject -Property $hash\r\n\r\n        } #if $xml\r\n        else {\r\n            Write-Warning \"Failed to find anything for $item\"\r\n        }\r\n    } #foreach\r\n} #process\r\n\r\nEnd {\r\n    Write-Verbose \"Ending $($myinvocation.mycommand)\"\r\n }\r\n} #end function\r\n<\/pre>\n<p>To use the function you specify some sort of search criteria such as a postal code or city name.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png\" alt=\"\" \/><\/p>\n<p>I saved my WOEID as a variable in my PowerShell profile. This function also uses Invoke-RestMethod. I included a parameter to write an XML document to the pipeline instead in case you want to modify the function and need some help discovering the data. The second function, Get-Weather, uses the WOIED to get the current weather conditions. It too uses Invoke-RestMethod to retrieve the data. The resulting XML document is then parsed out using Select-XML to build an output object.<\/p>\n<pre class=\"lang:ps decode:true \">Function Get-Weather {\r\n\r\n&lt;#\r\n.Synopsis\r\nRetrieve weather information from Yahoo.com.\r\n.Description\r\nUsing the Yahoo weather APIs, this function will retrieve weather information for the specified WOEID or \"Where on Earth ID\". If you don't know your WOED, open a web browser and go to http:\/\/weather.yahoo.com\/. Enter in your zip or postal code. Your WOEID will be the number at the end of the url. \r\nOr you can use the Get-Woeid function.\r\n    \r\nA custom object is written to the pipeline and you can control how much information is displayed by specifying Basic, Extended or All for the Detail parameter.\r\n    \r\nBasic properties:\r\n    Date,Location,Temperature,Condition,ForecastCondition,ForecastLow, and ForecastHigh. This is the default.\r\nExtended properties:\r\n\tBasic properties plus WindChill,WindSpeed,Humidity,Barometer,Visibility,and Tomorrow.\r\nAll properties:\r\n\tExtended properties plus Sunrise,Sunset,City,Region,Zip,Latitude,Longitude,URL\r\n \r\n.Parameter Woeid\r\nYour WOEID, or \"Where on Earth ID\".\r\n.Parameter Unit\r\nShow temperature in Farenheit or Celsius\r\n.Parameter Online\r\nOpen the web page in your default browser.\r\n.Parameter AsXML\r\nWrite an XML document to the pipeline.\r\n.Example\r\nPS C:&gt; get-weather 12795711\r\n\r\nDate              : Mon, 16 Feb 2015 3:51 am PST\r\nLocation          : Beverly Hills, CA\r\nTemperature       : 56 F\r\nCondition         : Fair\r\nForecastCondition : Sunny\r\nForecastLow       : 55 F\r\nForecastHigh      : 72 F\r\n.Example\r\nPS C:\\&gt; get-weather 12795446 extended\r\n\r\nDate              : Mon, 16 Feb 2015 6:56 am PST\r\nLocation          : Las Vegas, NV\r\nTemperature       : 52 F\r\nCondition         : Mostly Cloudy\r\nForecastCondition : Sunny\r\nForecastLow       : 49 F\r\nForecastHigh      : 77 F\r\nWindChill         : 52 F\r\nWindSpeed         : 9 mph\r\nHumidity          : 35%\r\nBarometer         : 29.95 in and steady\r\nVisibility        : 10  mi\r\nTomorrow          : Tue 17 Feb 2015 Sunny Low 49F: High: 70F\r\n.Example\r\nPS C:\\&gt; 12795711,12795446,12762736 | Get-Weather -detail all | Format-Table City,Temperature,Condition,Sunrise,Sunset\r\nCity          Temperature Condition     Sunrise Sunset \r\n----          ----------- ---------     ------- ------ \r\nBeverly Hills 56 F        Fair          6:37 am 5:38 pm\r\nLas Vegas     52 F        Mostly Cloudy 6:26 am 5:21 pm\r\nSyracuse      -3 F        Partly Cloudy 7:01 am 5:34 pm\r\n.Example\r\nPS C:\\&gt; get-woeid \"Bangor,ME\" | get-weather \r\n\r\n\r\nDate              : Mon, 16 Feb 2015 9:51 am EST\r\nLocation          : Bangor, ME\r\nTemperature       : 5 F\r\nCondition         : Partly Cloudy\r\nForecastCondition : Partly Cloudy\/Wind\r\nForecastLow       : -6 F\r\nForecastHigh      : 12 F\r\n.Example\r\nPS C:\\&gt; get-woeid \"Juneau, AK\",\"Miami,FL\" | get-weather | Select Date,Location,Temperature\r\n\r\n\r\nDate                                 Location                             Temperature\r\n----                                 --------                             -----------\r\nMon, 16 Feb 2015 8:54 am AKST        Juneau, AK                           35 F\r\nMon, 16 Feb 2015 12:53 pm EST        Miami, FL                            75 F\r\n.Inputs\r\nStrings\r\n.Outputs\r\nCustom object\r\n.Link\r\nInvoke-RestMethod\r\n\r\n.Link\r\nGet-Woeid\r\nSelect-XML\r\n    \r\n.Notes\r\n NAME:      Get-Weather\r\n VERSION:   3.0\r\n AUTHOR:    Jeffery Hicks\r\n LASTEDIT:  February 16, 2015\r\n\r\n Learn more about PowerShell:\r\n <blockquote class=\"wp-embedded-content\" data-secret=\"0yLmKqHv6k\"><a href=\"https:\/\/jdhitsolutions.com\/blog\/essential-powershell-resources\/\">Essential PowerShell Learning Resources<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Essential PowerShell Learning Resources&#8221; &#8212; The Lonely Administrator\" src=\"https:\/\/jdhitsolutions.com\/blog\/essential-powershell-resources\/embed\/#?secret=N09nQhp6m2#?secret=0yLmKqHv6k\" data-secret=\"0yLmKqHv6k\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\r\n\r\n   ****************************************************************\r\n   * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *\r\n   * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK.  IF   *\r\n   * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *\r\n   * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING.             *\r\n   ****************************************************************\r\n \r\n#&gt;\r\n\r\n[cmdletbinding(DefaultParameterSetName=\"detail\")]\r\n\r\nParam(\r\n[Parameter(Position=0,Mandatory,HelpMessage=\"Enter a WOEID value\",\r\nValueFromPipeline,\r\nValueFromPipelineByPropertyName\r\n)]\r\n[ValidateNotNullorEmpty()]\r\n[string[]]$woeid,\r\n    \r\n[Parameter(Position=1,ParameterSetName=\"detail\")]\r\n[ValidateSet(\"Basic\",\"Extended\",\"All\")]\r\n[String]$Detail=\"Basic\",\r\n\r\n[ValidateSet(\"f\",\"c\")]\r\n[String]$Unit=\"f\",\r\n    \r\n[Parameter(ParameterSetName=\"online\")]\r\n[Switch]$Online,\r\n\r\n[Parameter(ParameterSetName=\"xml\")]\r\n[Switch]$AsXML\r\n    \r\n)\r\n\r\nBegin {    \r\n\tWrite-Verbose \"Starting $($myinvocation.mycommand)\"\r\n\t\r\n\t#define property sets\r\n\t$BasicProp=@(\"Date\",\"Location\",\"Temperature\",\"Condition\",\"ForecastCondition\",\r\n\t\"ForecastLow\",\"ForecastHigh\")\r\n\t$ExtendedProp=$BasicProp\r\n\t$ExtendedProp+=@(\"WindChill\",\"WindSpeed\",\"Humidity\",\"Barometer\",\r\n\t\"Visibility\",\"Tomorrow\")\r\n\t$AllProp=$ExtendedProp\r\n\t$AllProp+=@(\"Sunrise\",\"Sunset\",\"City\",\"Region\",\"Latitude\",\r\n\t\"Longitude\",\"ID\",\"URL\")\r\n\t\r\n\t#unit must be lower case\r\n\t$Unit=$Unit.ToLower()\r\n\tWrite-Verbose \"Using unit $($unit.toLower())\"\r\n    \r\n    #define base url string\r\n    [string]$uribase = \"http:\/\/weather.yahooapis.com\/forecastrss\"\r\n    Write-Verbose \"Base = $uribase\"\r\n } #begin\r\n \r\nProcess {\r\n    Write-Verbose \"Processing\"\r\n    \r\n\tforeach ($id in $woeid) {\r\n\t\tWrite-Verbose \"Getting weather info for woeid: $id\"\r\n\t    \r\n\t    #define a uri for the given WOEID\r\n        [string]$uri = \"{0}?w={1}&amp;u={2}\" -f $uribase,$id,$unit\r\n\t     if ($online) {\r\n\t    \tWrite-Verbose \"Opening $uri in web browser\"\r\n\t    \tStart-Process -FilePath $uri\r\n            #bail out since there's nothing else to do.\r\n            Return\r\n\t    }\r\n        Write-Verbose \"Downloading $uri\"\r\n\t    [xml]$xml= Invoke-WebRequest -uri $uri\r\n\r\n        if ($AsXML) {\r\n            Write-Verbose \"Writing XML document\"\r\n            $xml\r\n            Write-Verbose \"Ending function\"\r\n            #bail out since we're done\r\n            Return\r\n        }\r\n\r\n\t    if ($xml.rss.channel.item.Title -eq \"City not found\") {\r\n\t        Write-Warning \"Could not find a location for $id\"}\r\n\t    else {\r\n\t    \tWrite-Verbose \"Processing xml\"\r\n\t    \t\r\n\t        #initialize a new hash table\r\n\t        $properties=@{}\r\n\t    \t&lt;#\r\n            get the yweather nodes\t\r\n        \tyweather information comes from a different namespace so we'll\r\n            use Select-XML to extract the data. Parsing out all data regardless\r\n            of requested detail since it doesn't take much effort. Later,\r\n            only the requested detail will be written to the pipeline.\r\n            #&gt;\r\n\r\n        \t#define the namespace hash\r\n        \t$namespace=@{yweather=$xml.rss.yweather}\r\n        \t$units=(Select-Xml -xml $xml -XPath \"\/\/yweather:units\" -Namespace $namespace ).node\r\n\t    \t\r\n\t        $properties.Add(\"Condition\",$xml.rss.channel.item.condition.text)\r\n\t        $properties.Add(\"Temperature\",\"$($xml.rss.channel.item.condition.temp) $($units.temperature)\")\r\n            #convert Date to a [datetime] object\r\n            $dt = $xml.rss.channel.item.condition.date.Substring(0,$xml.rss.channel.item.condition.Date.LastIndexOf(\"m\")+1) -as [datetime]\r\n\t        $properties.Add(\"Date\",$dt)\r\n\t    \r\n\t        #get forecast\r\n            $properties.add(\"ForecastDate\",$xml.rss.channel.item.forecast[0].date)\r\n\t        $properties.add(\"ForecastCondition\",$xml.rss.channel.item.forecast[0].text )\r\n\t        $properties.Add(\"ForecastLow\",\"$($xml.rss.channel.item.forecast[0].low) $($units.temperature)\" )\r\n\t        $properties.Add(\"ForecastHigh\",\"$($xml.rss.channel.item.forecast[0].high) $($units.temperature)\" )\r\n\t        \r\n\t        #build tomorrow's foreacst\r\n\t        $t=$xml.rss.channel.item.forecast[1]\r\n\t        $tomorrow=\"{0} {1} {2} Low {3}{4}: High: {5}{6}\" -f $t.day,$t.Date,$t.Text,$t.low, $($units.temperature),$t.high, $($units.temperature)\r\n\t        $properties.add(\"Tomorrow\",$tomorrow)\r\n\t        \r\n\t        #get optional information\r\n          \t$properties.Add(\"Latitude\",$xml.rss.channel.item.lat)\r\n        \t$properties.Add(\"Longitude\",$xml.rss.channel.item.long)\r\n        \t$city=$xml.rss.channel.location.city\r\n        \t$properties.Add(\"City\",$city)\r\n        \t$region=$xml.rss.channel.location.region\r\n            $country=$xml.rss.channel.location.country\r\n        \t\r\n        \tif (-not ($region)) {\r\n               #if no region found then use country\r\n               Write-Verbose \"No region found. Using Country\"\r\n                $region=$country\r\n            }\r\n            $properties.Add(\"Region\",$region)\r\n            $location=\"{0}, {1}\" -f $city,$region\r\n\t        $properties.Add(\"Location\",$location)\t    \t \r\n\t        $properties.Add(\"ID\",$id)\r\n        \t\r\n            #get additional yweather information        \t\r\n        \t$wind=(Select-Xml -xml $xml -XPath \"\/\/yweather:wind\" -Namespace $namespace ).node\r\n        \t$astronomy=(Select-Xml -xml $xml -XPath \"\/\/yweather:astronomy\" -Namespace $namespace ).node\r\n        \t$atmosphere=(Select-Xml -xml $xml -XPath \"\/\/yweather:atmosphere\" -Namespace $namespace ).node\r\n        \t\r\n        \t$properties.Add(\"WindChill\",\"$($wind.chill) $($units.temperature)\")\r\n        \t$properties.Add(\"WindSpeed\",\"$($wind.speed) $($units.speed)\")\r\n        \t$properties.Add(\"Humidity\",\"$($atmosphere.humidity)%\")\r\n        \t$properties.Add(\"Visibility\",\"$($atmosphere.visibility)  $($units.distance)\")\r\n        \t\r\n            #decode rising\r\n        \tswitch ($atmosphere.rising) {\r\n        \t\t0 {$state=\"steady\"}\r\n        \t\t1 {$state=\"rising\"}\r\n        \t\t2 {$state=\"falling\"}\r\n        \t}\r\n         \t$properties.Add(\"Barometer\",\"$($atmosphere.pressure) $($units.pressure) and $state\")\r\n        \t$properties.Add(\"Sunrise\",$astronomy.sunrise)\r\n        \t$properties.Add(\"Sunset\",$astronomy.sunset)\r\n        \t$properties.Add(\"url\",$uri)\r\n           \r\n\t\t   #create new object to hold values\r\n\t\t   $obj= New-Object -TypeName PSObject -Property $properties\r\n\t\t   \r\n\t\t   #write object and properties. Default is Basic\r\n\t\t   Switch ($detail) {\r\n           \"All\"  {\r\n\t\t   \t     Write-Verbose \"Using All properties\"\r\n\t\t   \t     $obj | Select-Object -Property $AllProp\r\n\t\t    } #all\r\n\t\t   \"Extended\"  {\r\n\t\t   \t    Write-Verbose \"Using Extended properties\"\r\n\t\t   \t    $obj | Select-Object -Property $ExtendedProp\r\n\t\t   } #extended\r\n\t\t   Default {\r\n\t\t   \t     Write-Verbose \"Using Basic properties\"\r\n\t\t   \t     $obj | Select-Object -Property $BasicProp\r\n\t\t     } #default\r\n\t       } #Switch\r\n\t   } #processing XML\r\n   } #foreach $id\r\n\r\n } #process\r\n \r\n End {\r\n \tWrite-Verbose \"Ending $($myinvocation.mycommand)\"\r\n }  #end \r\n    \r\n} #end function<\/pre>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW2.png\" alt=\"\" \/><\/p>\n<p>You can also change the temperature units.<\/p>\n<p>I wrote these as two separate functions, I suppose I could have nested Get-Woeid inside Get-Weather, although the better option is probably to build a module. I'll leave that for you. The functions are designed to take advantage of pipeline binding so that you can pipe Get-Woeid to Get-Weather.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW3.png\" alt=\"\" \/><\/p>\n<p>You can even get weather for multiple locations.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW4.png\" alt=\"\" \/><\/p>\n<p>This weather source includes a lot of information so I created a parameter to control how much detail to display. What you see above is basic information. But there is 'extended'.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW5.png\" alt=\"\" \/><\/p>\n<p>Or you can see everything with a detail setting of 'all'.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW6.png\" alt=\"\" \/><\/p>\n<p>Notice that url at the end? As the cherry on top, you can open the weather forecast in a browser using the Online parameter.<\/p>\n<pre><code>get-woeid 13244 | get-weather -Online<\/code><\/pre>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW7.png\" alt=\"\" \/><\/p>\n<p>There you have it. No matter where you are you can check the weather. Or look out a window.<\/p>\n<p>Enjoy.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday I posted a popular article about using Invoke-WebRequest to get weather conditions. That function used the Yahoo web site but really only worked for US cities. So I also cleaned up and revised another set of advanced PowerShell functions (required PowerShell 3) that can retrieve weather information for probably any location on Earth. The&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"New: Getting the Weather Where On Earth with #PowerShell","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4,8],"tags":[429,534,540,208,206],"class_list":["post-4232","post","type-post","status-publish","format-standard","hentry","category-powershell","category-scripting","tag-invoke-restmethod","tag-powershell","tag-scripting","tag-weather","tag-xml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Getting the Weather Where On Earth &#8226; The Lonely Administrator<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting the Weather Where On Earth &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"Yesterday I posted a popular article about using Invoke-WebRequest to get weather conditions. That function used the Yahoo web site but really only worked for US cities. So I also cleaned up and revised another set of advanced PowerShell functions (required PowerShell 3) that can retrieve weather information for probably any location on Earth. The...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2015-02-17T13:59:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-02-17T14:06:33+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png\" \/>\n<meta name=\"author\" content=\"Jeffery Hicks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:site\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeffery Hicks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Getting the Weather Where On Earth\",\"datePublished\":\"2015-02-17T13:59:05+00:00\",\"dateModified\":\"2015-02-17T14:06:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/\"},\"wordCount\":332,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/021715_1359_GettingtheW1.png\",\"keywords\":[\"Invoke-RestMethod\",\"PowerShell\",\"Scripting\",\"weather\",\"xml\"],\"articleSection\":[\"PowerShell\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/\",\"name\":\"Getting the Weather Where On Earth &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/021715_1359_GettingtheW1.png\",\"datePublished\":\"2015-02-17T13:59:05+00:00\",\"dateModified\":\"2015-02-17T14:06:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/021715_1359_GettingtheW1.png\",\"contentUrl\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/021715_1359_GettingtheW1.png\",\"width\":595,\"height\":530},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/4232\\\/getting-the-weather-where-on-earth\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PowerShell\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/powershell\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting the Weather Where On Earth\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/\",\"name\":\"The Lonely Administrator\",\"description\":\"Practical Advice for the Automating IT Pro\",\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\",\"name\":\"Jeffery Hicks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"caption\":\"Jeffery Hicks\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting the Weather Where On Earth &#8226; The Lonely Administrator","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/","og_locale":"en_US","og_type":"article","og_title":"Getting the Weather Where On Earth &#8226; The Lonely Administrator","og_description":"Yesterday I posted a popular article about using Invoke-WebRequest to get weather conditions. That function used the Yahoo web site but really only worked for US cities. So I also cleaned up and revised another set of advanced PowerShell functions (required PowerShell 3) that can retrieve weather information for probably any location on Earth. The...","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/","og_site_name":"The Lonely Administrator","article_published_time":"2015-02-17T13:59:05+00:00","article_modified_time":"2015-02-17T14:06:33+00:00","og_image":[{"url":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png","type":"","width":"","height":""}],"author":"Jeffery Hicks","twitter_card":"summary_large_image","twitter_creator":"@JeffHicks","twitter_site":"@JeffHicks","twitter_misc":{"Written by":"Jeffery Hicks","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Getting the Weather Where On Earth","datePublished":"2015-02-17T13:59:05+00:00","dateModified":"2015-02-17T14:06:33+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/"},"wordCount":332,"commentCount":4,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#primaryimage"},"thumbnailUrl":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png","keywords":["Invoke-RestMethod","PowerShell","Scripting","weather","xml"],"articleSection":["PowerShell","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/","name":"Getting the Weather Where On Earth &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#primaryimage"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#primaryimage"},"thumbnailUrl":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png","datePublished":"2015-02-17T13:59:05+00:00","dateModified":"2015-02-17T14:06:33+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#primaryimage","url":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png","contentUrl":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/021715_1359_GettingtheW1.png","width":595,"height":530},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4232\/getting-the-weather-where-on-earth\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"PowerShell","item":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},{"@type":"ListItem","position":2,"name":"Getting the Weather Where On Earth"}]},{"@type":"WebSite","@id":"https:\/\/jdhitsolutions.com\/blog\/#website","url":"https:\/\/jdhitsolutions.com\/blog\/","name":"The Lonely Administrator","description":"Practical Advice for the Automating IT Pro","publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jdhitsolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9","name":"Jeffery Hicks","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","caption":"Jeffery Hicks"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":731,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/731\/powershell-weather-module\/","url_meta":{"origin":4232,"position":0},"title":"PowerShell Weather Module","author":"Jeffery Hicks","date":"July 26, 2010","format":false,"excerpt":"I first wrote a Windows PowerShell function several years ago to retrieve weather information via Yahoo's weather service. I've been itching to rewrite it and finally found some time over the weekend. Turns out it's a good thing I did because the method I had been using to query the\u2026","rel":"","context":"In &quot;Miscellaneous&quot;","block_context":{"text":"Miscellaneous","link":"https:\/\/jdhitsolutions.com\/blog\/category\/miscellaneous\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4529,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4529\/whats-the-weather\/","url_meta":{"origin":4232,"position":1},"title":"What\u2019s the Weather?","author":"Jeffery Hicks","date":"September 23, 2015","format":false,"excerpt":"I have used a PowerShell module I wrote a while ago to retrieve weather information from Yahoo.com. Yahoo offers a set of web APIs which are free to use, that will provide weather information for a given location. The location is determined by a \"Where On Earth ID\", or woeid.\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"clouds","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/09\/092315_1158_WhatstheWea1.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4222,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4222\/baby-its-cold-outside\/","url_meta":{"origin":4232,"position":2},"title":"Baby, It&#8217;s Cold Outside","author":"Jeffery Hicks","date":"February 16, 2015","format":false,"excerpt":"I don't know about your neck of the woods, but it is downright Arctic here. So I thought I'd polish up my PowerShell function to get weather data. #requires -version 3.0 Function Get-MyWeather { <# .Synopsis Get the weather for a US zip code .Description This command will query the\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"weather","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/02\/weather-300x138.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4184,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4184\/friday-fun-search-me\/","url_meta":{"origin":4232,"position":3},"title":"Friday Fun: Search Me","author":"Jeffery Hicks","date":"January 16, 2015","format":false,"excerpt":"I've been working on a few revisions and additions to my ISE Scripting Geek module. Even though what I'm about to show you will eventually be available in a future release of that module, I thought I'd share it with you today. One of the things I wanted to be\u2026","rel":"","context":"In &quot;Friday Fun&quot;","block_context":{"text":"Friday Fun","link":"https:\/\/jdhitsolutions.com\/blog\/category\/friday-fun\/"},"img":{"alt_text":"magnifying-glass-text-label-search","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2013\/01\/magnifying-glass-text-label-search-150x150.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3140,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/3140\/friday-fun-quote-of-the-day-revised\/","url_meta":{"origin":4232,"position":4},"title":"Friday Fun: Quote of the Day Revised","author":"Jeffery Hicks","date":"June 28, 2013","format":false,"excerpt":"This week TrainSignal has been running a contest to celebrate my new PowerShell 3.0 course . All you have to do to win is enter some off-the-wall, silly or non-production use of PowerShell. I've posted a few examples on the TrainSignal blog this week. \u00a0These Friday Fun posts I write\u2026","rel":"","context":"In &quot;Friday Fun&quot;","block_context":{"text":"Friday Fun","link":"https:\/\/jdhitsolutions.com\/blog\/category\/friday-fun\/"},"img":{"alt_text":"talkbubble-v3","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/05\/talkbubble-v3-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":4252,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4252\/a-powershell-weather-service\/","url_meta":{"origin":4232,"position":5},"title":"A PowerShell Weather Service","author":"Jeffery Hicks","date":"February 19, 2015","format":false,"excerpt":"I've been having some fun this week sharing a few tools for getting weather information and forecasts using PowerShell. To complete the story, today I have one more technique. Using PowerShell, you can query a web service for weather information. In simple terms a web service is like an application\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/4232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=4232"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/4232\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=4232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=4232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=4232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}