refactor: Rename function
Signed-off-by: Tim Hårek Andreassen <tim@harek.no>
This commit is contained in:
parent
52b7cf7a13
commit
2c1d6a3dca
54
lib/nrk.ts
54
lib/nrk.ts
|
|
@ -19,34 +19,8 @@ export type SearchResult = ArrayElement<SearchResultList> & {
|
||||||
description?: string;
|
description?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type Manifest = playbackComponents["schemas/playback-channel.json"]["components"]["schemas"]["PlayableManifest"];
|
|
||||||
|
|
||||||
const nrkAPI = `https://psapi.nrk.no`;
|
const nrkAPI = `https://psapi.nrk.no`;
|
||||||
|
|
||||||
async function withDownloadLink(
|
|
||||||
episode: PodcastEpisodesSingle,
|
|
||||||
type: catalogComponents["schemas"]["Type"],
|
|
||||||
): Promise<OriginalEpisode> {
|
|
||||||
// getting stream link
|
|
||||||
let { status: playbackStatus, body: playbackResponse } = await get<Manifest>(
|
|
||||||
`${nrkAPI}/playback/manifest/podcast/${episode.episodeId}`,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (type === "series") {
|
|
||||||
const { status, body } = await get<Manifest>(
|
|
||||||
`${nrkAPI}/playback/manifest/program/${episode.episodeId}`,
|
|
||||||
);
|
|
||||||
playbackStatus = status;
|
|
||||||
playbackResponse = body;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (playbackStatus === STATUS_CODE.OK && playbackResponse) {
|
|
||||||
return { ...episode, url: playbackResponse.playable.assets[0].url };
|
|
||||||
} else {
|
|
||||||
throw `Error getting downloadLink for ${episode.episodeId}, serie: ${episode.originalTitle}. Status: ${playbackStatus}`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function search(query: string): Promise<SearchResultList | null> {
|
async function search(query: string): Promise<SearchResultList | null> {
|
||||||
if (query === "") {
|
if (query === "") {
|
||||||
console.error("Empty search query.");
|
console.error("Empty search query.");
|
||||||
|
|
@ -97,7 +71,7 @@ async function getSerieData(
|
||||||
serieResponse?.series && episodeResponse?._embedded.episodes?.length
|
serieResponse?.series && episodeResponse?._embedded.episodes?.length
|
||||||
) {
|
) {
|
||||||
const episodes = await Promise.all(
|
const episodes = await Promise.all(
|
||||||
episodeResponse._embedded.episodes.map((episode) => withDownloadLink(episode, serieResponse.type)),
|
episodeResponse._embedded.episodes.map((episode) => getEpisodeWithDownloadLink(episode, serieResponse.type)),
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
...serieResponse.series,
|
...serieResponse.series,
|
||||||
|
|
@ -120,6 +94,32 @@ async function getEpisode(seriesId: string, episodeId: string): Promise<PodcastE
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Manifest = playbackComponents["schemas/playback-channel.json"]["components"]["schemas"]["PlayableManifest"];
|
||||||
|
|
||||||
|
async function getEpisodeWithDownloadLink(
|
||||||
|
episode: PodcastEpisodesSingle,
|
||||||
|
type: catalogComponents["schemas"]["Type"],
|
||||||
|
): Promise<OriginalEpisode> {
|
||||||
|
// getting stream link
|
||||||
|
let { status: playbackStatus, body: playbackResponse } = await get<Manifest>(
|
||||||
|
`${nrkAPI}/playback/manifest/podcast/${episode.episodeId}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (type === "series") {
|
||||||
|
const { status, body } = await get<Manifest>(
|
||||||
|
`${nrkAPI}/playback/manifest/program/${episode.episodeId}`,
|
||||||
|
);
|
||||||
|
playbackStatus = status;
|
||||||
|
playbackResponse = body;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (playbackStatus === STATUS_CODE.OK && playbackResponse) {
|
||||||
|
return { ...episode, url: playbackResponse.playable.assets[0].url };
|
||||||
|
} else {
|
||||||
|
throw `Error getting downloadLink for ${episode.episodeId}, serie: ${episode.originalTitle}. Status: ${playbackStatus}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const nrkRadio = {
|
export const nrkRadio = {
|
||||||
search,
|
search,
|
||||||
getSerieData,
|
getSerieData,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue