Files
plexjava/src/main/java/dev/plexapi/sdk/Library.java

1091 lines
45 KiB
Java

/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
package dev.plexapi.sdk;
import static dev.plexapi.sdk.operations.Operations.RequestOperation;
import static dev.plexapi.sdk.operations.Operations.RequestlessOperation;
import dev.plexapi.sdk.models.operations.DeleteLibraryRequest;
import dev.plexapi.sdk.models.operations.DeleteLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.DeleteLibraryResponse;
import dev.plexapi.sdk.models.operations.Force;
import dev.plexapi.sdk.models.operations.GetActorsLibraryQueryParamType;
import dev.plexapi.sdk.models.operations.GetActorsLibraryRequest;
import dev.plexapi.sdk.models.operations.GetActorsLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.GetActorsLibraryResponse;
import dev.plexapi.sdk.models.operations.GetAllLibrariesRequestBuilder;
import dev.plexapi.sdk.models.operations.GetAllLibrariesResponse;
import dev.plexapi.sdk.models.operations.GetCountriesLibraryQueryParamType;
import dev.plexapi.sdk.models.operations.GetCountriesLibraryRequest;
import dev.plexapi.sdk.models.operations.GetCountriesLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.GetCountriesLibraryResponse;
import dev.plexapi.sdk.models.operations.GetFileHashRequest;
import dev.plexapi.sdk.models.operations.GetFileHashRequestBuilder;
import dev.plexapi.sdk.models.operations.GetFileHashResponse;
import dev.plexapi.sdk.models.operations.GetGenresLibraryQueryParamType;
import dev.plexapi.sdk.models.operations.GetGenresLibraryRequest;
import dev.plexapi.sdk.models.operations.GetGenresLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.GetGenresLibraryResponse;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsRequest;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsRequestBuilder;
import dev.plexapi.sdk.models.operations.GetLibraryDetailsResponse;
import dev.plexapi.sdk.models.operations.GetLibraryItemsRequest;
import dev.plexapi.sdk.models.operations.GetLibraryItemsRequestBuilder;
import dev.plexapi.sdk.models.operations.GetLibraryItemsResponse;
import dev.plexapi.sdk.models.operations.GetLibrarySectionsAllRequest;
import dev.plexapi.sdk.models.operations.GetLibrarySectionsAllRequestBuilder;
import dev.plexapi.sdk.models.operations.GetLibrarySectionsAllResponse;
import dev.plexapi.sdk.models.operations.GetMediaArtsRequest;
import dev.plexapi.sdk.models.operations.GetMediaArtsRequestBuilder;
import dev.plexapi.sdk.models.operations.GetMediaArtsResponse;
import dev.plexapi.sdk.models.operations.GetMediaMetaDataRequest;
import dev.plexapi.sdk.models.operations.GetMediaMetaDataRequestBuilder;
import dev.plexapi.sdk.models.operations.GetMediaMetaDataResponse;
import dev.plexapi.sdk.models.operations.GetMediaPostersRequest;
import dev.plexapi.sdk.models.operations.GetMediaPostersRequestBuilder;
import dev.plexapi.sdk.models.operations.GetMediaPostersResponse;
import dev.plexapi.sdk.models.operations.GetMetadataChildrenRequest;
import dev.plexapi.sdk.models.operations.GetMetadataChildrenRequestBuilder;
import dev.plexapi.sdk.models.operations.GetMetadataChildrenResponse;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryRequest;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryResponse;
import dev.plexapi.sdk.models.operations.GetRefreshLibraryMetadataRequest;
import dev.plexapi.sdk.models.operations.GetRefreshLibraryMetadataRequestBuilder;
import dev.plexapi.sdk.models.operations.GetRefreshLibraryMetadataResponse;
import dev.plexapi.sdk.models.operations.GetSearchAllLibrariesRequest;
import dev.plexapi.sdk.models.operations.GetSearchAllLibrariesRequestBuilder;
import dev.plexapi.sdk.models.operations.GetSearchAllLibrariesResponse;
import dev.plexapi.sdk.models.operations.GetSearchLibraryQueryParamType;
import dev.plexapi.sdk.models.operations.GetSearchLibraryRequest;
import dev.plexapi.sdk.models.operations.GetSearchLibraryRequestBuilder;
import dev.plexapi.sdk.models.operations.GetSearchLibraryResponse;
import dev.plexapi.sdk.models.operations.GetTopWatchedContentQueryParamIncludeGuids;
import dev.plexapi.sdk.models.operations.GetTopWatchedContentQueryParamType;
import dev.plexapi.sdk.models.operations.GetTopWatchedContentRequest;
import dev.plexapi.sdk.models.operations.GetTopWatchedContentRequestBuilder;
import dev.plexapi.sdk.models.operations.GetTopWatchedContentResponse;
import dev.plexapi.sdk.models.operations.IncludeDetails;
import dev.plexapi.sdk.models.operations.PostMediaArtsRequest;
import dev.plexapi.sdk.models.operations.PostMediaArtsRequestBuilder;
import dev.plexapi.sdk.models.operations.PostMediaArtsResponse;
import dev.plexapi.sdk.models.operations.PostMediaPosterRequest;
import dev.plexapi.sdk.models.operations.PostMediaPosterRequestBuilder;
import dev.plexapi.sdk.models.operations.PostMediaPosterResponse;
import dev.plexapi.sdk.operations.DeleteLibrary;
import dev.plexapi.sdk.operations.GetActorsLibrary;
import dev.plexapi.sdk.operations.GetAllLibraries;
import dev.plexapi.sdk.operations.GetCountriesLibrary;
import dev.plexapi.sdk.operations.GetFileHash;
import dev.plexapi.sdk.operations.GetGenresLibrary;
import dev.plexapi.sdk.operations.GetLibraryDetails;
import dev.plexapi.sdk.operations.GetLibraryItems;
import dev.plexapi.sdk.operations.GetLibrarySectionsAll;
import dev.plexapi.sdk.operations.GetMediaArts;
import dev.plexapi.sdk.operations.GetMediaMetaData;
import dev.plexapi.sdk.operations.GetMediaPosters;
import dev.plexapi.sdk.operations.GetMetadataChildren;
import dev.plexapi.sdk.operations.GetRecentlyAddedLibrary;
import dev.plexapi.sdk.operations.GetRefreshLibraryMetadata;
import dev.plexapi.sdk.operations.GetSearchAllLibraries;
import dev.plexapi.sdk.operations.GetSearchLibrary;
import dev.plexapi.sdk.operations.GetTopWatchedContent;
import dev.plexapi.sdk.operations.PostMediaArts;
import dev.plexapi.sdk.operations.PostMediaPoster;
import java.lang.Double;
import java.lang.Exception;
import java.lang.String;
import java.util.Optional;
/**
* API Calls interacting with Plex Media Server Libraries
*/
public class Library {
private final SDKConfiguration sdkConfiguration;
private final AsyncLibrary asyncSDK;
Library(SDKConfiguration sdkConfiguration) {
this.sdkConfiguration = sdkConfiguration;
this.asyncSDK = new AsyncLibrary(this, sdkConfiguration);
}
/**
* Switches to the async SDK.
*
* @return The async SDK
*/
public AsyncLibrary async() {
return asyncSDK;
}
/**
* Get Hash Value
*
* <p>This resource returns hash values for local files
*
* @return The call builder
*/
public GetFileHashRequestBuilder getFileHash() {
return new GetFileHashRequestBuilder(sdkConfiguration);
}
/**
* Get Hash Value
*
* <p>This resource returns hash values for local files
*
* @param url This is the path to the local file, must be prefixed by `file://`
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetFileHashResponse getFileHash(String url) throws Exception {
return getFileHash(url, Optional.empty());
}
/**
* Get Hash Value
*
* <p>This resource returns hash values for local files
*
* @param url This is the path to the local file, must be prefixed by `file://`
* @param type Item type
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetFileHashResponse getFileHash(String url, Optional<Double> type) throws Exception {
GetFileHashRequest request =
GetFileHashRequest
.builder()
.url(url)
.type(type)
.build();
RequestOperation<GetFileHashRequest, GetFileHashResponse> operation
= new GetFileHash.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Recently Added
*
* <p>This endpoint will return the recently added content.
*
* @return The call builder
*/
public GetRecentlyAddedLibraryRequestBuilder getRecentlyAddedLibrary() {
return new GetRecentlyAddedLibraryRequestBuilder(sdkConfiguration);
}
/**
* Get Recently Added
*
* <p>This endpoint will return the recently added content.
*
* @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 GetRecentlyAddedLibraryResponse getRecentlyAddedLibrary(GetRecentlyAddedLibraryRequest request) throws Exception {
RequestOperation<GetRecentlyAddedLibraryRequest, GetRecentlyAddedLibraryResponse> operation
= new GetRecentlyAddedLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get All Libraries
*
* <p>A library section (commonly referred to as just a library) is a collection of media.
* Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media.
* For example, a music library has an artist &gt; albums &gt; tracks structure, whereas a movie library is flat.
*
* <p>Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts.
* This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
*
* @return The call builder
*/
public GetAllLibrariesRequestBuilder getAllLibraries() {
return new GetAllLibrariesRequestBuilder(sdkConfiguration);
}
/**
* Get All Libraries
*
* <p>A library section (commonly referred to as just a library) is a collection of media.
* Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media.
* For example, a music library has an artist &gt; albums &gt; tracks structure, whereas a movie library is flat.
*
* <p>Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts.
* This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetAllLibrariesResponse getAllLibrariesDirect() throws Exception {
RequestlessOperation<GetAllLibrariesResponse> operation
= new GetAllLibraries.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest());
}
/**
* Get Library Details
*
* <p>## Library Details Endpoint
*
* <p>This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself.
*
* <p>The details include:
*
* <p>### Directories
* Organized into three categories:
*
* <p>- **Primary Directories**:
* - Used in some clients for quick access to media subsets (e.g., "All", "On Deck").
* - Most can be replicated via media queries.
* - Customizable by users.
*
* <p>- **Secondary Directories**:
* - Marked with `secondary="1"`.
* - Used in older clients for structured navigation.
*
* <p>- **Special Directories**:
* - Includes a "By Folder" entry for filesystem-based browsing.
* - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation.
*
* <p>### Types
* Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
*
* <p>- **Type Object Attributes**:
* - `key`: Endpoint for the media list of this type.
* - `type`: Metadata type (if standard Plex type).
* - `title`: Title for this content type (e.g., "Movies").
*
* <p>- **Filter Objects**:
* - Subset of the media query language.
* - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
*
* <p>- **Sort Objects**:
* - Description of sort fields.
* - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
*
* <p>&gt; **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
*
* @return The call builder
*/
public GetLibraryDetailsRequestBuilder getLibraryDetails() {
return new GetLibraryDetailsRequestBuilder(sdkConfiguration);
}
/**
* Get Library Details
*
* <p>## Library Details Endpoint
*
* <p>This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself.
*
* <p>The details include:
*
* <p>### Directories
* Organized into three categories:
*
* <p>- **Primary Directories**:
* - Used in some clients for quick access to media subsets (e.g., "All", "On Deck").
* - Most can be replicated via media queries.
* - Customizable by users.
*
* <p>- **Secondary Directories**:
* - Marked with `secondary="1"`.
* - Used in older clients for structured navigation.
*
* <p>- **Special Directories**:
* - Includes a "By Folder" entry for filesystem-based browsing.
* - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation.
*
* <p>### Types
* Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
*
* <p>- **Type Object Attributes**:
* - `key`: Endpoint for the media list of this type.
* - `type`: Metadata type (if standard Plex type).
* - `title`: Title for this content type (e.g., "Movies").
*
* <p>- **Filter Objects**:
* - Subset of the media query language.
* - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
*
* <p>- **Sort Objects**:
* - Description of sort fields.
* - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
*
* <p>&gt; **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetLibraryDetailsResponse getLibraryDetails(int sectionKey) throws Exception {
return getLibraryDetails(Optional.empty(), sectionKey);
}
/**
* Get Library Details
*
* <p>## Library Details Endpoint
*
* <p>This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself.
*
* <p>The details include:
*
* <p>### Directories
* Organized into three categories:
*
* <p>- **Primary Directories**:
* - Used in some clients for quick access to media subsets (e.g., "All", "On Deck").
* - Most can be replicated via media queries.
* - Customizable by users.
*
* <p>- **Secondary Directories**:
* - Marked with `secondary="1"`.
* - Used in older clients for structured navigation.
*
* <p>- **Special Directories**:
* - Includes a "By Folder" entry for filesystem-based browsing.
* - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation.
*
* <p>### Types
* Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
*
* <p>- **Type Object Attributes**:
* - `key`: Endpoint for the media list of this type.
* - `type`: Metadata type (if standard Plex type).
* - `title`: Title for this content type (e.g., "Movies").
*
* <p>- **Filter Objects**:
* - Subset of the media query language.
* - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
*
* <p>- **Sort Objects**:
* - Description of sort fields.
* - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
*
* <p>&gt; **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
*
* @param includeDetails Whether or not to include details for a section (types, filters, and sorts).
* Only exists for backwards compatibility, media providers other than the server libraries have it on always.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetLibraryDetailsResponse getLibraryDetails(Optional<? extends IncludeDetails> includeDetails, int sectionKey) throws Exception {
GetLibraryDetailsRequest request =
GetLibraryDetailsRequest
.builder()
.includeDetails(includeDetails)
.sectionKey(sectionKey)
.build();
RequestOperation<GetLibraryDetailsRequest, GetLibraryDetailsResponse> operation
= new GetLibraryDetails.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Delete Library Section
*
* <p>Delete a library using a specific section id
*
* @return The call builder
*/
public DeleteLibraryRequestBuilder deleteLibrary() {
return new DeleteLibraryRequestBuilder(sdkConfiguration);
}
/**
* Delete Library Section
*
* <p>Delete a library using a specific section id
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public DeleteLibraryResponse deleteLibrary(int sectionKey) throws Exception {
DeleteLibraryRequest request =
DeleteLibraryRequest
.builder()
.sectionKey(sectionKey)
.build();
RequestOperation<DeleteLibraryRequest, DeleteLibraryResponse> operation
= new DeleteLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Library Items
*
* <p>Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values:
* - `all`: All items in the section.
* - `unwatched`: Items that have not been played.
* - `newest`: Items that are recently released.
* - `recentlyAdded`: Items that are recently added to the library.
* - `recentlyViewed`: Items that were recently viewed.
* - `onDeck`: Items to continue watching.
* - `collection`: Items categorized by collection.
* - `edition`: Items categorized by edition.
* - `genre`: Items categorized by genre.
* - `year`: Items categorized by year of release.
* - `decade`: Items categorized by decade.
* - `director`: Items categorized by director.
* - `actor`: Items categorized by starring actor.
* - `country`: Items categorized by country of origin.
* - `contentRating`: Items categorized by content rating.
* - `rating`: Items categorized by rating.
* - `resolution`: Items categorized by resolution.
* - `firstCharacter`: Items categorized by the first letter.
* - `folder`: Items categorized by folder.
* - `albums`: Items categorized by album.
*
* @return The call builder
*/
public GetLibraryItemsRequestBuilder getLibraryItems() {
return new GetLibraryItemsRequestBuilder(sdkConfiguration);
}
/**
* Get Library Items
*
* <p>Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values:
* - `all`: All items in the section.
* - `unwatched`: Items that have not been played.
* - `newest`: Items that are recently released.
* - `recentlyAdded`: Items that are recently added to the library.
* - `recentlyViewed`: Items that were recently viewed.
* - `onDeck`: Items to continue watching.
* - `collection`: Items categorized by collection.
* - `edition`: Items categorized by edition.
* - `genre`: Items categorized by genre.
* - `year`: Items categorized by year of release.
* - `decade`: Items categorized by decade.
* - `director`: Items categorized by director.
* - `actor`: Items categorized by starring actor.
* - `country`: Items categorized by country of origin.
* - `contentRating`: Items categorized by content rating.
* - `rating`: Items categorized by rating.
* - `resolution`: Items categorized by resolution.
* - `firstCharacter`: Items categorized by the first letter.
* - `folder`: Items categorized by folder.
* - `albums`: Items categorized by album.
*
* @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 GetLibraryItemsResponse getLibraryItems(GetLibraryItemsRequest request) throws Exception {
RequestOperation<GetLibraryItemsRequest, GetLibraryItemsResponse> operation
= new GetLibraryItems.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Library section media by tag ALL
*
* <p>Retrieves a list of all general media data for this library.
*
* @return The call builder
*/
public GetLibrarySectionsAllRequestBuilder getLibrarySectionsAll() {
return new GetLibrarySectionsAllRequestBuilder(sdkConfiguration);
}
/**
* Get Library section media by tag ALL
*
* <p>Retrieves a list of all general media data for this library.
*
* @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 GetLibrarySectionsAllResponse getLibrarySectionsAll(GetLibrarySectionsAllRequest request) throws Exception {
RequestOperation<GetLibrarySectionsAllRequest, GetLibrarySectionsAllResponse> operation
= new GetLibrarySectionsAll.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Refresh Metadata Of The Library
*
* <p>This endpoint Refreshes all the Metadata of the library.
*
* @return The call builder
*/
public GetRefreshLibraryMetadataRequestBuilder getRefreshLibraryMetadata() {
return new GetRefreshLibraryMetadataRequestBuilder(sdkConfiguration);
}
/**
* Refresh Metadata Of The Library
*
* <p>This endpoint Refreshes all the Metadata of the library.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetRefreshLibraryMetadataResponse getRefreshLibraryMetadata(int sectionKey) throws Exception {
return getRefreshLibraryMetadata(Optional.empty(), sectionKey);
}
/**
* Refresh Metadata Of The Library
*
* <p>This endpoint Refreshes all the Metadata of the library.
*
* @param force Force the refresh even if the library is already being refreshed.
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetRefreshLibraryMetadataResponse getRefreshLibraryMetadata(Optional<? extends Force> force, int sectionKey) throws Exception {
GetRefreshLibraryMetadataRequest request =
GetRefreshLibraryMetadataRequest
.builder()
.force(force)
.sectionKey(sectionKey)
.build();
RequestOperation<GetRefreshLibraryMetadataRequest, GetRefreshLibraryMetadataResponse> operation
= new GetRefreshLibraryMetadata.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Search Library
*
* <p>Search for content within a specific section of the library.
*
* <p>### Types
* Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
*
* <p>- **Type Object Attributes**:
* - `type`: Metadata type (if standard Plex type).
* - `title`: Title for this content type (e.g., "Movies").
*
* <p>- **Filter Objects**:
* - Subset of the media query language.
* - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
*
* <p>- **Sort Objects**:
* - Description of sort fields.
* - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
*
* <p>&gt; **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
*
* @return The call builder
*/
public GetSearchLibraryRequestBuilder getSearchLibrary() {
return new GetSearchLibraryRequestBuilder(sdkConfiguration);
}
/**
* Search Library
*
* <p>Search for content within a specific section of the library.
*
* <p>### Types
* Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
*
* <p>- **Type Object Attributes**:
* - `type`: Metadata type (if standard Plex type).
* - `title`: Title for this content type (e.g., "Movies").
*
* <p>- **Filter Objects**:
* - Subset of the media query language.
* - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
*
* <p>- **Sort Objects**:
* - Description of sort fields.
* - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
*
* <p>&gt; **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @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 GetSearchLibraryResponse getSearchLibrary(int sectionKey, GetSearchLibraryQueryParamType type) throws Exception {
GetSearchLibraryRequest request =
GetSearchLibraryRequest
.builder()
.sectionKey(sectionKey)
.type(type)
.build();
RequestOperation<GetSearchLibraryRequest, GetSearchLibraryResponse> operation
= new GetSearchLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Genres of library media
*
* <p>Retrieves a list of all the genres that are found for the media in this library.
*
* @return The call builder
*/
public GetGenresLibraryRequestBuilder getGenresLibrary() {
return new GetGenresLibraryRequestBuilder(sdkConfiguration);
}
/**
* Get Genres of library media
*
* <p>Retrieves a list of all the genres that are found for the media in this library.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @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 GetGenresLibraryResponse getGenresLibrary(int sectionKey, GetGenresLibraryQueryParamType type) throws Exception {
GetGenresLibraryRequest request =
GetGenresLibraryRequest
.builder()
.sectionKey(sectionKey)
.type(type)
.build();
RequestOperation<GetGenresLibraryRequest, GetGenresLibraryResponse> operation
= new GetGenresLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Countries of library media
*
* <p>Retrieves a list of all the countries that are found for the media in this library.
*
* @return The call builder
*/
public GetCountriesLibraryRequestBuilder getCountriesLibrary() {
return new GetCountriesLibraryRequestBuilder(sdkConfiguration);
}
/**
* Get Countries of library media
*
* <p>Retrieves a list of all the countries that are found for the media in this library.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @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 GetCountriesLibraryResponse getCountriesLibrary(int sectionKey, GetCountriesLibraryQueryParamType type) throws Exception {
GetCountriesLibraryRequest request =
GetCountriesLibraryRequest
.builder()
.sectionKey(sectionKey)
.type(type)
.build();
RequestOperation<GetCountriesLibraryRequest, GetCountriesLibraryResponse> operation
= new GetCountriesLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Actors of library media
*
* <p>Retrieves a list of all the actors that are found for the media in this library.
*
* @return The call builder
*/
public GetActorsLibraryRequestBuilder getActorsLibrary() {
return new GetActorsLibraryRequestBuilder(sdkConfiguration);
}
/**
* Get Actors of library media
*
* <p>Retrieves a list of all the actors that are found for the media in this library.
*
* @param sectionKey The unique key of the Plex library.
* Note: This is unique in the context of the Plex server.
*
* @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 GetActorsLibraryResponse getActorsLibrary(int sectionKey, GetActorsLibraryQueryParamType type) throws Exception {
GetActorsLibraryRequest request =
GetActorsLibraryRequest
.builder()
.sectionKey(sectionKey)
.type(type)
.build();
RequestOperation<GetActorsLibraryRequest, GetActorsLibraryResponse> operation
= new GetActorsLibrary.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Search All Libraries
*
* <p>Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.
*
* @return The call builder
*/
public GetSearchAllLibrariesRequestBuilder getSearchAllLibraries() {
return new GetSearchAllLibrariesRequestBuilder(sdkConfiguration);
}
/**
* Search All Libraries
*
* <p>Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type.
*
* @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 GetSearchAllLibrariesResponse getSearchAllLibraries(GetSearchAllLibrariesRequest request) throws Exception {
RequestOperation<GetSearchAllLibrariesRequest, GetSearchAllLibrariesResponse> operation
= new GetSearchAllLibraries.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Media Metadata
*
* <p>This endpoint will return all the (meta)data of one or more library items specified by the ratingKey.
* Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617").
*
* @return The call builder
*/
public GetMediaMetaDataRequestBuilder getMediaMetaData() {
return new GetMediaMetaDataRequestBuilder(sdkConfiguration);
}
/**
* Get Media Metadata
*
* <p>This endpoint will return all the (meta)data of one or more library items specified by the ratingKey.
* Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617").
*
* @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 GetMediaMetaDataResponse getMediaMetaData(GetMediaMetaDataRequest request) throws Exception {
RequestOperation<GetMediaMetaDataRequest, GetMediaMetaDataResponse> operation
= new GetMediaMetaData.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Media Background Artwork
*
* <p>Returns the background artwork for a library item.
*
* @return The call builder
*/
public GetMediaArtsRequestBuilder getMediaArts() {
return new GetMediaArtsRequestBuilder(sdkConfiguration);
}
/**
* Get Media Background Artwork
*
* <p>Returns the background artwork for a library item.
*
* @param ratingKey the id of the library item to return the artwork of.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetMediaArtsResponse getMediaArts(long ratingKey) throws Exception {
GetMediaArtsRequest request =
GetMediaArtsRequest
.builder()
.ratingKey(ratingKey)
.build();
RequestOperation<GetMediaArtsRequest, GetMediaArtsResponse> operation
= new GetMediaArts.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Upload Media Background Artwork
*
* <p>Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL
*
* @return The call builder
*/
public PostMediaArtsRequestBuilder postMediaArts() {
return new PostMediaArtsRequestBuilder(sdkConfiguration);
}
/**
* Upload Media Background Artwork
*
* <p>Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL
*
* @param ratingKey the id of the library item to return the posters of.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public PostMediaArtsResponse postMediaArts(long ratingKey) throws Exception {
return postMediaArts(ratingKey, Optional.empty(), Optional.empty());
}
/**
* Upload Media Background Artwork
*
* <p>Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL
*
* @param ratingKey the id of the library item to return the posters of.
* @param url The URL of the image, if uploading a remote image
* @param requestBody The contents of the image, if uploading a local file
* @return The response from the API call
* @throws Exception if the API call fails
*/
public PostMediaArtsResponse postMediaArts(
long ratingKey, Optional<String> url,
Optional<byte[]> requestBody) throws Exception {
PostMediaArtsRequest request =
PostMediaArtsRequest
.builder()
.ratingKey(ratingKey)
.url(url)
.requestBody(requestBody)
.build();
RequestOperation<PostMediaArtsRequest, PostMediaArtsResponse> operation
= new PostMediaArts.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Media Posters
*
* <p>Returns the available posters for a library item.
*
* @return The call builder
*/
public GetMediaPostersRequestBuilder getMediaPosters() {
return new GetMediaPostersRequestBuilder(sdkConfiguration);
}
/**
* Get Media Posters
*
* <p>Returns the available posters for a library item.
*
* @param ratingKey the id of the library item to return the posters of.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetMediaPostersResponse getMediaPosters(long ratingKey) throws Exception {
GetMediaPostersRequest request =
GetMediaPostersRequest
.builder()
.ratingKey(ratingKey)
.build();
RequestOperation<GetMediaPostersRequest, GetMediaPostersResponse> operation
= new GetMediaPosters.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Upload Media Poster
*
* <p>Uploads a poster to a library item, either from a local file or a remote URL
*
* @return The call builder
*/
public PostMediaPosterRequestBuilder postMediaPoster() {
return new PostMediaPosterRequestBuilder(sdkConfiguration);
}
/**
* Upload Media Poster
*
* <p>Uploads a poster to a library item, either from a local file or a remote URL
*
* @param ratingKey the id of the library item to return the posters of.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public PostMediaPosterResponse postMediaPoster(long ratingKey) throws Exception {
return postMediaPoster(ratingKey, Optional.empty(), Optional.empty());
}
/**
* Upload Media Poster
*
* <p>Uploads a poster to a library item, either from a local file or a remote URL
*
* @param ratingKey the id of the library item to return the posters of.
* @param url The URL of the image, if uploading a remote image
* @param requestBody The contents of the image, if uploading a local file
* @return The response from the API call
* @throws Exception if the API call fails
*/
public PostMediaPosterResponse postMediaPoster(
long ratingKey, Optional<String> url,
Optional<byte[]> requestBody) throws Exception {
PostMediaPosterRequest request =
PostMediaPosterRequest
.builder()
.ratingKey(ratingKey)
.url(url)
.requestBody(requestBody)
.build();
RequestOperation<PostMediaPosterRequest, PostMediaPosterResponse> operation
= new PostMediaPoster.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Items Children
*
* <p>This endpoint will return the children of of a library item specified with the ratingKey.
*
* @return The call builder
*/
public GetMetadataChildrenRequestBuilder getMetadataChildren() {
return new GetMetadataChildrenRequestBuilder(sdkConfiguration);
}
/**
* Get Items Children
*
* <p>This endpoint will return the children of of a library item specified with the ratingKey.
*
* @param ratingKey the id of the library item to return the children of.
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetMetadataChildrenResponse getMetadataChildren(double ratingKey) throws Exception {
return getMetadataChildren(ratingKey, Optional.empty());
}
/**
* Get Items Children
*
* <p>This endpoint will return the children of of a library item specified with the ratingKey.
*
* @param ratingKey the id of the library item to return the children of.
* @param includeElements Adds additional elements to the response. Supported types are (Stream)
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetMetadataChildrenResponse getMetadataChildren(double ratingKey, Optional<String> includeElements) throws Exception {
GetMetadataChildrenRequest request =
GetMetadataChildrenRequest
.builder()
.ratingKey(ratingKey)
.includeElements(includeElements)
.build();
RequestOperation<GetMetadataChildrenRequest, GetMetadataChildrenResponse> operation
= new GetMetadataChildren.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
/**
* Get Top Watched Content
*
* <p>This endpoint will return the top watched content from libraries of a certain type
*
* @return The call builder
*/
public GetTopWatchedContentRequestBuilder getTopWatchedContent() {
return new GetTopWatchedContentRequestBuilder(sdkConfiguration);
}
/**
* Get Top Watched Content
*
* <p>This endpoint will return the top watched content from libraries of a certain type
*
* @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 GetTopWatchedContentResponse getTopWatchedContent(GetTopWatchedContentQueryParamType type) throws Exception {
return getTopWatchedContent(type, Optional.empty());
}
/**
* Get Top Watched Content
*
* <p>This endpoint will return the top watched content from libraries of a certain type
*
* @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
*
* @param includeGuids Adds the Guid object to the response
*
* @return The response from the API call
* @throws Exception if the API call fails
*/
public GetTopWatchedContentResponse getTopWatchedContent(GetTopWatchedContentQueryParamType type, Optional<? extends GetTopWatchedContentQueryParamIncludeGuids> includeGuids) throws Exception {
GetTopWatchedContentRequest request =
GetTopWatchedContentRequest
.builder()
.type(type)
.includeGuids(includeGuids)
.build();
RequestOperation<GetTopWatchedContentRequest, GetTopWatchedContentResponse> operation
= new GetTopWatchedContent.Sync(sdkConfiguration);
return operation.handleResponse(operation.doRequest(request));
}
}