From: Edward Delaporte Date: Wed, 8 Nov 2023 23:15:57 +0000 (-0600) Subject: Merge branch 'main' of github.com:edthedev/dotfiles X-Git-Url: https://us-delaporte.pagekite.me/gitweb/dotfiles.git/commitdiff_plain/f27b2328bbbec5c09e00d3caaee0b8198670f38a?hp=138100b44b53b208ca6046aa7dcb78edc78f5cd9 Merge branch 'main' of github.com:edthedev/dotfiles --- diff --git a/psmodules/house_shopping.md b/psmodules/house_shopping.md new file mode 100644 index 0000000..af1c9b4 --- /dev/null +++ b/psmodules/house_shopping.md @@ -0,0 +1,33 @@ + + +## Reference + +- [Azure Maps](https://learn.microsoft.com/en-us/powershell/module/az.maps/?view=azps-10.4.1&viewFallbackFrom=azps-10.0.0) +- https://learn.microsoft.com/en-us/azure/azure-maps/how-to-search-for-address + + +https://geekeefy.wordpress.com/2016/05/17/powershell-module-for-google-map/ + +## Setup + +Make sure that PowerShell 7 or higher is installed: + +```powershell +if($PSVersionTable.PSVersion.Major < 7) { + winget install --id Microsoft.Powershell --source winget +} + +Then inside PowerShell 7, install the Az module: + +```powershell +Install-Module -Name Az -Repository PSGallery -Force +``` + +### Subscription Key + + + +Set your subscription key: +```powershell +$env:AzMapsSubKey="" +``` \ No newline at end of file diff --git a/psmodules/house_shopping.psm1 b/psmodules/house_shopping.psm1 new file mode 100644 index 0000000..819194b --- /dev/null +++ b/psmodules/house_shopping.psm1 @@ -0,0 +1,68 @@ + +function Get-TravelTimes() { + + +} + +$fuzzyUrl = "https://atlas.microsoft.com/search/fuzzy/json?&api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=pizza" + +function Get-MapAddress() { + param( + [string]$address + ) + $subKey = $env:AzMapsSubKey + $addyUrl = "https://atlas.microsoft.com/search/address/json?&subscription-key=$subKey&api-version=1.0&language=en-US&query=$address" + $result = Invoke-WebRequest $addyUrl + if($result.StatusCode -Eq 200){ + return $result.Content | ConvertFrom-Json + } + return $result.StatusDescription +} + +function Get-MapCoords() { + param( + [string]$address + ) + $subKey = $env:AzMapsSubKey + $result = Get-MapAddress -Address $address + return $result.results.entryPoints[0].position +} + +function Get-MapTravelPlan() { + param( + [string]$from_address, + [string]$to_address + ) + $subKey = $env:AzMapsSubKey + $pos1 = Get-MapCoords -Address $from_address + $lat1 = $pos1.lat + $lon1 = $pos1.lon + + $pos2 = Get-MapCoords -Address $to_address + $lat2 = $pos2.lat + $lon2 = $pos2.lon + + $query = "$lat1,$($lon1):$lat2,$lon2" + # Write-Host $query + $travelUrl = "https://atlas.microsoft.com/route/directions/json?subscription-key=$subKey&api-version=1.0&query=$query&travelMode=car&traffic=true&departAt=2025-03-29T08:00:20&computeTravelTimeFor=all" + $result = Invoke-WebRequest $travelUrl + if($result.StatusCode -Eq 200){ + $content = $result.Content | ConvertFrom-Json + if($content.formatVersion -Ne "0.0.12"){ + Write-Warning "BEWARE Format has updated! BEWARE" + } + return $content.routes + } + return $result.StatusDescription +} + + +function Get-MapTravelMinutes() { + param( + [string]$from_address, + [string]$to_address + ) + $routes = Get-MapTravelPlan -from_address $from_address -to_address $to_address + $seconds = $routes.summary.travelTimeInSeconds + return $seconds/60 +} \ No newline at end of file