]> apps.delaporte.us Git - dotfiles.git/blob - psmodules/house_shopping.psm1
WIP Add-Addresses
[dotfiles.git] / psmodules / house_shopping.psm1
1
2 function Add-Addresses(){
3 Param(
4 [string]$addressFile = "Addresses.csv",
5 [string]$outFile= "Address_Details.csv"
6 )
7 Copy-Item $outFile "$outFile.backup"
8 $addressList = Get-Content $addressFile | ConvertFrom-Csv
9 $details = Get-Content $outFile| ConvertFrom-Csv
10
11 $results = [System.Collections.ArrayList]@()
12 $details | ForEach-Object {
13 $idx = $results.Add($_)
14 }
15 $addressList | ForEach-Object {
16 if($details -NotContains $_.Address)
17 {
18 $idx = $results.Add($_)
19 Write-Host "Aadded " + $_.Address
20 }
21 }
22 $results | Format-Table
23 $answer = Read-Host -Prompt "Write updated file? y/N"
24 if($answer -Eq "y") {
25 $results | Export-Csv -NoTypeInformation -Path $outFile
26 Write-Host "Updated $outFile"
27 }
28 }
29
30
31 function Add-AddressLocations(){
32 Param(
33 [string]$outFile= "Address_Details.csv"
34 )
35 Copy-Item $outFile "$outFile.backup"
36 $details = Get-Content $outFile| ConvertFrom-Csv
37
38 $details | ForEach-Object {
39 if($_.Lat -eq '')
40 {
41 $posit = Get-MapCoords -Address $_.Address
42 $_.Lat = $posit.Lat
43 $_.Lon = $posit.Lon
44 }
45 }
46 $details | Format-Table
47 # $details | Export-Csv -NoTypeInformation -Path $outFile
48 Write-Host "Updated $outFile"
49 }
50
51
52 function Add-TravelTimes() {
53 Param(
54 [string]$outFile= "Address_Details.csv"
55 )
56 $details = Get-Content $outFile| ConvertFrom-Csv
57
58 }
59
60 $fuzzyUrl = "https://atlas.microsoft.com/search/fuzzy/json?&api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&language=en-US&query=pizza"
61
62 function Get-MapAddress() {
63 param(
64 [string]$address
65 )
66 $subKey = $env:AzMapsSubKey
67 $addyUrl = "https://atlas.microsoft.com/search/address/json?&subscription-key=$subKey&api-version=1.0&language=en-US&query=$address"
68 $result = Invoke-WebRequest $addyUrl
69 if($result.StatusCode -Eq 200){
70 return $result.Content | ConvertFrom-Json
71 }
72 return $result.StatusDescription
73 }
74
75 function Get-MapCoords() {
76 param(
77 [string]$address
78 )
79 $subKey = $env:AzMapsSubKey
80 $result = Get-MapAddress -Address $address
81 return $result.results.entryPoints[0].position
82 }
83
84 function Get-MapTravelPlan() {
85 param(
86 [string]$from_address,
87 [string]$to_address
88 )
89 $subKey = $env:AzMapsSubKey
90 $pos1 = Get-MapCoords -Address $from_address
91 $lat1 = $pos1.lat
92 $lon1 = $pos1.lon
93
94 $pos2 = Get-MapCoords -Address $to_address
95 $lat2 = $pos2.lat
96 $lon2 = $pos2.lon
97
98 $query = "$lat1,$($lon1):$lat2,$lon2"
99 # Write-Host $query
100 $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"
101 $result = Invoke-WebRequest $travelUrl
102 if($result.StatusCode -Eq 200){
103 $content = $result.Content | ConvertFrom-Json
104 if($content.formatVersion -Ne "0.0.12"){
105 Write-Warning "BEWARE Format has updated! BEWARE"
106 }
107 return $content.routes
108 }
109 return $result.StatusDescription
110 }
111
112
113 function Get-MapTravelMinutes() {
114 param(
115 [string]$from_address,
116 [string]$to_address
117 )
118 $routes = Get-MapTravelPlan -from_address $from_address -to_address $to_address
119 $seconds = $routes.summary.travelTimeInSeconds
120 return $seconds/60
121 }