extension(NetMirror): Added prime

This commit is contained in:
Swakshan
2025-01-19 21:29:02 +05:30
parent 2ac1c9a101
commit 3b39cbb267

View File

@@ -1,5 +1,6 @@
const mangayomiSources = [{ const mangayomiSources = [{
"name": "NetflixMirror", "name": "NetMirror",
"id": 446414301,
"lang": "all", "lang": "all",
"baseUrl": "https://iosmirror.cc", "baseUrl": "https://iosmirror.cc",
"apiUrl": "https://pcmirror.cc", "apiUrl": "https://pcmirror.cc",
@@ -7,7 +8,7 @@ const mangayomiSources = [{
"typeSource": "single", "typeSource": "single",
"isManga": false, "isManga": false,
"itemType": 1, "itemType": 1,
"version": "0.0.10", "version": "0.1.0",
"dateFormat": "", "dateFormat": "",
"dateFormatLocale": "", "dateFormatLocale": "",
"pkgPath": "anime/src/all/netflixmirror.js" "pkgPath": "anime/src/all/netflixmirror.js"
@@ -24,8 +25,15 @@ class DefaultExtension extends MProvider {
return preferences.get(key); return preferences.get(key);
} }
getPoster(id) { getPoster(id, service) {
return `https://imgcdn.media/poster/v/${id}.jpg` if (service === "nf")
return `https://imgcdn.media/poster/v/${id}.jpg`
if (service === "pv")
return `https://imgcdn.media/pv/480/${id}.jpg`
}
getServiceDetails() {
return this.getPreference("netmirror_pref_service");
} }
async getCookie() { async getCookie() {
@@ -48,13 +56,21 @@ class DefaultExtension extends MProvider {
preferences.setString("cookie_ts", data_time); preferences.setString("cookie_ts", data_time);
} }
var service = this.getServiceDetails();
return cookie; return `ott=${service}; ${cookie}`;
} }
async request(url, cookie, tvApi = false) { async request(url, cookie, tvApi = false) {
cookie = cookie ?? await this.getCookie(); cookie = cookie ?? await this.getCookie();
var service = this.getServiceDetails();
var slug = "";
if (url == "/home") slug = "";
else if (service == "pv") slug = "/pv";
if (tvApi) slug = "/tv";
var api = tvApi ? this.getTVApi() : this.source.baseUrl; var api = tvApi ? this.getTVApi() : this.source.baseUrl;
return (await new Client().get(api + url, { "cookie": cookie })).body; return (await new Client().get(api + slug + url, { "cookie": cookie })).body;
} }
async getPopular(page) { async getPopular(page) {
return await this.getPages(await this.request("/home"), ".tray-container, #top10") return await this.getPages(await this.request("/home"), ".tray-container, #top10")
@@ -83,11 +99,12 @@ class DefaultExtension extends MProvider {
} }
} }
async search(query, page, filters) { async search(query, page, filters) {
var service = this.getServiceDetails();
const data = JSON.parse(await this.request(`/search.php?s=${query}`)); const data = JSON.parse(await this.request(`/search.php?s=${query}`));
const list = []; const list = [];
data.searchResult.map(async (res) => { data.searchResult.map(async (res) => {
const id = res.id; const id = res.id;
list.push({ name: res.t, imageUrl: this.getPoster(id), link: id }); list.push({ name: res.t, imageUrl: this.getPoster(id, service), link: id });
}) })
return { return {
@@ -96,6 +113,7 @@ class DefaultExtension extends MProvider {
} }
} }
async getDetail(url) { async getDetail(url) {
var service = this.getServiceDetails();
const cookie = await this.getCookie(); const cookie = await this.getCookie();
const data = JSON.parse(await this.request(`/post.php?id=${url}`, cookie)); const data = JSON.parse(await this.request(`/post.php?id=${url}`, cookie));
const name = data.title; const name = data.title;
@@ -128,7 +146,7 @@ class DefaultExtension extends MProvider {
} }
return { return {
name, imageUrl: this.getPoster(url), description, status: 1, genre, episodes name, imageUrl: this.getPoster(url, service), description, status: 1, genre, episodes
}; };
} }
async getEpisodes(name, eid, sid, page, cookie) { async getEpisodes(name, eid, sid, page, cookie) {
@@ -160,7 +178,7 @@ class DefaultExtension extends MProvider {
var sortedStreams = []; var sortedStreams = [];
var copyStreams = streams.slice() var copyStreams = streams.slice()
var pref = await this.getPreference("netmirror_pref_video_resolution"); var pref = this.getPreference("netmirror_pref_video_resolution");
for (var i in streams) { for (var i in streams) {
var stream = streams[i]; var stream = streams[i];
if (stream.quality.indexOf(pref) > -1) { if (stream.quality.indexOf(pref) > -1) {
@@ -176,9 +194,20 @@ class DefaultExtension extends MProvider {
} }
async getVideoList(url) { async getVideoList(url) {
const baseUrl = this.getTVApi();
const urlData = JSON.parse(url); const urlData = JSON.parse(url);
const data = JSON.parse(await this.request(`/tv/playlist.php?id=${urlData.id}&t=${urlData.name}`, null, true)); var service = this.getServiceDetails()
let baseUrl = this.source.baseUrl
let isTVAPI = false;
if (service === "nf") {
baseUrl = this.getTVApi()
isTVAPI = true;
}
const data = JSON.parse(await this.request(`/playlist.php?id=${urlData.id}&t=${urlData.name}`, null, isTVAPI));
let videoList = []; let videoList = [];
let subtitles = []; let subtitles = [];
let audios = []; let audios = [];
@@ -224,13 +253,17 @@ class DefaultExtension extends MProvider {
} }
if ("tracks" in playlist) {
playlist.tracks.filter(track => track.kind === 'captions').forEach(track => {
var subUrl = track.file
subUrl = subUrl.startsWith("//") ? `https:${subUrl}` : subUrl;
playlist.tracks.filter(track => track.kind === 'captions').forEach(track => { subtitles.push({
subtitles.push({ label: track.label,
label: track.label, file: subUrl
file: track.file });
}); });
}); }
} }
@@ -256,6 +289,15 @@ class DefaultExtension extends MProvider {
"summary": "Homepage loads faster by not calling details API", "summary": "Homepage loads faster by not calling details API",
"value": false "value": false
} }
}, {
key: 'netmirror_pref_service',
listPreference: {
title: 'Preferred OTT service',
summary: '',
valueIndex: 0,
entries: ["Net mirror", "Prime mirror"],
entryValues: ["nf", "pv",]
}
},]; },];
} }