From 9c6d1501bc56615b398d487cb7ce5f5cf75079c5 Mon Sep 17 00:00:00 2001 From: Lanta Date: Wed, 22 Nov 2023 14:57:04 +0100 Subject: [PATCH] archiving and building matches caches file --- update/get_matches.ps1 | 44 +++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/update/get_matches.ps1 b/update/get_matches.ps1 index 376ab26..5430119 100644 --- a/update/get_matches.ps1 +++ b/update/get_matches.ps1 @@ -12,7 +12,7 @@ new-lock -by "get_matches" # Read the content of the file as a single string $fileContent = Get-Content -Path "$scriptroot/../config/config.php" -Raw - +$players = (Get-Content -Path "$scriptroot/../config/clanmembers.json" | ConvertFrom-Json).clanmembers # Use regex to match the apiKey value if ($fileContent -match "\`$apiKey\s*=\s*\'([^\']+)\'") { $apiKey = $matches[1] @@ -34,10 +34,11 @@ foreach ($player in $player_data) { $playermatches = @() foreach ($match in $lastMatches) { Write-Host "Getting match for $($player.attributes.name) match: $match " - if(Test-Path "$scriptroot/../data/matches/$match.json"){ + if (Test-Path "$scriptroot/../data/matches/$match.json") { write-output "Getting $match from cache" $stats = get-content "$scriptroot/../data/matches/$match.json" | convertfrom-json - }else{ + } + else { $stats = Invoke-RestMethod -Uri "https://api.pubg.com/shards/steam/matches/$match" -Method GET -Headers $headers $stats | ConvertTo-Json -Depth 100 | Out-File "$scriptroot/../data/matches/$match.json" } @@ -66,8 +67,8 @@ foreach ($player in $player_data) { if (test-path "$scriptroot/../data/player_matches.json") { $old_player_data = get-content "$scriptroot/../data/player_matches.json" | convertfrom-json -Depth 100 - $new_ids = ($player_matches.player_matches | where-object {$_.stats.winplace -eq 1}).id - $old_ids = ($old_player_data.player_matches | where-object {$_.stats.winplace -eq 1}).id + $new_ids = ($player_matches.player_matches | where-object { $_.stats.winplace -eq 1 }).id + $old_ids = ($old_player_data.player_matches | where-object { $_.stats.winplace -eq 1 }).id $new_win_matches = ((Compare-Object -ReferenceObject $old_ids -DifferenceObject $new_ids) | Where-Object { $_.SideIndicator -eq '=>' }).InputObject | Select-Object -Unique $new_win_matches = $old_player_data.new_win_matches + $new_win_matches | Select-Object -Unique $player_matches += [PSCustomObject]@{ @@ -76,8 +77,6 @@ if (test-path "$scriptroot/../data/player_matches.json") { } - - $currentDateTime = Get-Date # Get current timezone @@ -92,5 +91,36 @@ $playermatches += [PSCustomObject]@{ $player_matches | convertto-json -Depth 100 | out-file "$scriptroot/../data/player_matches.json" +write-output 'Cleaning matches' + +$matchfiles = Get-ChildItem "$scriptroot/../data/matches" -Filter *.json +$player_matches_object = @() +foreach ($file in $matchfiles) { + $filecontent = get-content $file | convertfrom-json + $matchfiledate = $filecontent.data.attributes.createdAt + if ($matchfiledate -lt (get-date).AddMonths(-1)) { + write-output "archiving $matchfiledate" + Move-Item -Path $file -Destination "$scriptroot/../data/matches/archive" + } + else { + $result = ($filecontent.included | where-object { $_.type -eq 'participant' } | Where-Object { $players -contains $_.attributes.stats.name }) + $filecontent.data.id + $result.count + $player_matches_cached = ($filecontent.included | where-object { $_.type -eq 'participant' } | Where-Object { $players -contains $_.attributes.stats.name }).attributes.stats + if ($null -ne $player_matches_cached) { + $player_matches_object += [PSCustomObject]@{ + matchType = $filecontent.data.attributes.matchType + gameMode = $filecontent.data.attributes.gameMode + createdAt = $filecontent.data.attributes.createdAt + mapName = $filecontent.data.attributes.mapName + id = $filecontent.data.id + stats = $player_matches_cached + } + } + write-output "NEW $matchfiledate" + } +} +$player_matches_object | convertto-json -Depth 100 | out-file "$scriptroot/../data/cached_matches.json" + remove-lock Stop-Transcript \ No newline at end of file