Public/Find-XKCD.ps1

Function Find-XKCD {
    <#
    .SYNOPSIS
        Retrieves the details of comics @ http://xkcd.com/ based on whether a specified search string appears
        in the title text.

    .DESCRIPTION
        The Find-XKCD cmdlet creates a local cache of the XKCD API comic data if one is not found to already
        exist. It also refreshes the local cache if it's found to be out of date. Comic searches are then
        performed against the local cache.

    .EXAMPLE
        Find-XKCD -Query 'Spider' | Format-Table

        Returns any comics with the word 'Spider' in the title as a table.
    
    .EXAMPLE
        Find-XKCD -Query 'Spider' | Get-XKCD -Open

        Returns any comics with the word 'Spider' in the title and then pipes the result to Get-XKCD which opens
        them in the default browser.

    .LINK
        https://xkcd.com/json.html
    #>

    [cmdletbinding()]
    Param(
        [Parameter(Mandatory)]
        [string]
        $Query,

        [string]
        $CachePath = (Join-Path $PSScriptRoot 'XKCD.json')
    )
    
    Update-XKCDCache -CachePath $CachePath

    $AllComics = Get-Content $CachePath | ConvertFrom-Json

    $AllComics | Where-Object { $_.Title -like "*$Query*" }
}