Browse Source

Add utils and movie link interface method to Plex package

dev
David Ludwig 4 years ago
parent
commit
8cb2a6e2fb
2 changed files with 31 additions and 0 deletions
  1. +22
    -0
      services/plex/src/services/IpcInterface.ts
  2. +9
    -0
      services/plex/src/utils.ts

+ 22
- 0
services/plex/src/services/IpcInterface.ts View File

@ -1,5 +1,7 @@
import { SOCKET_PATH } from "@autoplex-api/plex";
import { PlexMovie } from "@autoplex/database";
import { IpcServerService } from "@autoplex/ipc";
import { plexMediaUrl } from "../utils";
export default class IpcInterface extends IpcServerService
{
@ -12,4 +14,24 @@ export default class IpcInterface extends IpcServerService
* The path to the socket file
*/
public readonly SOCKET_PATH = SOCKET_PATH;
/**
* Install the message handlers
*/
protected installMessageHandlers() {
this.addMessageHandler("movie_links", this.movieLinks);
}
/**
* Fetch links to Plex media items
*/
protected async movieLinks(tmdbIds: (number|string)[]) {
let plexKeys = await Promise.all(tmdbIds.map(
tmdbId => PlexMovie.findPlexKey(tmdbId)
));
return tmdbIds.reduce((o, k, i) => ({
...o,
[k]: (plexKeys[i] !== null ? plexMediaUrl(plexKeys[i]!) : null)
}), {});
}
}

+ 9
- 0
services/plex/src/utils.ts View File

@ -0,0 +1,9 @@
import { env } from "@autoplex/utils";
/**
* Generate a URL to a movie/TV show on Plex
*/
export function plexMediaUrl(plexKey: number) {
return `${env("PLEX_URL")}/web/index.html#!/server/${env("PLEX_SERVER_ID")}/` +
`details?key=%2Flibrary%2Fmetadata%2F${plexKey}&context=library%3Acontent.library;`;
}

Loading…
Cancel
Save