public/Invoke-AutomatedFacebookStoryWithPhoto.ps1
function Invoke-AutomatedFacebookStoryWithPhoto { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Competition, [Parameter(Mandatory=$true)] [ValidateSet('corners','goals','match')] [string]$Content, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Date, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$PageId, [Parameter(Mandatory=$false)] [switch]$Post, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Path, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Token ) process{ $ErrorActionPreference = 'Stop' try { # Import the fixtures from the results file $ResultsPath = "$Path\sportsmonk-results\$Competition\$Date\$Competition-$Date.csv" $ResultsPathExists = Test-Path -Path $ResultsPath if ($ResultsPathExists) { $FixtureResults = Import-Csv -Path $ResultsPath -ErrorAction Stop # Check the artifact path exists $FixtureArtifactPath = "$Path\fixture-artifact\working-set\$Competition\$Date\$Content" $FixtureArtifactPathExists = Test-Path -Path $FixtureArtifactPath $Hash1 =@{ Competition = $Competition FunctionName = $($MyInvocation.MyCommand.Name) Content = $Content FixtureArtifactPathExists = $FixtureArtifactPathExists FixtureResultCount = $($FixtureResults.Count) } $Hash1 | Format-Table } # if if ($FixtureArtifactPathExists -and $($FixtureResults.Count) -ge 1) { # Get the fixture artifacts $FixtureArtifacts = Get-ChildItem -Path $FixtureArtifactPath -Recurse -File -ErrorAction Stop # Only if there are artifacts proceed if ($($FixtureArtifacts.Count) -ge 1) { foreach ($FixtureResult in $FixtureResults) { $FixtureNameString = $($FixtureResult.FixtureName).Replace(' ','-') $FilePrefix = "$($FixtureResult.fixture_id)-$FixtureNameString" $FixtureArtifact = $FixtureArtifacts | Where-Object {$_.Name -like "$FilePrefix*"} if ($($FixtureArtifact.Count) -eq 1) { $PSObject = [PSCustomObject]@{ Competition = $Competition Date = $Date FixtureId = $($FixtureResult.fixture_id) FixtureName = $($FixtureResult.FixtureName) PhotoPath = $($FixtureArtifact.FullName) Content = $Content Endpoint = 'facebook-story' } $PSObject | Format-List [int]$DateYear = $Date.Split('-')[0] [int]$DateMonth = $Date.Split('-')[1] $MFileDateTime = Get-Date -Format FileDateTime $MLogPath = Get-ProcessedFootballFixtureFolderPath -Competition $Competition -DateYear $DateYear -DateMonth $DateMonth -Type media -Path $Path $FilesToProcess = Get-ChildItem -Path $MLogPath | Where-Object {$_.FullName -like "*$Content-fbstory*"} $FixtureProcessed = $false foreach ($File in $($FilesToProcess.FullName)) { Write-CustomWarningMessage -ParentPath $Path -FilePath $File $FileContent = Get-Content $File | ConvertFrom-Json if ($($FileContent.FixtureId) -eq $($FixtureResult.fixture_id)) { $FixtureProcessed = $true } # if } # foreach if ($Post -and !$FixtureProcessed) { Invoke-FacebookStoryWithPhoto -PageId $PageId -Token $Token -Path $($FixtureArtifact.FullName) $PSObject| ConvertTo-Json | Set-Content -Path "$MlogPath\$MFileDateTime-$Competition-football-fixture-$Content-fbstory.json" } # if } # if } # foreach } # if } # if } catch { throw "$($MyInvocation.MyCommand.Name): $_.Exception.Message" } # try catch } # process } # function |