diff --git a/api/plex/src/IpcClient.ts b/api/plex/src/IpcClient.ts index 5c9a769..5f01d20 100644 --- a/api/plex/src/IpcClient.ts +++ b/api/plex/src/IpcClient.ts @@ -24,4 +24,15 @@ export class IpcClient extends IpcClientS } return <{ [tmdbId: string]: string|null }>results.data; } + + /** + * Check if the given movie is already on Plex + */ + public async hasMovie(tmdbId: number|string) { + let results = await this.request("has_movie", tmdbId); + if (results.error) { + throw new Error("Failed to check if Plex has a movie"); + } + return results.data; + } } diff --git a/services/plex/src/services/IpcInterface.ts b/services/plex/src/services/IpcInterface.ts index 4e3543f..cc173e3 100644 --- a/services/plex/src/services/IpcInterface.ts +++ b/services/plex/src/services/IpcInterface.ts @@ -20,6 +20,7 @@ export default class IpcInterface extends IpcServerService */ protected override installMessageHandlers() { this.addMessageHandler("movie_links", this.movieLinks); + this.addMessageHandler("has_movie", this.hasMovie); } /** @@ -34,4 +35,11 @@ export default class IpcInterface extends IpcServerService [k]: (plexKeys[i] !== null ? plexMediaUrl(plexKeys[i]!) : null) }), {}); } + + /** + * Check if the given movie is currently on Plex + */ + protected async hasMovie(tmdbId: string) { + return await PlexMovie.exists(tmdbId); + } }