extension(autoembed): Added pref to split stream quality or not

This commit is contained in:
Swakshan
2025-03-09 15:01:26 +05:30
parent 6672b42820
commit e15243fe28

View File

@@ -7,7 +7,7 @@ const mangayomiSources = [{
"typeSource": "multi", "typeSource": "multi",
"isManga": false, "isManga": false,
"itemType": 1, "itemType": 1,
"version": "1.2.3", "version": "1.2.4",
"dateFormat": "", "dateFormat": "",
"dateFormatLocale": "", "dateFormatLocale": "",
"pkgPath": "anime/src/all/autoembed.js" "pkgPath": "anime/src/all/autoembed.js"
@@ -156,15 +156,20 @@ class DefaultExtension extends MProvider {
// Extracts the streams url for different resolutions from a hls stream. // Extracts the streams url for different resolutions from a hls stream.
async extractStreams(url, lang = "", hdr = {}) { async extractStreams(url, lang = "", hdr = {}) {
const response = await new Client().get(url);
const body = response.body;
const lines = body.split('\n');
var streams = [{ var streams = [{
url: url, url: url,
originalUrl: url, originalUrl: url,
quality: "auto", quality: `${lang} - Auto`,
}]; }];
var pref = this.getPreference("autoembed_split_stream_quality");
if(!pref) return streams
const response = await new Client().get(url);
const body = response.body;
const lines = body.split('\n');
for (let i = 0; i < lines.length; i++) { for (let i = 0; i < lines.length; i++) {
if (lines[i].startsWith('#EXT-X-STREAM-INF:')) { if (lines[i].startsWith('#EXT-X-STREAM-INF:')) {
var resolution = lines[i].match(/RESOLUTION=(\d+x\d+)/)[1]; var resolution = lines[i].match(/RESOLUTION=(\d+x\d+)/)[1];
@@ -185,8 +190,18 @@ class DefaultExtension extends MProvider {
// For some streams, we can form stream url using a default template. // For some streams, we can form stream url using a default template.
async splitStreams(url, lang = "", hdr = {}) { async splitStreams(url, lang = "", hdr = {}) {
var streams = []; var streams = [{
var quality = ["auto", "360", "480", "720", "1080"] url: url,
originalUrl: url,
quality: `${lang} - Auto`,
headers: hdr
}];
var pref = this.getPreference("autoembed_split_stream_quality");
if(!pref) return streams
var quality = ["360", "480", "720", "1080"]
for (var q of quality) { for (var q of quality) {
var link = url var link = url
if (q != "auto") { if (q != "auto") {
@@ -441,7 +456,7 @@ class DefaultExtension extends MProvider {
}); });
for (var stream of availableStreams) { for (var stream of availableStreams) {
var streamSplit = await this.splitStreams(stream.url, stream.label); var streamSplit = await this.extractStreams(stream.url, stream.label);
streams = [...streams, ...streamSplit] streams = [...streams, ...streamSplit]
} }
@@ -512,6 +527,14 @@ class DefaultExtension extends MProvider {
entryValues: ["movies", "series"] entryValues: ["movies", "series"]
} }
}, },
{
key: 'autoembed_split_stream_quality',
"switchPreferenceCompat": {
'title': 'Split stream into different quality streams',
"summary": "Split stream Auto into 360p/720p/1080p",
"value": true
}
},
{ {
key: 'autoembed_stream_source_2', key: 'autoembed_stream_source_2',
listPreference: { listPreference: {