Advertisement
Guest User

Pricerunner CLI - Hej HOL

a guest
Dec 5th, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Get-PRList {
  2.     Param (
  3.         [parameter(Mandatory=$true)]
  4.         $product
  5.     )
  6.  
  7.     $searchUrl  = "https://www.pricerunner.dk/public/search/v2/dk?q=$($product)"
  8.     $result     = Invoke-RestMethod -Uri $searchUrl -Method Get
  9.     $holdingList = New-Object -TypeName 'System.Collections.Generic.list[psobject]'
  10.  
  11.     [string[]]$visible = 'id','Navn','Brand','Pris','Rating','Ratings','Beskrivelse'
  12.     $type = 'DefaultDisplayPropertySet'
  13.     [Management.Automation.PSMemberInfo[]]$info = New-Object System.Management.Automation.PSPropertySet($type,$visible)
  14.  
  15.     foreach ($item in $result.products ) {
  16.         $formattedUrl = ($item.url.Split('/')| where {-not [string]::IsNullOrEmpty($_)} | select -First 2) -join '/'
  17.         $apiOfferUrl = "https://www.pricerunner.dk/public/productlistings/$formattedUrl/dk?offer_sort=price"
  18.         $p = [ordered]@{            
  19.             Navn        = $item.name
  20.             Brand       = $item.brand.name            
  21.             Pris        = [int]::parse($item.lowestPrice.amount.split('.')[0])
  22.             Rating      = $item.rating.averageRating
  23.             Ratings     = $item.rating.count
  24.             Beskrivelse = $item.description
  25.             OfferUrl    = "https://pricerunner.dk" + $item.url
  26.             ApiofferUrl = $apiOfferUrl
  27.         }
  28.         $obj = New-Object -TypeName PsObject -Property $p
  29.         $holdingList.Add($obj)    
  30.     }
  31.    
  32.     $i = 0
  33.     $returnList = $holdingList |
  34.         Sort-Object Pris
  35.    
  36.     $returnList |
  37.         ForEach-Object {
  38.             $_ | Add-Member -MemberType NoteProperty -Name id -Value $i
  39.             $_ | Add-Member -MemberType MemberSet -Name PSStandardMembers -Value $info
  40.             $i++
  41.         }
  42.  
  43.     return $returnList
  44. }
  45.  
  46. function Open-PRItem {
  47.     [cmdletbinding()]
  48.     Param(
  49.         [parameter(
  50.             Mandatory=$true,
  51.             ValueFromPipeline=$true
  52.         )]
  53.         $PRobject
  54.     )
  55.  
  56.     start-process $PRobject.offerurl
  57. }
  58.  
  59. # Eksempel på brug af de 2 funktioner
  60.  
  61. #Lave search på pricerunner og læg det ned i en liste
  62. $r = Get-PRList -product 'bosh vaskemaskine'; $r | ft
  63.  
  64. # OUTPUT som tabel
  65. id Navn             Brand  Pris Rating Ratings Beskrivelse
  66. -- ----             -----  ---- ------ ------- -----------
  67.  0 Bosch WAN282P8SN        2000 4.2         25 Frontbetjent vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 8 kg
  68.  1 Bosch WAJ240L8SN        2199 0            0 Frontbetjent vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 8 kg
  69.  2 Bosch WAJ240L7SN        2499 0            0 Frontbetjent vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 7 kg
  70.  3 Bosch WAB24166SN        2594 4.3        159 Frontbetjent vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 6 kg
  71.  4 Bosch WAT2849PSN        2666 4.4         74 Frontbetjent vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 9 kg
  72.  5 Bosch WAT283T8SN        2999 4.2         15 Frontbetjente vaskemaskiner, A+++, Standardbredde 60 cm, Vaskekapacitet 8.0 kg
  73.  6 Bosch WAN280L2SN        2999 0            0 Frontbetjent vaskemaskiner, A++, Standardbredde 60 cm, Vaskekapacitet 7 kg
  74.  
  75. # Gå til PR side
  76. # Efter man har en lite af objekter kan man pipe dem videre til nr 2 funktion, som default browser til den pricerunner side hvor man kan se hvilke forhandlere der har produktet. Man bruger id fra output til at refere til det produkt man er interesset i
  77.  
  78. $r[6] | Open-PRItem
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement