You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
import { MWMediaType, MWMediaProviderMetadata } from "providers"; |
|
import { MWMedia, MWMediaEpisode, MWMediaSeason } from "providers/types"; |
|
import { mediaProviders, mediaProvidersUnchecked } from "./providers"; |
|
|
|
/* |
|
** Fetch all enabled providers for a specific type |
|
*/ |
|
export function GetProvidersForType(type: MWMediaType) { |
|
return mediaProviders.filter((v) => v.type.includes(type)); |
|
} |
|
|
|
/* |
|
** Get a provider by a id |
|
*/ |
|
export function getProviderFromId(id: string) { |
|
return mediaProviders.find((v) => v.id === id); |
|
} |
|
|
|
/* |
|
** Get a provider metadata |
|
*/ |
|
export function getProviderMetadata(id: string): MWMediaProviderMetadata { |
|
const provider = mediaProvidersUnchecked.find((v) => v.id === id); |
|
|
|
if (!provider) { |
|
return { |
|
exists: false, |
|
type: [], |
|
enabled: false, |
|
id, |
|
}; |
|
} |
|
|
|
return { |
|
exists: true, |
|
type: provider.type, |
|
enabled: provider.enabled, |
|
id, |
|
provider, |
|
}; |
|
} |
|
|
|
/* |
|
** get episode and season from media |
|
*/ |
|
export function getEpisodeFromMedia( |
|
media: MWMedia |
|
): { season: MWMediaSeason; episode: MWMediaEpisode } | null { |
|
if ( |
|
media.seasonId === undefined || |
|
media.episodeId === undefined || |
|
media.seriesData === undefined |
|
) { |
|
return null; |
|
} |
|
|
|
const season = media.seriesData.seasons.find((v) => v.id === media.seasonId); |
|
if (!season) return null; |
|
const episode = season?.episodes.find((v) => v.id === media.episodeId); |
|
if (!episode) return null; |
|
return { |
|
season, |
|
episode, |
|
}; |
|
}
|
|
|