Merge branch 'dev' into fix-goojara

This commit is contained in:
MemeCornucopia
2024-02-17 11:41:50 -05:00
committed by GitHub
9 changed files with 29 additions and 8 deletions

View File

@@ -2,6 +2,16 @@
title: 'Changelog' title: 'Changelog'
--- ---
# Version 2.2.0
- Fixed vidsrc.me URL decoding.
- Added ridomovies with Ridoo and Closeload embed.
- Added Goojara.to source.
- Fixed VidSrcTo crashing if no subtitles are found.
- Added Nepu Provider.
- Added vidcloud to flixhq and zoechip.
- Add thumbnail track option to response (Not supported by any providers yet).
- Disabled Lookmovie and swapped Showbox and VidSrcTo in ranking.
# Version 2.1.1 # Version 2.1.1
- Fixed vidplay decryption keys being wrong and switched the domain to one that works - Fixed vidplay decryption keys being wrong and switched the domain to one that works

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@movie-web/providers", "name": "@movie-web/providers",
"version": "2.1.1", "version": "2.2.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@movie-web/providers", "name": "@movie-web/providers",
"version": "2.1.1", "version": "2.2.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@movie-web/providers", "name": "@movie-web/providers",
"version": "2.1.1", "version": "2.2.0",
"description": "Package that contains all the providers of movie-web", "description": "Package that contains all the providers of movie-web",
"main": "./lib/index.umd.js", "main": "./lib/index.umd.js",
"types": "./lib/index.d.ts", "types": "./lib/index.d.ts",

View File

@@ -43,7 +43,7 @@ export const closeLoadScraper = makeEmbed({
const evalCode = iframeRes$('script') const evalCode = iframeRes$('script')
.filter((_, el) => { .filter((_, el) => {
const script = iframeRes$(el); const script = iframeRes$(el);
return (script.attr('type') === 'text/javascript' && script.html()?.includes('eval')) ?? false; return (script.attr('type') === 'text/javascript' && script.html()?.includes('p,a,c,k,e,d')) ?? false;
}) })
.html(); .html();
if (!evalCode) throw new Error("Couldn't find eval code"); if (!evalCode) throw new Error("Couldn't find eval code");

View File

@@ -9,8 +9,12 @@ export const referer = `${vidplayBase}/`;
// Full credits to @Ciarands! // Full credits to @Ciarands!
export const getDecryptionKeys = async (ctx: EmbedScrapeContext): Promise<string[]> => { export const getDecryptionKeys = async (ctx: EmbedScrapeContext): Promise<string[]> => {
const res = await ctx.fetcher<string>('https://raw.githubusercontent.com/Ciarands/vidsrc-keys/main/keys.json'); const res = await ctx.proxiedFetcher<string>('https://github.com/Ciarands/vidsrc-keys/blob/main/keys.json');
return JSON.parse(res); const regex = /"rawLines":\s*\[([\s\S]*?)\]/;
const rawLines = res.match(regex)?.[1];
if (!rawLines) throw new Error('No keys found');
const keys = JSON.parse(`${rawLines.substring(1).replace(/\\"/g, '"')}]`);
return keys;
}; };
export const getEncodedId = async (ctx: EmbedScrapeContext) => { export const getEncodedId = async (ctx: EmbedScrapeContext) => {

View File

@@ -32,6 +32,7 @@ async function universalScraper(ctx: MovieScrapeContext | ShowScrapeContext): Pr
export const lookmovieScraper = makeSourcerer({ export const lookmovieScraper = makeSourcerer({
id: 'lookmovie', id: 'lookmovie',
name: 'LookMovie', name: 'LookMovie',
disabled: true,
rank: 700, rank: 700,
flags: [flags.IP_LOCKED], flags: [flags.IP_LOCKED],
scrapeShow: universalScraper, scrapeShow: universalScraper,

View File

@@ -41,7 +41,7 @@ async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promis
export const showboxScraper = makeSourcerer({ export const showboxScraper = makeSourcerer({
id: 'showbox', id: 'showbox',
name: 'Showbox', name: 'Showbox',
rank: 300, rank: 400,
flags: [flags.CORS_ALLOWED, flags.CF_BLOCKED], flags: [flags.CORS_ALLOWED, flags.CF_BLOCKED],
scrapeShow: comboScraper, scrapeShow: comboScraper,
scrapeMovie: comboScraper, scrapeMovie: comboScraper,

View File

@@ -83,5 +83,5 @@ export const vidSrcToScraper = makeSourcerer({
scrapeMovie: universalScraper, scrapeMovie: universalScraper,
scrapeShow: universalScraper, scrapeShow: universalScraper,
flags: [], flags: [],
rank: 400, rank: 300,
}); });

View File

@@ -8,10 +8,16 @@ export type StreamFile = {
export type Qualities = 'unknown' | '360' | '480' | '720' | '1080' | '4k'; export type Qualities = 'unknown' | '360' | '480' | '720' | '1080' | '4k';
type ThumbnailTrack = {
type: 'vtt';
url: string;
};
type StreamCommon = { type StreamCommon = {
id: string; // only unique per output id: string; // only unique per output
flags: Flags[]; flags: Flags[];
captions: Caption[]; captions: Caption[];
thumbnailTrack?: ThumbnailTrack;
headers?: Record<string, string>; // these headers HAVE to be set to watch the stream headers?: Record<string, string>; // these headers HAVE to be set to watch the stream
preferredHeaders?: Record<string, string>; // these headers are optional, would improve the stream preferredHeaders?: Record<string, string>; // these headers are optional, would improve the stream
}; };