public/Get-InstagramPostCount.ps1

function Get-InstagramPostCount {
    <#
        .EXAMPLE
            Get-InstagramPostCount -Date 2025-04-12 -Path C:\sportsmonk
         
    #>

    [CmdletBinding()]
    param(

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Date,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Path

    )
    process {

        $ErrorActionPreference = 'Stop'

        try {

            [int]$DateYear = $Date.Split('-')[0]
            [int]$DateMonth = $Date.Split('-')[1]

            if ($DateMonth -lt 10) {

                $DateMonthToUse = "0$DateMonth"

            } # if

            $PathExists = Test-Path -Path "$Path\fixture-artifact\processed-fixtures\$DateYear\$DateMonthToUse\media"

            if ($PathExists) {

                $InstagramPosts = Get-ChildItem -Path "$Path\fixture-artifact\processed-fixtures\$DateYear\$DateMonthToUse\media" -Recurse | Where-Object {$_.Name -like '*instagram*'}
                $InstagramPostCount = 0

                foreach ($InstagramPost in $InstagramPosts) {

                    $FileCreationDate = $($InstagramPost.CreationTime)
                    $FormattedDate = Get-Date $FileCreationDate -Format "dd-MM-yyyy"
                    $Today = Get-Date -Format dd-MM-yyyy

                    if ($FormattedDate -eq $Today) {

                        $InstagramPostCount ++

                    }

                } # foreach

                if ($InstagramPostCount -eq 50) {

                    Write-Warning -Message "InstagramPostCount is $InstagramPostCount on $Today. AppInstagram accounts are limited to 50 API-published posts within a rolling 24-hour period."

                }
                else {

                    $Hash1 =@{
                        InstagramPostCount = $InstagramPostCount
                        Date = $Today
                    }

                    $Hash1

                } # if

            } # if

        }
        catch {

            throw "$($MyInvocation.MyCommand.Name): $_.Exception.Message"

        } # try catch


    } # process

} # function