mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-03-11 17:45:38 +00:00
removed streamscreen header filter
This commit is contained in:
parent
44f9aa5c35
commit
bfba45e74a
2 changed files with 127 additions and 4 deletions
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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.');
|
||||
|
|
|
|||
Loading…
Reference in a new issue