2022-02-27 20:07:15 +01:00
|
|
|
import { getProviderFromId } from "./methods/helpers";
|
2022-02-20 15:49:21 +01:00
|
|
|
import {
|
|
|
|
MWMedia,
|
|
|
|
MWPortableMedia,
|
2022-02-20 16:45:46 +01:00
|
|
|
MWMediaStream,
|
2022-02-20 15:49:21 +01:00
|
|
|
} from "./types";
|
2022-02-28 00:08:20 +01:00
|
|
|
import contentCache from "./methods/contentCache";
|
2022-03-06 13:43:32 +01:00
|
|
|
|
2022-02-06 21:42:39 +01:00
|
|
|
export * from "./types";
|
2022-02-27 20:07:15 +01:00
|
|
|
export * from "./methods/helpers";
|
|
|
|
export * from "./methods/providers";
|
|
|
|
export * from "./methods/search";
|
2022-02-06 21:42:39 +01:00
|
|
|
|
2022-02-17 18:25:12 +01:00
|
|
|
/*
|
|
|
|
** Turn media object into a portable media object
|
|
|
|
*/
|
|
|
|
export function convertMediaToPortable(media: MWMedia): MWPortableMedia {
|
|
|
|
return {
|
|
|
|
mediaId: media.mediaId,
|
|
|
|
providerId: media.providerId,
|
|
|
|
mediaType: media.mediaType,
|
|
|
|
episode: media.episode,
|
|
|
|
season: media.season,
|
|
|
|
};
|
2022-02-06 21:42:39 +01:00
|
|
|
}
|
|
|
|
|
2022-02-17 18:25:12 +01:00
|
|
|
/*
|
|
|
|
** Turn portable media into media object
|
|
|
|
*/
|
|
|
|
export async function convertPortableToMedia(
|
|
|
|
portable: MWPortableMedia
|
|
|
|
): Promise<MWMedia | undefined> {
|
2022-02-28 00:08:20 +01:00
|
|
|
// consult cache first
|
2022-03-06 13:43:32 +01:00
|
|
|
const output = contentCache.get(portable);
|
2022-02-28 00:08:20 +01:00
|
|
|
if (output) return output;
|
|
|
|
|
2022-02-17 18:25:12 +01:00
|
|
|
const provider = getProviderFromId(portable.providerId);
|
|
|
|
return await provider?.getMediaFromPortable(portable);
|
2022-02-06 21:42:39 +01:00
|
|
|
}
|
2022-02-20 16:45:46 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
** find provider from portable and get stream from that provider
|
|
|
|
*/
|
|
|
|
export async function getStream(
|
|
|
|
media: MWPortableMedia
|
|
|
|
): Promise<MWMediaStream | undefined> {
|
|
|
|
const provider = getProviderFromId(media.providerId);
|
|
|
|
if (!provider) return undefined;
|
|
|
|
|
|
|
|
return await provider.getStream(media);
|
|
|
|
}
|