extension(NetMirror): updated baseurl logic

This commit is contained in:
Swakshan
2025-03-31 23:08:36 +05:30
parent 2b5badcdae
commit 00439472ef

View File

@@ -7,21 +7,29 @@ const mangayomiSources = [{
"iconUrl": "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/all.netflixmirror.png",
"typeSource": "single",
"itemType": 1,
"version": "0.1.5",
"version": "0.2.0",
"pkgPath": "anime/src/all/netflixmirror.js"
}];
class DefaultExtension extends MProvider {
getTVApi() {
return "https://pcmirror.cc"
}
getPreference(key) {
const preferences = new SharedPreferences();
return preferences.get(key);
}
getMobileBaseUrl() {
return this.getPreference("netmirror_override_mobile_base_url");
}
getTVBaseUrl() {
return this.getPreference("netmirror_override_tv_base_url");
}
getServiceDetails() {
return this.getPreference("netmirror_pref_service");
}
getPoster(id, service) {
if (service === "nf")
return `https://imgcdn.media/poster/v/${id}.jpg`
@@ -29,9 +37,6 @@ class DefaultExtension extends MProvider {
return `https://imgcdn.media/pv/480/${id}.jpg`
}
getServiceDetails() {
return this.getPreference("netmirror_pref_service");
}
async getCookie() {
const preferences = new SharedPreferences();
@@ -41,13 +46,13 @@ class DefaultExtension extends MProvider {
// Cookie lasts for 24hrs but still checking for 12hrs
if (now_ts - cookie_ts > 60 * 60 * 12) {
const check = await new Client().get(`${this.source.baseUrl}/home`, { "cookie": cookie });
const check = await new Client().get(this.getMobileBaseUrl() + `/mobile/home`, { "cookie": cookie });
const hDocBody = new Document(check.body).selectFirst("body")
const addhash = hDocBody.attr("data-addhash");
const data_time = hDocBody.attr("data-time");
var res = await new Client().post(`${this.getTVApi()}/tv/p.php`, { "cookie": "" }, { "hash": addhash });
var res = await new Client().post(`${this.getTVBaseUrl()}/tv/p.php`, { "cookie": "" }, { "hash": addhash });
cookie = res.headers["set-cookie"];
preferences.setString("cookie", cookie);
preferences.setString("cookie_ts", data_time);
@@ -64,8 +69,11 @@ class DefaultExtension extends MProvider {
var slug = "";
if (url == "/home") slug = "";
else if (service == "pv") slug = "/pv";
if (!(url.startsWith("https"))) {
url = this.getMobileBaseUrl() + "/mobile" + slug + url
}
return (await new Client().get(this.source.baseUrl + slug + url, { "cookie": cookie })).body;
return (await new Client().get(url, { "cookie": cookie })).body;
}
async getPopular(page) {
return await this.getPages(await this.request("/home"), ".tray-container, #top10")
@@ -194,18 +202,18 @@ class DefaultExtension extends MProvider {
async getVideoList(url) {
var src = this.getPreference("netmirror_pref_stream_extraction");
var baseUrl = src === 'tv' ? this.getTVApi() : this.source.baseUrl
var baseUrl = src === 'tv' ? this.getTVBaseUrl() : this.getMobileBaseUrl()
var service = this.getServiceDetails();
if (service === "nf" && src === 'tv') baseUrl += "/tv";
const data = JSON.parse(await this.request(`/playlist.php?id=${url}`));
var slug = "/mobile"
if (service === "nf" && src === 'tv') slug = "/tv";
url = baseUrl + slug + `/playlist.php?id=${url}`
const data = JSON.parse(await this.request(url));
let videoList = [];
let subtitles = [];
let audios = [];
for (const playlist of data) {
var source = playlist.sources[0]
var link = baseUrl + source.file;
var link = baseUrl.replace(slug, "") + source.file;
var headers =
{
'Origin': baseUrl,
@@ -269,41 +277,60 @@ class DefaultExtension extends MProvider {
}
getSourcePreferences() {
return [{
key: 'netmirror_pref_video_resolution',
listPreference: {
title: 'Preferred video resolution',
summary: '',
valueIndex: 0,
entries: ["1080p", "720p", "480p"],
entryValues: ["1080", "720", "480"]
}
}, {
"key": "netmirror_pref_display_name_1",
"switchPreferenceCompat": {
"title": "Display media name on home page",
"summary": "Homepage loads faster by not calling details API",
"value": true
}
}, {
key: 'netmirror_pref_service',
listPreference: {
title: 'Preferred OTT service',
summary: '',
valueIndex: 0,
entries: ["Net mirror", "Prime mirror"],
entryValues: ["nf", "pv",]
}
}, {
key: 'netmirror_pref_stream_extraction',
listPreference: {
title: 'Preferred stream extraction source',
summary: 'Extract stream from which source (if one source fails choose another)',
valueIndex: 0,
entries: ["TV", "Mobile"],
entryValues: ["tv", "mobile"]
}
},
return [
{
key: "netmirror_override_mobile_base_url",
editTextPreference: {
title: "Override mobile base url",
summary: "",
value: "https://netfree.cc",
dialogTitle: "Override base url",
dialogMessage: "",
}
}, {
key: "netmirror_override_tv_base_url",
editTextPreference: {
title: "Override tv base url",
summary: "",
value: "https://pcmirror.cc",
dialogTitle: "Override base url",
dialogMessage: "",
}
}, {
key: 'netmirror_pref_video_resolution',
listPreference: {
title: 'Preferred video resolution',
summary: '',
valueIndex: 0,
entries: ["1080p", "720p", "480p"],
entryValues: ["1080", "720", "480"]
}
}, {
"key": "netmirror_pref_display_name_1",
"switchPreferenceCompat": {
"title": "Display media name on home page",
"summary": "Homepage loads faster by not calling details API",
"value": true
}
}, {
key: 'netmirror_pref_service',
listPreference: {
title: 'Preferred OTT service',
summary: '',
valueIndex: 0,
entries: ["Net mirror", "Prime mirror"],
entryValues: ["nf", "pv",]
}
}, {
key: 'netmirror_pref_stream_extraction',
listPreference: {
title: 'Preferred stream extraction source',
summary: 'Extract stream from which source (if one source fails choose another)',
valueIndex: 0,
entries: ["TV", "Mobile"],
entryValues: ["tv", "mobile"]
}
},
];
}