Merge pull request #146 from Swakshan/extension/netmirror

Update: Netmirror
This commit is contained in:
Moustapha Kodjo Amadou
2025-01-25 21:23:44 +01:00
committed by GitHub

View File

@@ -7,7 +7,7 @@ const mangayomiSources = [{
"iconUrl": "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/all.netflixmirror.png", "iconUrl": "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/all.netflixmirror.png",
"typeSource": "single", "typeSource": "single",
"itemType": 1, "itemType": 1,
"version": "0.1.3", "version": "0.1.5",
"pkgPath": "anime/src/all/netflixmirror.js" "pkgPath": "anime/src/all/netflixmirror.js"
}]; }];
@@ -193,9 +193,11 @@ class DefaultExtension extends MProvider {
} }
async getVideoList(url) { async getVideoList(url) {
var baseUrl = this.getTVApi() var src = this.getPreference("netmirror_pref_stream_extraction");
var baseUrl = src === 'tv' ? this.getTVApi() : this.source.baseUrl
var service = this.getServiceDetails(); var service = this.getServiceDetails();
if (service === "nf") baseUrl += "/tv"; if (service === "nf" && src === 'tv') baseUrl += "/tv";
const data = JSON.parse(await this.request(`/playlist.php?id=${url}`)); const data = JSON.parse(await this.request(`/playlist.php?id=${url}`));
let videoList = []; let videoList = [];
@@ -214,6 +216,9 @@ class DefaultExtension extends MProvider {
if (resp.statusCode === 200) { if (resp.statusCode === 200) {
const masterPlaylist = resp.body; const masterPlaylist = resp.body;
if (masterPlaylist.indexOf("#EXT-X-STREAM-INF:") > 1) {
masterPlaylist.substringAfter('#EXT-X-MEDIA:').split('#EXT-X-MEDIA:').forEach(it => { masterPlaylist.substringAfter('#EXT-X-MEDIA:').split('#EXT-X-MEDIA:').forEach(it => {
if (it.includes('TYPE=AUDIO')) { if (it.includes('TYPE=AUDIO')) {
const audioInfo = it.substringAfter('TYPE=AUDIO').substringBefore('\n'); const audioInfo = it.substringAfter('TYPE=AUDIO').substringBefore('\n');
@@ -223,8 +228,8 @@ class DefaultExtension extends MProvider {
} }
}); });
masterPlaylist.substringAfter('#EXT-X-STREAM-INF:').split('#EXT-X-STREAM-INF:').forEach(it => {
masterPlaylist.substringAfter('#EXT-X-STREAM-INF:').split('#EXT-X-STREAM-INF:').forEach(it => {
var quality = `${it.substringAfter('RESOLUTION=').substringAfter('x').substringBefore(',')}p (${source.label})`; var quality = `${it.substringAfter('RESOLUTION=').substringAfter('x').substringBefore(',')}p (${source.label})`;
let videoUrl = it.substringAfter('\n').substringBefore('\n'); let videoUrl = it.substringAfter('\n').substringBefore('\n');
@@ -255,6 +260,7 @@ class DefaultExtension extends MProvider {
}); });
} }
} }
}
videoList[0].audios = audios; videoList[0].audios = audios;
@@ -288,7 +294,17 @@ class DefaultExtension extends MProvider {
entries: ["Net mirror", "Prime mirror"], entries: ["Net mirror", "Prime mirror"],
entryValues: ["nf", "pv",] 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"]
}
},
];
} }
} }