mirror of
https://git.luna-app.eu/50n50/sources
synced 2025-12-21 21:26:19 +01:00
Merge pull request 'added animelib when extracting streams in animelib module' (#3) from ibro/sources:main into main
Reviewed-on: https://git.luna-app.eu/50n50/sources/pulls/3
This commit is contained in:
commit
7a6f22e51b
1 changed files with 92 additions and 22 deletions
|
|
@ -80,42 +80,112 @@ async function extractStreamUrl(ID) {
|
||||||
const data = json.data || {};
|
const data = json.data || {};
|
||||||
const players = data.players || [];
|
const players = data.players || [];
|
||||||
|
|
||||||
|
// const parserPromises = players
|
||||||
|
// .filter(player => player.src && player.team && player.team.name)
|
||||||
|
// .map(async (player) => {
|
||||||
|
// try {
|
||||||
|
// const kodikUrl = "https:" + player.src;
|
||||||
|
// const qualitiesJson = await kodikParser(kodikUrl);
|
||||||
|
// const qualities = JSON.parse(qualitiesJson);
|
||||||
|
|
||||||
|
// let highestQuality = null;
|
||||||
|
// let highestQualityNum = 0;
|
||||||
|
|
||||||
|
// for (const quality in qualities) {
|
||||||
|
// if (qualities[quality].src) {
|
||||||
|
// const qualityNum = parseInt(quality.replace('p', '')) || 0;
|
||||||
|
// if (qualityNum > highestQualityNum) {
|
||||||
|
// highestQualityNum = qualityNum;
|
||||||
|
// highestQuality = qualities[quality].src;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (highestQuality) {
|
||||||
|
|
||||||
|
// if (highestQuality.startsWith('//')) {
|
||||||
|
// highestQuality = 'https:' + highestQuality;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return {
|
||||||
|
// title: player.team.name,
|
||||||
|
// streamUrl: highestQuality,
|
||||||
|
// headers: {
|
||||||
|
// "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
|
||||||
|
// "Referer": "https://kodik.info/"
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
// } catch (err) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
players.sort((a, b) => {
|
||||||
|
const order = { Animelib: 0, Kodik: 1 };
|
||||||
|
return (order[a.player] ?? 99) - (order[b.player] ?? 99);
|
||||||
|
});
|
||||||
|
|
||||||
const parserPromises = players
|
const parserPromises = players
|
||||||
.filter(player => player.src && player.team && player.team.name)
|
.filter(player => player.team && player.team.name)
|
||||||
.map(async (player) => {
|
.map(async (player) => {
|
||||||
try {
|
try {
|
||||||
const kodikUrl = "https:" + player.src;
|
let streamUrl = null;
|
||||||
const qualitiesJson = await kodikParser(kodikUrl);
|
|
||||||
const qualities = JSON.parse(qualitiesJson);
|
|
||||||
|
|
||||||
let highestQuality = null;
|
|
||||||
let highestQualityNum = 0;
|
let highestQualityNum = 0;
|
||||||
|
|
||||||
for (const quality in qualities) {
|
if (player.player === "Animelib" && player.video && player.video.quality) {
|
||||||
if (qualities[quality].src) {
|
const qualities = player.video.quality;
|
||||||
const qualityNum = parseInt(quality.replace('p', '')) || 0;
|
|
||||||
if (qualityNum > highestQualityNum) {
|
console.log(qualities);
|
||||||
highestQualityNum = qualityNum;
|
|
||||||
highestQuality = qualities[quality].src;
|
for (const qualityItem of qualities) {
|
||||||
|
if (qualityItem.href && qualityItem.quality > highestQualityNum) {
|
||||||
|
highestQualityNum = qualityItem.quality;
|
||||||
|
streamUrl = qualityItem.href;
|
||||||
|
|
||||||
|
console.log("Found Animelib quality: " + qualityItem.quality + " URL: " + streamUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// Animelib URLs are relative, prepend base URL
|
||||||
if (highestQuality) {
|
if (streamUrl && !streamUrl.startsWith('http')) {
|
||||||
|
// https://video1.cdnlibs.org/.аs/
|
||||||
if (highestQuality.startsWith('//')) {
|
// https://video2.anilib.me/.аs/
|
||||||
highestQuality = 'https:' + highestQuality;
|
// https://video3.anilib.me/.аs/
|
||||||
|
streamUrl = 'https://video1.cdnlibs.org/.%D0%B0s/' + streamUrl;
|
||||||
|
}
|
||||||
|
} else if (player.player === "Kodik" && player.src) {
|
||||||
|
const kodikUrl = "https:" + player.src;
|
||||||
|
const qualitiesJson = await kodikParser(kodikUrl);
|
||||||
|
const qualities = JSON.parse(qualitiesJson);
|
||||||
|
|
||||||
|
for (const quality in qualities) {
|
||||||
|
if (qualities[quality].src) {
|
||||||
|
const qualityNum = parseInt(quality.replace('p', '')) || 0;
|
||||||
|
if (qualityNum > highestQualityNum) {
|
||||||
|
highestQualityNum = qualityNum;
|
||||||
|
streamUrl = qualities[quality].src;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (streamUrl && streamUrl.startsWith('//')) {
|
||||||
|
streamUrl = 'https:' + streamUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (streamUrl) {
|
||||||
return {
|
return {
|
||||||
title: player.team.name,
|
title: player.team.name + (highestQualityNum ? ` (${highestQualityNum}p)` : '') + (player.player === "Animelib" ? " (Animelib)" : " (Kodik)"),
|
||||||
streamUrl: highestQuality,
|
streamUrl,
|
||||||
headers: {
|
headers: {
|
||||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
|
||||||
"Referer": "https://kodik.info/"
|
"Referer": player.player === "Kodik" ? "https://kodik.info/" : "https://v3.animelib.org/"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue