mirror of
https://github.com/p-stream/providers.git
synced 2026-01-11 20:10:33 +00:00
update valid to handle 200 errors that fail anyway
This commit is contained in:
parent
add7dc5b3f
commit
1c41c7d868
1 changed files with 28 additions and 3 deletions
|
|
@ -41,7 +41,28 @@ export function isValidStream(stream: Stream | undefined): boolean {
|
|||
* instead of proxiedFetcher
|
||||
*/
|
||||
function isAlreadyProxyUrl(url: string): boolean {
|
||||
return url.includes('/m3u8-proxy?url=');
|
||||
return url.includes('/m3u8-proxy?url=') || url.includes('shegu.net');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a response result indicates an invalid/error response that should fail validation
|
||||
*/
|
||||
function isErrorResponse(result: { statusCode: number; body: string | any; finalUrl?: string }): boolean {
|
||||
if (result.statusCode === 403) return true;
|
||||
|
||||
const bodyStr = typeof result.body === 'string' ? result.body : String(result.body);
|
||||
if (result.statusCode === 200 && bodyStr.trim() === 'error_wrong_ip') return true;
|
||||
|
||||
if (result.statusCode === 200) {
|
||||
try {
|
||||
const parsed = JSON.parse(bodyStr);
|
||||
if (parsed.status === 403 && parsed.msg === 'Access Denied') return true;
|
||||
} catch {
|
||||
// Not JSON, continue
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export async function validatePlayableStream(
|
||||
|
|
@ -88,7 +109,7 @@ export async function validatePlayableStream(
|
|||
});
|
||||
}
|
||||
|
||||
if (result.statusCode < 200 || result.statusCode >= 400) return null;
|
||||
if (result.statusCode < 200 || result.statusCode >= 400 || isErrorResponse(result)) return null;
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +151,11 @@ 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 || validQualitiesResults[index].statusCode >= 400) {
|
||||
if (
|
||||
validQualitiesResults[index].statusCode < 200 ||
|
||||
validQualitiesResults[index].statusCode >= 400 ||
|
||||
isErrorResponse(validQualitiesResults[index])
|
||||
) {
|
||||
delete validQualities[quality as keyof typeof stream.qualities];
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue