Files
plexpy/docs/sdks/playlists/README.md

45 KiB
Raw Blame History

Playlists

(playlists)

Overview

Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017"). They can be organized in (optionally nesting) folders. Retrieving a playlist, or its items, will trigger a refresh of its metadata. This may cause the duration and number of items to change.

Available Operations

create_playlist

Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass:

  • uri - The content URI for what we're playing (e.g. server://1234/com.plexapp.plugins.library/library/metadata/1).
  • playQueueID - To create a playlist from an existing play queue.

Example Usage

from plex_api_client import PlexAPI
from plex_api_client.models import operations

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.create_playlist(request={
    "title": "<value>",
    "type": operations.CreatePlaylistQueryParamType.PHOTO,
    "smart": operations.Smart.ONE,
    "uri": "https://inborn-brochure.biz",
})

if res.object is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
request operations.CreatePlaylistRequest ✔️ The request object to use for the request.
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.CreatePlaylistResponse

Errors

Error Object Status Code Content Type
errors.CreatePlaylistBadRequest 400 application/json
errors.CreatePlaylistUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

get_playlists

Get All Playlists given the specified filters.

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.get_playlists()

if res.object is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
playlist_type Optional[operations.PlaylistType] limit to a type of playlist.
smart Optional[operations.QueryParamSmart] type of playlists to return (default is all).
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.GetPlaylistsResponse

Errors

Error Object Status Code Content Type
errors.GetPlaylistsBadRequest 400 application/json
errors.GetPlaylistsUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

get_playlist

Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: Smart playlist details contain the content attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing.

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.get_playlist(playlist_id=4109.48)

if res.object is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
playlist_id float ✔️ the ID of the playlist
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.GetPlaylistResponse

Errors

Error Object Status Code Content Type
errors.GetPlaylistBadRequest 400 application/json
errors.GetPlaylistUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

delete_playlist

This endpoint will delete a playlist

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.delete_playlist(playlist_id=216.22)

if res is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
playlist_id float ✔️ the ID of the playlist
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.DeletePlaylistResponse

Errors

Error Object Status Code Content Type
errors.DeletePlaylistBadRequest 400 application/json
errors.DeletePlaylistUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

update_playlist

From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via PUT /library/metadata/{playlistID}

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.update_playlist(playlist_id=3915)

if res is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
playlist_id float ✔️ the ID of the playlist
title Optional[str] name of the playlist
summary Optional[str] summary description of the playlist
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.UpdatePlaylistResponse

Errors

Error Object Status Code Content Type
errors.UpdatePlaylistBadRequest 400 application/json
errors.UpdatePlaylistUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

get_playlist_contents

Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the type parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a playlistItemID attribute which is used for deleting or moving items.

Example Usage

from plex_api_client import PlexAPI
from plex_api_client.models import operations

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.get_playlist_contents(playlist_id=5004.46, type_=operations.GetPlaylistContentsQueryParamType.TV_SHOW)

if res.object is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description Example
playlist_id float ✔️ the ID of the playlist
type operations.GetPlaylistContentsQueryParamType ✔️ The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
2
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.GetPlaylistContentsResponse

Errors

Error Object Status Code Content Type
errors.GetPlaylistContentsBadRequest 400 application/json
errors.GetPlaylistContentsUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

clear_playlist_contents

Clears a playlist, only works with dumb playlists. Returns the playlist.

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.clear_playlist_contents(playlist_id=1893.18)

if res is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description
playlist_id float ✔️ the ID of the playlist
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.ClearPlaylistContentsResponse

Errors

Error Object Status Code Content Type
errors.ClearPlaylistContentsBadRequest 400 application/json
errors.ClearPlaylistContentsUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

add_playlist_contents

Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new uri parameter replaces the rules for the playlist. Returns the playlist.

Example Usage

from plex_api_client import PlexAPI

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.add_playlist_contents(playlist_id=8502.01, uri="server://12345/com.plexapp.plugins.library/library/metadata/1", play_queue_id=123)

if res.object is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description Example
playlist_id float ✔️ the ID of the playlist
uri str ✔️ the content URI for the playlist server://12345/com.plexapp.plugins.library/library/metadata/1
play_queue_id Optional[float] the play queue to add to a playlist 123
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.AddPlaylistContentsResponse

Errors

Error Object Status Code Content Type
errors.AddPlaylistContentsBadRequest 400 application/json
errors.AddPlaylistContentsUnauthorized 401 application/json
errors.SDKError 4xx-5xx /

upload_playlist

Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file.

Example Usage

from plex_api_client import PlexAPI
from plex_api_client.models import operations

s = PlexAPI(
    access_token="<YOUR_API_KEY_HERE>",
    client_id="gcgzw5rz2xovp84b4vha3a40",
    client_name="Plex Web",
    client_version="4.133.0",
    client_platform="Chrome",
    device_name="Linux",
)

res = s.playlists.upload_playlist(path="/home/barkley/playlist.m3u", force=operations.QueryParamForce.ZERO, section_id=1)

if res is not None:
    # handle response
    pass

Parameters

Parameter Type Required Description Example
path str ✔️ absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the path argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the path argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
/home/barkley/playlist.m3u
force operations.QueryParamForce ✔️ Force overwriting of duplicate playlists.
By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The force argument is used to disable overwriting.
If the force argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
section_id int ✔️ Possibly the section ID to upload the playlist to, we are not certain. 1
retries Optional[utils.RetryConfig] Configuration to override the default retry behavior of the client.

Response

operations.UploadPlaylistResponse

Errors

Error Object Status Code Content Type
errors.UploadPlaylistBadRequest 400 application/json
errors.UploadPlaylistUnauthorized 401 application/json
errors.SDKError 4xx-5xx /