mirror of
https://github.com/vega-org/vega-providers.git
synced 2026-04-17 15:41:45 +00:00
init
This commit is contained in:
14
providers/ringz/index.ts
Normal file
14
providers/ringz/index.ts
Normal 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,
|
||||
};
|
||||
16
providers/ringz/ringzCatalog.ts
Normal file
16
providers/ringz/ringzCatalog.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export const ringzCatalogList = [
|
||||
{
|
||||
title: 'Movies',
|
||||
filter: 'MOVIES',
|
||||
},
|
||||
{
|
||||
title: 'TV Shows',
|
||||
filter: 'SERIES',
|
||||
},
|
||||
{
|
||||
title: 'Anime',
|
||||
filter: 'ANIME',
|
||||
},
|
||||
];
|
||||
|
||||
export const ringzGenresList = [];
|
||||
87
providers/ringz/ringzGetMeta.ts
Normal file
87
providers/ringz/ringzGetMeta.ts
Normal 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: [],
|
||||
};
|
||||
}
|
||||
};
|
||||
178
providers/ringz/ringzGetPosts.ts
Normal file
178
providers/ringz/ringzGetPosts.ts
Normal 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,
|
||||
};
|
||||
17
providers/ringz/ringzGetStream.ts
Normal file
17
providers/ringz/ringzGetStream.ts
Normal 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;
|
||||
};
|
||||
Reference in New Issue
Block a user