This commit is contained in:
himanshu8443
2025-06-15 21:29:40 +05:30
commit 3f3e12f5df
299 changed files with 18729 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
import {nfCatalog, nfGenresList} from '../netflixMirror/nfCatalog';
import {nfGetPost, nfGetPostsSearch} from '../netflixMirror/nfGetPost';
import {ProviderType} from '../types';
import {pmGetInfo} from './pmGetInfo';
import {pmGetStream} from './pmGetStream';
import {pmGetEpisodes} from './pmGetEpisodes';
export const primeMirror: ProviderType = {
catalog: nfCatalog,
genres: nfGenresList,
GetMetaData: pmGetInfo,
GetHomePosts: nfGetPost,
GetStream: pmGetStream,
GetEpisodeLinks: pmGetEpisodes,
GetSearchPosts: nfGetPostsSearch,
};

View File

@@ -0,0 +1,49 @@
import {EpisodeLink, ProviderContext} from '../types';
export const pmGetEpisodes = async function ({
url: link,
providerContext,
}: {
url: string;
providerContext: ProviderContext;
}): Promise<EpisodeLink[]> {
const {getBaseUrl, axios} = providerContext;
let providerValue = 'primeMirror';
try {
const baseUrl = await getBaseUrl('nfMirror');
const url =
`${baseUrl}${
providerValue === 'netflixMirror'
? '/episodes.php?s='
: '/pv/episodes.php?s='
}` +
link +
'&t=' +
Math.round(new Date().getTime() / 1000);
console.log('nfEpisodesUrl', url);
const res = await axios.get(url, {
headers: {
'Content-Type': 'application/json',
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
'Accept-Language': 'en-US,en;q=0.9',
},
});
const data = res.data;
console.log('nfEpisodes', data);
const episodeList: EpisodeLink[] = [];
data?.episodes?.map((episode: any) => {
episodeList.push({
title: 'Episode ' + episode?.ep.replace('E', ''),
link: episode?.id,
});
});
return episodeList;
} catch (err) {
console.error('nfGetEpisodes error', err);
return [];
}
};

View File

@@ -0,0 +1,63 @@
import {Info, Link} from '../types';
export const pmGetInfo = async function ({
link,
}: {
link: string;
}): Promise<Info> {
let providerValue = 'primeMirror';
try {
const isPrime =
providerValue === 'primeMirror' ? 'isPrime=true' : 'isPrime=false';
const url = `https://netmirror.8man.me/api/net-proxy?${isPrime}&url=${encodeURIComponent(
link,
)}`;
console.log('nfifo', url);
const res = await fetch(url, {
credentials: 'omit',
});
const data = await res.json();
const id = link.split('id=')[1]?.split('&')[0];
const meta = {
title: data.title,
synopsis: data.desc,
image: `https://img.nfmirrorcdn.top/poster/h/${id}.jpg`,
cast: data?.short_cast?.split(','),
tags: [data?.year, data?.hdsd, ...data?.thismovieis?.split(',')],
imdbId: '',
type: 'series',
};
console.log('nfinfo', meta);
const linkList: Link[] = [];
if (data?.season?.length > 0) {
data.season.map((season: any) => {
linkList.push({
title: 'Season ' + season?.s,
episodesLink: season?.id,
});
});
} else {
linkList.push({
title: meta.title,
directLinks: [{link: id, title: 'Movie', type: 'movie'}],
});
}
return {
...meta,
linkList: linkList,
};
} catch (err) {
console.error(err);
return {
title: '',
synopsis: '',
image: '',
imdbId: '',
type: '',
linkList: [],
};
}
};

View File

@@ -0,0 +1,44 @@
import {ProviderContext, Stream} from '../types';
export const pmGetStream = async ({
link: id,
providerContext,
}: {
link: string;
providerContext: ProviderContext;
}): Promise<Stream[]> => {
const {getBaseUrl} = providerContext;
try {
let providerValue = 'primeMirror';
const baseUrl = await getBaseUrl('nfMirror');
const url = `https://netmirror.8man.me/api/net-proxy?url=${baseUrl}${
providerValue === 'netflixMirror'
? '/mobile/playlist.php?id='
: '/pv/playlist.php?id='
}${id}&t=${Math.round(new Date().getTime() / 1000)}`;
console.log('nfGetStream, url:', url);
const res = await fetch(url, {
credentials: 'omit',
});
const resJson = await res.json();
const data = resJson?.[0];
const streamLinks: Stream[] = [];
data?.sources.forEach((source: any) => {
streamLinks.push({
server: source.label,
link: (baseUrl + source.file)?.replace(':su', ':ni'),
type: 'm3u8',
headers: {
Referer: baseUrl,
origin: baseUrl,
Cookie: 'hd=on',
},
});
});
console.log(streamLinks);
return streamLinks;
} catch (err) {
console.error(err);
return [];
}
};