1
0
forked from 50n50/sources

Update yummyanime/yummyanime.js

This commit is contained in:
aka paul
2026-02-14 17:46:48 +00:00
parent 76c135dab9
commit 984881911e
+39 -7
View File
@@ -49,13 +49,14 @@ function _dubbingRank(name) {
const order = [
"anilibria",
"ani libria",
"aniliberty",
"jam",
"anidub",
"ani dub",
"shiza",
"studio band",
"studioband",
"dream cast",
"dreamcast",
"crunchyroll",
"sub",
"субтит"
@@ -178,7 +179,7 @@ async function extractEpisodes(animeIdOrUrl) {
});
// 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) {
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 }
: 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;
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);
@@ -217,10 +238,15 @@ async function extractEpisodes(animeIdOrUrl) {
if (!ep.ending && ending) ep.ending = ending;
if (!ep.duration && duration) ep.duration = duration;
// keep first raw skips object if present
if (!ep.skips && skips) ep.skips = skips;
ep.options.push({
dubbing,
player,
iframe_url: iframeUrl
iframe_url: iframeUrl,
opening,
ending
});
}
@@ -242,8 +268,14 @@ async function extractEpisodes(animeIdOrUrl) {
title: `Episode ${ep.num}`
};
if (ep.opening) item.opening = ep.opening;
if (ep.ending) item.ending = ep.ending;
// Use skips from the first (sorted) voiceover option
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;
return item;