removed streamscreen header filter

This commit is contained in:
tapframe 2026-01-18 11:56:37 +05:30
parent 44f9aa5c35
commit bfba45e74a
2 changed files with 127 additions and 4 deletions

View file

@ -67,6 +67,7 @@ interface PlayerRouteParams {
year?: number;
streamProvider?: string;
streamName?: string;
videoType?: string;
id: string;
type: string;
episodeId?: string;
@ -92,6 +93,42 @@ const KSPlayerCore: React.FC = () => {
initialPosition: routeInitialPosition
} = params;
const videoType = (params as any)?.videoType as string | undefined;
useEffect(() => {
if (!__DEV__) return;
const headerKeys = Object.keys(headers || {});
logger.log('[KSPlayerCore] route params', {
uri: typeof uri === 'string' ? uri.slice(0, 240) : uri,
id,
type,
episodeId,
imdbId,
title,
episodeTitle,
season,
episode,
quality,
year,
streamProvider,
streamName,
videoType,
headersKeys: headerKeys,
headersCount: headerKeys.length,
});
}, [uri, episodeId]);
useEffect(() => {
if (!__DEV__) return;
const headerKeys = Object.keys(headers || {});
logger.log('[KSPlayerCore] source update', {
uri: typeof uri === 'string' ? uri.slice(0, 240) : uri,
videoType,
headersCount: headerKeys.length,
headersKeys: headerKeys,
});
}, [uri, headers, videoType]);
// --- Hooks ---
const playerState = usePlayerState();
const {
@ -399,6 +436,17 @@ const KSPlayerCore: React.FC = () => {
// Handlers
const onLoad = (data: any) => {
if (__DEV__) {
logger.log('[KSPlayerCore] onLoad', {
uri: typeof uri === 'string' ? uri.slice(0, 240) : uri,
duration: data?.duration,
audioTracksCount: Array.isArray(data?.audioTracks) ? data.audioTracks.length : 0,
textTracksCount: Array.isArray(data?.textTracks) ? data.textTracks.length : 0,
videoType,
headersKeys: Object.keys(headers || {}),
});
}
setDuration(data.duration);
if (data.audioTracks) tracks.setKsAudioTracks(data.audioTracks);
if (data.textTracks) tracks.setKsTextTracks(data.textTracks);
@ -482,6 +530,18 @@ const KSPlayerCore: React.FC = () => {
} catch (e) {
msg = 'Error parsing error details';
}
if (__DEV__) {
logger.error('[KSPlayerCore] onError', {
msg,
uri: typeof uri === 'string' ? uri.slice(0, 240) : uri,
videoType,
streamProvider,
streamName,
headersKeys: Object.keys(headers || {}),
rawError: error,
});
}
modals.setErrorDetails(msg);
modals.setShowErrorModal(true);
};
@ -525,6 +585,17 @@ const KSPlayerCore: React.FC = () => {
modals.setShowSourcesModal(false);
return;
}
if (__DEV__) {
logger.log('[KSPlayerCore] switching stream', {
fromUri: typeof uri === 'string' ? uri.slice(0, 240) : uri,
toUri: typeof newStream?.url === 'string' ? newStream.url.slice(0, 240) : newStream?.url,
newStreamHeadersKeys: Object.keys(newStream?.headers || {}),
newProvider: newStream?.addonName || newStream?.name || newStream?.addon || 'Unknown',
newName: newStream?.name || newStream?.title || 'Unknown',
});
}
modals.setShowSourcesModal(false);
setPaused(true);
@ -559,6 +630,19 @@ const KSPlayerCore: React.FC = () => {
setPaused(true);
const ep = modals.selectedEpisodeForStreams;
if (__DEV__) {
logger.log('[KSPlayerCore] switching episode stream', {
toUri: typeof stream?.url === 'string' ? stream.url.slice(0, 240) : stream?.url,
streamHeadersKeys: Object.keys(stream?.headers || {}),
ep: {
season: ep?.season_number,
episode: ep?.episode_number,
name: ep?.name,
stremioId: ep?.stremioId,
},
});
}
const newQuality = stream.quality || (stream.title?.match(/(\d+)p/)?.[0]);
const newProvider = stream.addonName || stream.name || stream.addon || 'Unknown';
const newStreamName = stream.name || stream.title || 'Unknown Stream';

View file

@ -25,7 +25,6 @@ import {
getQualityNumeric,
detectMkvViaHead,
inferVideoTypeFromUrl,
filterHeadersForVidrock,
sortStreamsByQuality,
} from './utils';
import {
@ -356,11 +355,17 @@ export const useStreamsScreen = () => {
// Navigate to player
const navigateToPlayer = useCallback(
async (stream: Stream, options?: { headers?: Record<string, string> }) => {
const finalHeaders = filterHeadersForVidrock(options?.headers || (stream.headers as any));
const optionHeaders = options?.headers;
const streamHeaders = (stream.headers as any) as Record<string, string> | undefined;
const proxyHeaders = ((stream as any)?.behaviorHints?.proxyHeaders?.request || undefined) as
| Record<string, string>
| undefined;
const streamProvider = stream.addonId || (stream as any).addonName || stream.name;
const finalHeaders = optionHeaders || streamHeaders || proxyHeaders;
const streamsToPass = selectedEpisode ? episodeStreams : groupedStreams;
const streamName = stream.name || stream.title || 'Unnamed Stream';
const streamProvider = stream.addonId || stream.addonName || stream.name;
const resolvedStreamProvider = streamProvider;
// Save stream to cache
try {
@ -393,6 +398,22 @@ export const useStreamsScreen = () => {
}
} catch { }
if (__DEV__) {
const finalHeaderKeys = Object.keys(finalHeaders || {});
logger.log('[StreamsScreen][navigateToPlayer] stream selection', {
url: typeof stream.url === 'string' ? stream.url.slice(0, 240) : stream.url,
addonId: stream.addonId,
addonName: (stream as any).addonName,
name: stream.name,
title: stream.title,
inferredVideoType: videoType,
optionHeadersKeys: Object.keys(optionHeaders || {}),
streamHeadersKeys: Object.keys(streamHeaders || {}),
finalHeadersKeys: finalHeaderKeys,
});
}
const playerRoute = Platform.OS === 'ios' ? 'PlayerIOS' : 'PlayerAndroid';
navigation.navigate(playerRoute as any, {
@ -403,7 +424,7 @@ export const useStreamsScreen = () => {
episode: (type === 'series' || type === 'other') ? currentEpisode?.episode_number : undefined,
quality: (stream.title?.match(/(\d+)p/) || [])[1] || undefined,
year: metadata?.year,
streamProvider,
streamProvider: resolvedStreamProvider,
streamName,
headers: finalHeaders,
id,
@ -424,6 +445,24 @@ export const useStreamsScreen = () => {
try {
if (!stream.url) return;
if (__DEV__) {
const streamHeaders = (stream.headers as any) as Record<string, string> | undefined;
const proxyHeaders = ((stream as any)?.behaviorHints?.proxyHeaders?.request || undefined) as
| Record<string, string>
| undefined;
logger.log('[StreamsScreen][handleStreamPress] pressed stream', {
url: typeof stream.url === 'string' ? stream.url.slice(0, 240) : stream.url,
addonId: stream.addonId,
addonName: (stream as any).addonName,
name: stream.name,
title: stream.title,
streamHeadersKeys: Object.keys(streamHeaders || {}),
proxyHeadersKeys: Object.keys(proxyHeaders || {}),
inferredVideoType: inferVideoTypeFromUrl(stream.url),
});
}
// Block magnet links
if (typeof stream.url === 'string' && stream.url.startsWith('magnet:')) {
openAlert('Not supported', 'Torrent streaming is not supported yet.');