Fix febbox qualities

This commit is contained in:
mrjvs
2023-12-29 18:33:58 +01:00
parent 5058a1edb5
commit 81668fe9e7

View File

@@ -4,24 +4,36 @@ import { ScrapeContext } from '@/utils/context';
const allowedQualities = ['360', '480', '720', '1080', '4k']; const allowedQualities = ['360', '480', '720', '1080', '4k'];
export async function getStreamQualities(ctx: ScrapeContext, apiQuery: object) { interface FebboxQuality {
const mediaRes: { list: { path: string; quality: string; fid?: number }[] } = (await sendRequest(ctx, apiQuery)).data; path: string;
real_quality: string;
fid?: number;
}
const qualityMap = mediaRes.list function mapToQuality(quality: FebboxQuality): FebboxQuality | null {
.filter((file) => allowedQualities.includes(file.quality.replace('p', ''))) console.log(quality);
.map((file) => ({ const q = quality.real_quality.replace('p', '').toLowerCase();
url: file.path, if (!allowedQualities.includes(q)) return null;
quality: file.quality.replace('p', ''), return {
})); real_quality: q,
path: quality.path,
fid: quality.fid,
};
}
export async function getStreamQualities(ctx: ScrapeContext, apiQuery: object) {
const mediaRes: { list: FebboxQuality[] } = (await sendRequest(ctx, apiQuery)).data;
const qualityMap = mediaRes.list.map((v) => mapToQuality(v)).filter((v): v is FebboxQuality => !!v);
const qualities: Record<string, StreamFile> = {}; const qualities: Record<string, StreamFile> = {};
allowedQualities.forEach((quality) => { allowedQualities.forEach((quality) => {
const foundQuality = qualityMap.find((q) => q.quality === quality); const foundQuality = qualityMap.find((q) => q.real_quality === quality);
if (foundQuality && foundQuality.url) { if (foundQuality && foundQuality.path) {
qualities[quality] = { qualities[quality] = {
type: 'mp4', type: 'mp4',
url: foundQuality.url, url: foundQuality.path,
}; };
} }
}); });