diff --git a/.docs/content/1.get-started/4.changelog.md b/.docs/content/1.get-started/4.changelog.md index 19f78f7..ea72f5e 100644 --- a/.docs/content/1.get-started/4.changelog.md +++ b/.docs/content/1.get-started/4.changelog.md @@ -2,6 +2,9 @@ title: 'Changelog' --- +# Version 2.2.7 +- Fix showbox + # Version 2.2.6 - Fix febbox - Validate if a stream is actually playable. Streams that are not responding are no longer returned. diff --git a/package.json b/package.json index 8438d0b..d9111f9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@movie-web/providers", - "version": "2.2.6", + "version": "2.2.7", "description": "Package that contains all the providers of movie-web", "type": "module", "main": "./lib/index.umd.js", diff --git a/src/utils/valid.ts b/src/utils/valid.ts index 65db1ea..fb9ef0f 100644 --- a/src/utils/valid.ts +++ b/src/utils/valid.ts @@ -22,26 +22,26 @@ export async function validatePlayableStream( stream: Stream, ops: ProviderRunnerOptions | IndividualEmbedRunnerOptions, ): Promise { - const fetcher = stream.flags.length === 1 && stream.flags.includes('cors-allowed') ? ops.fetcher : ops.proxiedFetcher; if (stream.type === 'hls') { - const headResult = await fetcher.full(stream.playlist, { - method: 'HEAD', + const result = await ops.proxiedFetcher.full(stream.playlist, { + method: 'GET', headers: { ...stream.preferredHeaders, ...stream.headers, }, }); - if (headResult.statusCode !== 200) return null; + if (result.statusCode < 200 || result.statusCode >= 400) return null; return stream; } if (stream.type === 'file') { const validQualitiesResults = await Promise.all( Object.values(stream.qualities).map((quality) => - fetcher.full(quality.url, { - method: 'HEAD', + ops.proxiedFetcher.full(quality.url, { + method: 'GET', headers: { ...stream.preferredHeaders, ...stream.headers, + Range: 'bytes=0-1', }, }), ), @@ -49,7 +49,7 @@ export async function validatePlayableStream( // remove invalid qualities from the stream const validQualities = stream.qualities; Object.keys(stream.qualities).forEach((quality, index) => { - if (validQualitiesResults[index].statusCode !== 200) { + if (validQualitiesResults[index].statusCode < 200 || validQualitiesResults[index].statusCode >= 400) { delete validQualities[quality as keyof typeof stream.qualities]; } });