Update yummyanime/yummyanime.js
This commit is contained in:
@@ -49,13 +49,14 @@ function _dubbingRank(name) {
|
|||||||
|
|
||||||
const order = [
|
const order = [
|
||||||
"anilibria",
|
"anilibria",
|
||||||
"ani libria",
|
"aniliberty",
|
||||||
"jam",
|
"jam",
|
||||||
"anidub",
|
"anidub",
|
||||||
"ani dub",
|
|
||||||
"shiza",
|
"shiza",
|
||||||
"studio band",
|
"studio band",
|
||||||
|
"studioband",
|
||||||
"dream cast",
|
"dream cast",
|
||||||
|
"dreamcast",
|
||||||
"crunchyroll",
|
"crunchyroll",
|
||||||
"sub",
|
"sub",
|
||||||
"субтит"
|
"субтит"
|
||||||
@@ -178,7 +179,7 @@ async function extractEpisodes(animeIdOrUrl) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Group by episode number
|
// Group by episode number
|
||||||
const byNum = new Map(); // num -> { num, options: [...], opening?, ending?, duration? }
|
const byNum = new Map(); // num -> { num, options: [...], opening?, ending?, duration?, skips? }
|
||||||
|
|
||||||
for (const v of kodikVids) {
|
for (const v of kodikVids) {
|
||||||
const num = parseFloat(v?.number) || 0;
|
const num = parseFloat(v?.number) || 0;
|
||||||
@@ -204,10 +205,30 @@ async function extractEpisodes(animeIdOrUrl) {
|
|||||||
? { start: v.skips.ending.time, stop: v.skips.ending.time + v.skips.ending.length }
|
? { start: v.skips.ending.time, stop: v.skips.ending.time + v.skips.ending.length }
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
|
// raw timecode format (time + length)
|
||||||
|
const skips =
|
||||||
|
(v?.skips?.opening && Number.isFinite(v.skips.opening.time) && Number.isFinite(v.skips.opening.length)) ||
|
||||||
|
(v?.skips?.ending && Number.isFinite(v.skips.ending.time) && Number.isFinite(v.skips.ending.length))
|
||||||
|
? {
|
||||||
|
opening:
|
||||||
|
v?.skips?.opening &&
|
||||||
|
Number.isFinite(v.skips.opening.time) &&
|
||||||
|
Number.isFinite(v.skips.opening.length)
|
||||||
|
? { time: v.skips.opening.time, length: v.skips.opening.length }
|
||||||
|
: null,
|
||||||
|
ending:
|
||||||
|
v?.skips?.ending &&
|
||||||
|
Number.isFinite(v.skips.ending.time) &&
|
||||||
|
Number.isFinite(v.skips.ending.length)
|
||||||
|
? { time: v.skips.ending.time, length: v.skips.ending.length }
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
: undefined;
|
||||||
|
|
||||||
const duration = Number.isFinite(v?.duration) && v.duration > 0 ? v.duration : undefined;
|
const duration = Number.isFinite(v?.duration) && v.duration > 0 ? v.duration : undefined;
|
||||||
|
|
||||||
if (!byNum.has(num)) {
|
if (!byNum.has(num)) {
|
||||||
byNum.set(num, { num, options: [], opening, ending, duration });
|
byNum.set(num, { num, options: [], opening, ending, duration, skips });
|
||||||
}
|
}
|
||||||
|
|
||||||
const ep = byNum.get(num);
|
const ep = byNum.get(num);
|
||||||
@@ -217,10 +238,15 @@ async function extractEpisodes(animeIdOrUrl) {
|
|||||||
if (!ep.ending && ending) ep.ending = ending;
|
if (!ep.ending && ending) ep.ending = ending;
|
||||||
if (!ep.duration && duration) ep.duration = duration;
|
if (!ep.duration && duration) ep.duration = duration;
|
||||||
|
|
||||||
|
// keep first raw skips object if present
|
||||||
|
if (!ep.skips && skips) ep.skips = skips;
|
||||||
|
|
||||||
ep.options.push({
|
ep.options.push({
|
||||||
dubbing,
|
dubbing,
|
||||||
player,
|
player,
|
||||||
iframe_url: iframeUrl
|
iframe_url: iframeUrl,
|
||||||
|
opening,
|
||||||
|
ending
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,8 +268,14 @@ async function extractEpisodes(animeIdOrUrl) {
|
|||||||
title: `Episode ${ep.num}`
|
title: `Episode ${ep.num}`
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ep.opening) item.opening = ep.opening;
|
// Use skips from the first (sorted) voiceover option
|
||||||
if (ep.ending) item.ending = ep.ending;
|
const primary = ep.options[0];
|
||||||
|
if (primary?.opening) item.opening = primary.opening;
|
||||||
|
if (primary?.ending) item.ending = primary.ending;
|
||||||
|
|
||||||
|
// raw timecodes (time + length)
|
||||||
|
if (ep.skips) item.skips = ep.skips;
|
||||||
|
|
||||||
if (ep.duration) item.duration = ep.duration;
|
if (ep.duration) item.duration = ep.duration;
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
|||||||
Reference in New Issue
Block a user