/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ package dev.plexapi.sdk; import static dev.plexapi.sdk.operations.Operations.RequestOperation; import dev.plexapi.sdk.models.operations.AddPlaylistContentsRequest; import dev.plexapi.sdk.models.operations.AddPlaylistContentsRequestBuilder; import dev.plexapi.sdk.models.operations.AddPlaylistContentsResponse; import dev.plexapi.sdk.models.operations.ClearPlaylistContentsRequest; import dev.plexapi.sdk.models.operations.ClearPlaylistContentsRequestBuilder; import dev.plexapi.sdk.models.operations.ClearPlaylistContentsResponse; import dev.plexapi.sdk.models.operations.CreatePlaylistRequest; import dev.plexapi.sdk.models.operations.CreatePlaylistRequestBuilder; import dev.plexapi.sdk.models.operations.CreatePlaylistResponse; import dev.plexapi.sdk.models.operations.DeletePlaylistRequest; import dev.plexapi.sdk.models.operations.DeletePlaylistRequestBuilder; import dev.plexapi.sdk.models.operations.DeletePlaylistResponse; import dev.plexapi.sdk.models.operations.GetPlaylistContentsQueryParamType; import dev.plexapi.sdk.models.operations.GetPlaylistContentsRequest; import dev.plexapi.sdk.models.operations.GetPlaylistContentsRequestBuilder; import dev.plexapi.sdk.models.operations.GetPlaylistContentsResponse; import dev.plexapi.sdk.models.operations.GetPlaylistRequest; import dev.plexapi.sdk.models.operations.GetPlaylistRequestBuilder; import dev.plexapi.sdk.models.operations.GetPlaylistResponse; import dev.plexapi.sdk.models.operations.GetPlaylistsRequest; import dev.plexapi.sdk.models.operations.GetPlaylistsRequestBuilder; import dev.plexapi.sdk.models.operations.GetPlaylistsResponse; import dev.plexapi.sdk.models.operations.PlaylistType; import dev.plexapi.sdk.models.operations.QueryParamForce; import dev.plexapi.sdk.models.operations.QueryParamSmart; import dev.plexapi.sdk.models.operations.UpdatePlaylistRequest; import dev.plexapi.sdk.models.operations.UpdatePlaylistRequestBuilder; import dev.plexapi.sdk.models.operations.UpdatePlaylistResponse; import dev.plexapi.sdk.models.operations.UploadPlaylistRequest; import dev.plexapi.sdk.models.operations.UploadPlaylistRequestBuilder; import dev.plexapi.sdk.models.operations.UploadPlaylistResponse; import dev.plexapi.sdk.operations.AddPlaylistContents; import dev.plexapi.sdk.operations.ClearPlaylistContents; import dev.plexapi.sdk.operations.CreatePlaylist; import dev.plexapi.sdk.operations.DeletePlaylist; import dev.plexapi.sdk.operations.GetPlaylist; import dev.plexapi.sdk.operations.GetPlaylistContents; import dev.plexapi.sdk.operations.GetPlaylists; import dev.plexapi.sdk.operations.UpdatePlaylist; import dev.plexapi.sdk.operations.UploadPlaylist; import java.lang.Double; import java.lang.Exception; import java.lang.String; import java.util.Optional; /** * 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. */ public class Playlists { private final SDKConfiguration sdkConfiguration; private final AsyncPlaylists asyncSDK; Playlists(SDKConfiguration sdkConfiguration) { this.sdkConfiguration = sdkConfiguration; this.asyncSDK = new AsyncPlaylists(this, sdkConfiguration); } /** * Switches to the async SDK. * * @return The async SDK */ public AsyncPlaylists async() { return asyncSDK; } /** * Create a 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. * * @return The call builder */ public CreatePlaylistRequestBuilder createPlaylist() { return new CreatePlaylistRequestBuilder(sdkConfiguration); } /** * Create a 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.
*
* @param request The request object containing all the parameters for the API call.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public CreatePlaylistResponse createPlaylist(CreatePlaylistRequest request) throws Exception {
RequestOperation Get All Playlists given the specified filters.
*
* @return The call builder
*/
public GetPlaylistsRequestBuilder getPlaylists() {
return new GetPlaylistsRequestBuilder(sdkConfiguration);
}
/**
* Get All Playlists
*
* Get All Playlists given the specified filters.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetPlaylistsResponse getPlaylistsDirect() throws Exception {
return getPlaylists(Optional.empty(), Optional.empty());
}
/**
* Get All Playlists
*
* Get All Playlists given the specified filters.
*
* @param playlistType limit to a type of playlist.
* @param smart type of playlists to return (default is all).
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetPlaylistsResponse getPlaylists(Optional extends PlaylistType> playlistType, Optional extends QueryParamSmart> smart) throws Exception {
GetPlaylistsRequest request =
GetPlaylistsRequest
.builder()
.playlistType(playlistType)
.smart(smart)
.build();
RequestOperation 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.
*
* @return The call builder
*/
public GetPlaylistRequestBuilder getPlaylist() {
return new GetPlaylistRequestBuilder(sdkConfiguration);
}
/**
* Retrieve 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.
*
* @param playlistID the ID of the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetPlaylistResponse getPlaylist(double playlistID) throws Exception {
GetPlaylistRequest request =
GetPlaylistRequest
.builder()
.playlistID(playlistID)
.build();
RequestOperation This endpoint will delete a playlist
*
* @return The call builder
*/
public DeletePlaylistRequestBuilder deletePlaylist() {
return new DeletePlaylistRequestBuilder(sdkConfiguration);
}
/**
* Deletes a Playlist
*
* This endpoint will delete a playlist
*
* @param playlistID the ID of the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public DeletePlaylistResponse deletePlaylist(double playlistID) throws Exception {
DeletePlaylistRequest request =
DeletePlaylistRequest
.builder()
.playlistID(playlistID)
.build();
RequestOperation From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}`
*
* @return The call builder
*/
public UpdatePlaylistRequestBuilder updatePlaylist() {
return new UpdatePlaylistRequestBuilder(sdkConfiguration);
}
/**
* Update a Playlist
*
* From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}`
*
* @param playlistID the ID of the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public UpdatePlaylistResponse updatePlaylist(double playlistID) throws Exception {
return updatePlaylist(playlistID, Optional.empty(), Optional.empty());
}
/**
* Update a Playlist
*
* From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}`
*
* @param playlistID the ID of the playlist
* @param title name of the playlist
* @param summary summary description of the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public UpdatePlaylistResponse updatePlaylist(
double playlistID, Optional 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.
*
* @return The call builder
*/
public GetPlaylistContentsRequestBuilder getPlaylistContents() {
return new GetPlaylistContentsRequestBuilder(sdkConfiguration);
}
/**
* Retrieve 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.
*
* @param playlistID the ID of the playlist
* @param type The type of media to retrieve or filter by.
* 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
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetPlaylistContentsResponse getPlaylistContents(double playlistID, GetPlaylistContentsQueryParamType type) throws Exception {
GetPlaylistContentsRequest request =
GetPlaylistContentsRequest
.builder()
.playlistID(playlistID)
.type(type)
.build();
RequestOperation Clears a playlist, only works with dumb playlists. Returns the playlist.
*
* @return The call builder
*/
public ClearPlaylistContentsRequestBuilder clearPlaylistContents() {
return new ClearPlaylistContentsRequestBuilder(sdkConfiguration);
}
/**
* Delete Playlist Contents
*
* Clears a playlist, only works with dumb playlists. Returns the playlist.
*
* @param playlistID the ID of the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public ClearPlaylistContentsResponse clearPlaylistContents(double playlistID) throws Exception {
ClearPlaylistContentsRequest request =
ClearPlaylistContentsRequest
.builder()
.playlistID(playlistID)
.build();
RequestOperation 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.
*
* @return The call builder
*/
public AddPlaylistContentsRequestBuilder addPlaylistContents() {
return new AddPlaylistContentsRequestBuilder(sdkConfiguration);
}
/**
* Adding to a Playlist
*
* 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.
*
* @param playlistID the ID of the playlist
* @param uri the content URI for the playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public AddPlaylistContentsResponse addPlaylistContents(double playlistID, String uri) throws Exception {
return addPlaylistContents(playlistID, uri, Optional.empty());
}
/**
* Adding to a Playlist
*
* 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.
*
* @param playlistID the ID of the playlist
* @param uri the content URI for the playlist
* @param playQueueID the play queue to add to a playlist
* @return The response from the API call
* @throws Exception if the API call fails
*/
public AddPlaylistContentsResponse addPlaylistContents(
double playlistID, String uri,
Optional 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.
*
* @return The call builder
*/
public UploadPlaylistRequestBuilder uploadPlaylist() {
return new UploadPlaylistRequestBuilder(sdkConfiguration);
}
/**
* 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.
*
* @param path 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.
*
* @param force 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.
*
* @param sectionID Possibly the section ID to upload the playlist to, we are not certain.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public UploadPlaylistResponse uploadPlaylist(
String path, QueryParamForce force,
long sectionID) throws Exception {
UploadPlaylistRequest request =
UploadPlaylistRequest
.builder()
.path(path)
.force(force)
.sectionID(sectionID)
.build();
RequestOperation