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