Add modules by emp0ry

This commit is contained in:
aka paul
2026-04-24 16:27:23 +02:00
parent 6f0a381e77
commit 3b720ebd25
14 changed files with 2702 additions and 52 deletions
+91 -4
View File
@@ -24,6 +24,24 @@ function pickBestHls(ep) {
return ep?.hls_1080 || ep?.hls_720 || ep?.hls_480 || null;
}
function _packEpisode(payload) {
return "aniliberty:" + encodeURIComponent(JSON.stringify(payload || {}));
}
function _unpackEpisode(href) {
const s = String(href || "");
if (!s.startsWith("aniliberty:")) return null;
return _safeJsonParse(decodeURIComponent(s.slice("aniliberty:".length)), null);
}
function _safeJsonParse(s, fallback) {
try {
return JSON.parse(s);
} catch (_) {
return fallback;
}
}
// ------------------------------------------------------------
// Detect working API domain
// ------------------------------------------------------------
@@ -117,8 +135,11 @@ async function extractEpisodes(url) {
const eps = Array.isArray(data?.episodes) ? data.episodes : [];
const out = eps.map((ep, idx) => {
const href = pickBestHls(ep);
if (!href) return null;
const url1080 = ep?.hls_1080 || null;
const url720 = ep?.hls_720 || null;
const url480 = ep?.hls_480 || null;
const best = url1080 || url720 || url480;
if (!best) return null;
const num = Number.isFinite(ep?.ordinal)
? ep.ordinal
@@ -137,7 +158,12 @@ async function extractEpisodes(url) {
: undefined;
const entry = {
href,
href: _packEpisode({
url1080,
url720,
url480,
fallback: best
}),
number: num,
title,
image
@@ -162,7 +188,68 @@ async function extractEpisodes(url) {
// ------------------------------------------------------------
async function extractStreamUrl(url) {
try {
return url; // direct HLS
const payload = _unpackEpisode(url);
if (!payload) {
return url; // backward compatibility for old episode href format
}
const url1080 = (payload.url1080 || "").toString().trim() || null;
const url720 = (payload.url720 || "").toString().trim() || null;
const url480 = (payload.url480 || "").toString().trim() || null;
const fallback = (payload.fallback || "").toString().trim() || null;
const streams = [];
if (url1080) {
streams.push({
title: "1080p",
streamUrl: url1080,
url1080,
url720,
url480,
headers: {
"User-Agent": "Mozilla/5.0",
"Referer": DEFAULT_IMAGE_HOST + "/"
}
});
}
if (url720) {
streams.push({
title: "720p",
streamUrl: url720,
url1080,
url720,
url480,
headers: {
"User-Agent": "Mozilla/5.0",
"Referer": DEFAULT_IMAGE_HOST + "/"
}
});
}
if (url480) {
streams.push({
title: "480p",
streamUrl: url480,
url1080,
url720,
url480,
headers: {
"User-Agent": "Mozilla/5.0",
"Referer": DEFAULT_IMAGE_HOST + "/"
}
});
}
if (!streams.length) {
return fallback;
}
return JSON.stringify({
streams,
subtitle: "https://none.com"
});
} catch (e) {
return null;
}
+2 -5
View File
@@ -5,7 +5,7 @@
"name": "emp0ry",
"icon": "https://avatars.githubusercontent.com/u/64217088"
},
"version": "1.0.3",
"version": "1.0.4",
"language": "Russian",
"streamType": "HLS",
"quality": "1080p",
@@ -20,8 +20,5 @@
"supportsMojuru": true,
"supportsDartotsu": true,
"supportsSora": true,
"supportsLuna": true,
"supportsAnymex": true,
"supportsTsumi": true,
"supportsHiyoku": true
"supportsLuna": true
}