Public/Get-RadarrMovie.ps1
function Get-RadarrMovie { [CmdletBinding(DefaultParameterSetName = 'All')] param( [Parameter(Mandatory = $false, ParameterSetName = 'Id')] [String]$Id, [Parameter(Mandatory = $false, ParameterSetName = 'Name')] [Alias('Title')] [String]$Name, [Parameter(Mandatory = $false, ParameterSetName = 'IMDBID')] [ValidatePattern('^(tt)?\d{5,9}$')] [String]$IMDBID, [Parameter(Mandatory = $false, ParameterSetName = 'TMDBID')] [ValidatePattern('^\d{1,9}$')] [String]$TMDBID ) #################################################################################################### #Region Import configuration try { Import-Configuration -ErrorAction Stop } catch { throw $_ } #EndRegion #################################################################################################### #Region Define the path, parameters, headers and URI try { $Path = '/movie' if($PSCmdlet.ParameterSetName -eq 'Id' -and $Id) { $Path += "/$Id" } # Generate the headers and URI $Headers = Get-Headers $Uri = Get-APIUri -RestEndpoint $Path -Params $Params } catch { throw $_ } #EndRegion #################################################################################################### #Region make the main request Write-Verbose "Querying: $Uri" try { $Data = Invoke-RestMethod -Uri $Uri -Headers $Headers -Method Get -ContentType 'application/json' -ErrorAction Stop if($Data) { # Filter results based on parameters if specified switch($PSCmdlet.ParameterSetName) { 'Name' { $Data = $Data | Where-Object { $_.title -eq $Name -or $_.originalTitle -eq $Name } } 'IMDBID' { if($IMDBID -notmatch '^tt') { $IMDBID = 'tt' + $IMDBID } $Data = $Data | Where-Object { $_.imdbId -eq "$IMDBID" } } 'TMDBID' { $Data = $Data | Where-Object { $_.tmdbId -eq $TMDBID } } } return $Data } else { Write-Warning 'No results found. Does Radarr have any movies?' return } } catch { throw $_ } #EndRegion } |