mirror of
https://github.com/movie-web/movie-web.git
synced 2024-11-11 02:05:09 +01:00
Add flixhq provider
Fully working movies provider, high quality m3u8
This commit is contained in:
parent
2fab8d5a44
commit
56c50fbb2f
67
src/providers/list/flixhq/index.ts
Normal file
67
src/providers/list/flixhq/index.ts
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import {
|
||||||
|
MWMediaProvider,
|
||||||
|
MWMediaType,
|
||||||
|
MWPortableMedia,
|
||||||
|
MWMediaStream,
|
||||||
|
MWQuery,
|
||||||
|
MWProviderMediaResult
|
||||||
|
} from "providers/types";
|
||||||
|
|
||||||
|
import { CORS_PROXY_URL } from "mw_constants";
|
||||||
|
|
||||||
|
export const flixhqProvider: MWMediaProvider = {
|
||||||
|
id: "flixhq",
|
||||||
|
enabled: true,
|
||||||
|
type: [MWMediaType.MOVIE],
|
||||||
|
displayName: "flixhq",
|
||||||
|
|
||||||
|
async getMediaFromPortable(media: MWPortableMedia): Promise<MWProviderMediaResult> {
|
||||||
|
const searchRes = await fetch(
|
||||||
|
`${CORS_PROXY_URL}https://api.consumet.org/movies/flixhq/info?id=${media.mediaId}`
|
||||||
|
).then((d) => d.json());
|
||||||
|
|
||||||
|
return {
|
||||||
|
...media,
|
||||||
|
title: searchRes.title,
|
||||||
|
year: searchRes.releaseDate,
|
||||||
|
} as MWProviderMediaResult;
|
||||||
|
},
|
||||||
|
|
||||||
|
async searchForMedia(query: MWQuery): Promise<MWProviderMediaResult[]> {
|
||||||
|
const searchRes = await fetch(
|
||||||
|
`${CORS_PROXY_URL}https://api.consumet.org/movies/flixhq/${query.searchQuery}`
|
||||||
|
).then((d) => d.json());
|
||||||
|
|
||||||
|
const results: MWProviderMediaResult[] = (searchRes || []).results.map((item: any) => ({
|
||||||
|
title: item.title,
|
||||||
|
year: item.releaseDate,
|
||||||
|
mediaId: item.id,
|
||||||
|
type: MWMediaType.MOVIE,
|
||||||
|
}));
|
||||||
|
|
||||||
|
return results;
|
||||||
|
},
|
||||||
|
|
||||||
|
async getStream(media: MWPortableMedia): Promise<MWMediaStream> {
|
||||||
|
const searchRes = await fetch(
|
||||||
|
`${CORS_PROXY_URL}https://api.consumet.org/movies/flixhq/info?id=${media.mediaId}`
|
||||||
|
).then((d) => d.json());
|
||||||
|
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
episodeId: searchRes.episodes[0].id,
|
||||||
|
mediaId: media.mediaId
|
||||||
|
})
|
||||||
|
|
||||||
|
const watchRes = await fetch(
|
||||||
|
`${CORS_PROXY_URL}https://api.consumet.org/movies/flixhq/watch?${encodeURIComponent(params.toString())}`
|
||||||
|
).then((d) => d.json());
|
||||||
|
|
||||||
|
const source = watchRes.sources.reduce((p: any, c: any) => (c.quality > p.quality) ? c : p);
|
||||||
|
|
||||||
|
return {
|
||||||
|
url: source.url,
|
||||||
|
type: source.isM3U8 ? "m3u8" : "mp4",
|
||||||
|
captions: []
|
||||||
|
} as MWMediaStream;
|
||||||
|
},
|
||||||
|
};
|
@ -3,12 +3,14 @@ import { gDrivePlayerScraper } from "providers/list/gdriveplayer";
|
|||||||
import { MWWrappedMediaProvider, WrapProvider } from "providers/wrapper";
|
import { MWWrappedMediaProvider, WrapProvider } from "providers/wrapper";
|
||||||
import { gomostreamScraper } from "providers/list/gomostream";
|
import { gomostreamScraper } from "providers/list/gomostream";
|
||||||
import { xemovieScraper } from "providers/list/xemovie";
|
import { xemovieScraper } from "providers/list/xemovie";
|
||||||
|
import { flixhqProvider } from "providers/list/flixhq";
|
||||||
|
|
||||||
export const mediaProvidersUnchecked: MWWrappedMediaProvider[] = [
|
export const mediaProvidersUnchecked: MWWrappedMediaProvider[] = [
|
||||||
WrapProvider(theFlixScraper),
|
WrapProvider(theFlixScraper),
|
||||||
WrapProvider(gDrivePlayerScraper),
|
WrapProvider(gDrivePlayerScraper),
|
||||||
WrapProvider(gomostreamScraper),
|
WrapProvider(gomostreamScraper),
|
||||||
WrapProvider(xemovieScraper),
|
WrapProvider(xemovieScraper),
|
||||||
|
WrapProvider(flixhqProvider),
|
||||||
];
|
];
|
||||||
|
|
||||||
export const mediaProviders: MWWrappedMediaProvider[] =
|
export const mediaProviders: MWWrappedMediaProvider[] =
|
||||||
|
Loading…
Reference in New Issue
Block a user