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

14
providers/ringz/index.ts Normal file
View File

@@ -0,0 +1,14 @@
import {ringzGetPosts, ringzGetPostsSearch} from './ringzGetPosts';
import {ringzGetInfo} from './ringzGetMeta';
import {ringzGenresList, ringzCatalogList} from './ringzCatalog';
import {ProviderType} from '../types';
import {ringzGetStream} from './ringzGetStream';
export const ringz: ProviderType = {
catalog: ringzCatalogList,
genres: ringzGenresList,
GetMetaData: ringzGetInfo,
GetHomePosts: ringzGetPosts,
GetStream: ringzGetStream,
GetSearchPosts: ringzGetPostsSearch,
};

View File

@@ -0,0 +1,16 @@
export const ringzCatalogList = [
{
title: 'Movies',
filter: 'MOVIES',
},
{
title: 'TV Shows',
filter: 'SERIES',
},
{
title: 'Anime',
filter: 'ANIME',
},
];
export const ringzGenresList = [];

View File

@@ -0,0 +1,87 @@
import {Info, Link, ProviderContext} from '../types';
export const ringzGetInfo = async function ({
link: data,
}: {
link: string;
providerContext: ProviderContext;
}): Promise<Info> {
try {
const dataJson = JSON.parse(data);
const title = dataJson?.kn || dataJson?.mn;
const image = dataJson?.IH || dataJson?.IV;
const tags = dataJson?.gn
.split(',')
.slice(0, 3)
.map((tag: string) => tag.trim());
const type = dataJson?.cg === 'webSeries' ? 'series' : 'movie';
const linkList: Link[] = [];
if (dataJson?.cg === 'webSeries') {
['1', '2', '3', '4']?.forEach(item => {
const directLinks: Link['directLinks'] = [];
if (
typeof dataJson?.['eServer' + item] === 'object' &&
Object?.keys(dataJson?.['eServer' + item])?.length > 0
) {
Object.keys(dataJson?.['eServer' + item]).forEach(key => {
directLinks.push({
title: 'Episode ' + key,
link: JSON.stringify({
url: dataJson?.['eServer' + item][key],
server: 'Server ' + item,
}),
});
});
linkList.push({
title: dataJson?.pn + ' (Server ' + item + ')',
directLinks,
});
}
});
} else {
const directLinks: Link['directLinks'] = [];
['1', '2', '3', '4']?.forEach(item => {
if (dataJson?.['s' + item]) {
directLinks.push({
title: 'Server ' + item + ' (HD)',
link: JSON.stringify({
url: dataJson?.s1,
server: 'Server ' + item,
}),
});
}
if (dataJson?.['4s' + item]) {
directLinks.push({
title: 'Server ' + item + ' (480p)',
link: JSON.stringify({
url: dataJson?.['4s' + item],
server: 'Server ' + item,
}),
});
}
});
linkList.push({
title: dataJson?.pn,
directLinks,
});
}
return {
title,
image,
imdbId: '',
synopsis: '',
type,
linkList,
tags,
};
} catch (err) {
return {
title: '',
image: '',
imdbId: '',
synopsis: '',
type: 'movie',
linkList: [],
tags: [],
};
}
};

View File

@@ -0,0 +1,178 @@
import {Post, ProviderContext} from '../types';
export const ringzGetPosts = async function ({
filter,
signal,
providerContext,
}: {
filter: string;
page: number;
providerValue: string;
signal: AbortSignal;
providerContext: ProviderContext;
}): Promise<Post[]> {
return posts({filter, signal, providerContext});
};
export const ringzGetPostsSearch = async function ({
searchQuery,
page, // providerContext,
}: {
searchQuery: string;
page: number;
providerValue: string;
signal: AbortSignal;
providerContext: ProviderContext;
}): Promise<Post[]> {
if (page > 1) return [];
function searchData(data: any, query: string) {
// Convert query to lowercase for case-insensitive search
const searchQuery = query.toLowerCase();
// Filter movies based on movie name (mn)
return data.filter((movie: any) => {
// Convert movie name to lowercase and check if it includes the search query
const movieName = movie.mn.toLowerCase();
return movieName.includes(searchQuery);
});
}
try {
const catalog: Post[] = [];
const promises = [getRingzMovies(), getRingzShows(), getRingzAnime()];
const responses = await Promise.all(promises);
responses.map((response: any) => {
const searchResults = searchData(response, searchQuery);
searchResults.map((element: any) => {
const title = element?.kn || element?.mn;
const link = JSON.stringify(element);
const image = element?.IV;
if (title && link) {
catalog.push({
title: title,
link: link,
image: image,
});
}
});
});
return catalog;
} catch (err) {
console.error('ringz error ', err);
return [];
}
};
async function posts({
filter, // signal,
// providerContext,
}: {
filter: string;
signal: AbortSignal;
providerContext: ProviderContext;
}): Promise<Post[]> {
try {
let response;
if (filter === 'MOVIES') {
response = getRingzMovies();
}
if (filter === 'SERIES') {
response = getRingzShows();
}
if (filter === 'ANIME') {
response = getRingzAnime();
}
const data = await response;
const catalog: Post[] = [];
data.map((element: any) => {
const title = element?.kn || element?.mn;
const link = JSON.stringify(element);
const image = element?.IV;
if (title && link) {
catalog.push({
title: title,
link: link,
image: image,
});
}
});
return catalog;
} catch (err) {
console.error('ringz error ', err);
return [];
}
}
export const headers = {
'cf-access-client-id': '833049b087acf6e787cedfd85d1ccdb8.access',
'cf-access-client-secret':
'02db296a961d7513c3102d7785df4113eff036b2d57d060ffcc2ba3ba820c6aa',
};
const BASE_URL = 'https://privatereporz.pages.dev';
export async function getRingzMovies() {
try {
const response = await fetch(`${BASE_URL}/test.json`, {
headers: {
...headers,
},
});
const data = await response.json();
return data.AllMovieDataList;
} catch (error) {
console.error(error);
}
}
export async function getRingzShows() {
try {
const response = await fetch(`${BASE_URL}/srs.json`, {
headers: {
...headers,
},
});
const data = await response.json();
return data.webSeriesDataList;
} catch (error) {
console.error(error);
}
}
export async function getRingzAnime() {
try {
const response = await fetch(`${BASE_URL}/anime.json`, {
headers: {
...headers,
},
});
const data = await response.json();
return data.webSeriesDataList;
} catch (error) {
console.error(error);
}
}
export async function getRingzAdult() {
try {
const response = await fetch(`${BASE_URL}/desihub.json`, {
headers: {
...headers,
},
});
const data = await response.json();
return data.webSeriesDataList;
} catch (error) {
console.error(error);
}
}
export const ringzData: {
getRingzMovies: () => Promise<any>;
getRingzShows: () => Promise<any>;
getRingzAnime: () => Promise<any>;
getRingzAdult: () => Promise<any>;
} = {
getRingzMovies,
getRingzShows,
getRingzAnime,
getRingzAdult,
};

View File

@@ -0,0 +1,17 @@
import {Stream, ProviderContext} from '../types';
export const ringzGetStream = async function ({
link: data,
}: {
link: string;
providerContext: ProviderContext;
}): Promise<Stream[]> {
const streamLinks: Stream[] = [];
const dataJson = JSON.parse(data);
streamLinks.push({
link: dataJson.url,
server: dataJson.server,
type: 'mkv',
});
return streamLinks;
};