diff --git a/README.md b/README.md index 1aa330b..a5a9ac2 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,30 @@ features: Todos: - make default fetcher maker thing work with both undici and node-fetch + + +providers need to be ported to the new provider repo: + +* [ ] superstream +* [x] flixhq +* [ ] gomovies +* [ ] kissasian +* [x] remotestream + +embeds: + +* [x] upcloud +* [ ] mp4upload +* [ ] playm4u +* [ ] streamm4u +* [ ] streamsb + +providers that will not be ported: + +* 2embed (disabled) +* gdriveplayer (disabled) +* hdwatched (disabled) +* m4ufree (disabled) +* netfilm (disabled) +* sflix (disabled) +* streamflix (uses flixhq, we already have the content) diff --git a/package-lock.json b/package-lock.json index 626dcc4..9bb9569 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@movie-web/providers", - "version": "0.0.11", + "version": "0.0.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@movie-web/providers", - "version": "0.0.11", + "version": "0.0.12", "license": "MIT", "dependencies": { "cheerio": "^1.0.0-rc.12", diff --git a/src/providers/sources/remotestream/common.ts b/src/providers/sources/remotestream/common.ts new file mode 100644 index 0000000..be8edfd --- /dev/null +++ b/src/providers/sources/remotestream/common.ts @@ -0,0 +1 @@ +export const remotestreamBase = `https://fsa.remotestre.am`; diff --git a/src/providers/sources/remotestream/index.ts b/src/providers/sources/remotestream/index.ts new file mode 100644 index 0000000..b7601c5 --- /dev/null +++ b/src/providers/sources/remotestream/index.ts @@ -0,0 +1,34 @@ +import { flags } from '@/main/targets'; +import { makeSourcerer } from '@/providers/base'; +import { NotFoundError } from '@/utils/errors'; + +import { remotestreamBase } from './common'; + +// TODO tv shows are available in flixHQ, just no scraper yet +export const flixhqScraper = makeSourcerer({ + id: 'remotestream', + name: 'Remote Stream', + rank: 55, + flags: [flags.NO_CORS], + async scrapeShow(ctx) { + let playlistLink = `${remotestreamBase}/Movies/${ctx.media.tmdbId}`; + + const seasonNumber = ctx.media.season.number; + const episodeNumber = ctx.media.episode.number; + + playlistLink += `/${seasonNumber}/${episodeNumber}/${episodeNumber}.m3u8`; + + const streamRes = await ctx.fetcher(playlistLink); + if (streamRes.type !== 'application/x-mpegurl') throw new NotFoundError('No watchable item found'); + ctx.progress(90); + + return { + embeds: [], + stream: { + playlist: playlistLink, + type: 'hls', + flags: [flags.NO_CORS], + }, + }; + }, +});