Public/Playlists/Remove-PlaylistItems.ps1
<#
.SYNOPSIS Remove one or more items from a user's playlist. .EXAMPLE PS C:\> Remove-PlaylistItems -Id 'myPlaylistId' -Track @(@{uri = 'spotify:track:4iV5W9uYEdYUVa79Axb7Rh' }, @{uri = 'spotify:track:1301WleyT98MSxVHPZCA6M' }) Removes all occurrences of both tracks by specifying only uris in playlist with Id 'myPlaylistId' .EXAMPLE PS C:\> Remove-PlaylistItems -Id 'myPlaylistId' -Track @(@{uri = 'spotify:track:4iV5W9uYEdYUVa79Axb7Rh'; positions = @(0, 3) }, @{uri = 'spotify:track:1301WleyT98MSxVHPZCA6M' ; positions = @(7) }) Removes specific occurrence of both tracks by specifying both the uris and items positions in the playlist with Id 'myPlaylistId' .EXAMPLE PS C:\> Remove-PlaylistItems -Id 'myPlaylistId' -Track @(@{uri = 'spotify:track:4iV5W9uYEdYUVa79Axb7Rh' }) -SnapshotId 'mySuperPlaylistSnapshot' Removes all occurrences of both tracks in the specific snapshot with Id 'mySuperPlaylistSnapshot' of the playlist .PARAMETER Id Specifies the Spotify ID for the playlist. .PARAMETER Track An array of objects containing Spotify URIs of the tracks and episodes to remove It may contains specific positions of each tracks/episodes to remove (zero-indexed) .PARAMETER SnapshotId The playlist's snapshot ID against which you want to make the changes. The API will validate that the specified items exist and in the specified positions and make the changes, even if more recent changes have been made to the playlist. .PARAMETER ApplicationName Specifies the Spotify Application Name (otherwise default is used) #> function Remove-PlaylistItems { param ( [Parameter(Mandatory)] [string] $Id, [Parameter(Mandatory, ValueFromPipeline)] [array] $Track, [string] $SnapshotId, [string] $ApplicationName ) $Method = 'Put' $Uri = "https://api.spotify.com/v1/playlists/$Id/tracks" for ($i = 0; $i -lt $Track.Count; $i += 100) { $BodyHashtable = @{tracks = $Track[$i..($i + 99)] } if ($SnapshotId) { $BodyHashtable.snapshot_id = $SnapshotId } $Body = ConvertTo-Json $BodyHashtable -Compress Send-SpotifyCall -Method $Method -Uri $Uri -Body $Body -ApplicationName $ApplicationName } } |