修复部分剧自动匹配错误的问题,如狂飙

This commit is contained in:
huangxd- committed 2025-09-22 23:23:54 +08:00
1 parent 8b136c240b
commit 0c3c500e14
2 files changed
+44 -11

No files matched your search

+2
View File
@@ -180,6 +180,8 @@ Settings > Functions > Advanced Setting > Function Region 切换为 Hong Kong,
<img src="https://i.mji.rip/2025/09/14/dbacc0cf9c8a839f16b8960de1f38f11.jpeg" style="width:400px" />
> 注意:小幻在填写API的时候需要在API后面加上`/api/v2`,如`http://192.168.1.7:9321/87654321/api/v2`
>
> 有很多人问FW能不能用,FW推荐直接使用插件,如果非要使用,则可以配合 `https://raw.githubusercontent.com/huangxd-/ForwardWidgets/refs/heads/main/widgets.fwd` 里的`danmu_api`插件使用
## 环境变量列表
| 变量名称 | 描述 |
+42 -11
View File
@@ -1,6 +1,6 @@
// 全局状态(Cloudflare 和 Vercel 都可能重用实例)
// ⚠️ 不是持久化存储,每次冷启动会丢失
const VERSION = "1.1.0";
const VERSION = "1.1.1";
let animes = [];
let episodeIds = [];
let episodeNum = 10001; // 全局变量,用于自增 ID
@@ -2799,20 +2799,51 @@ async function matchAnime(url, req) {
let resAnime;
let resEpisode;
for (const anime of searchData.animes) {
if (anime.animeTitle.includes(title)) {
if (season && episode) {
// 判断剧集
for (const anime of searchData.animes) {
if (anime.animeTitle.includes(title)) {
let originBangumiUrl = new URL(req.url.replace("/match", `bangumi/${anime.bangumiId}`));
const bangumiRes = await getBangumi(originBangumiUrl.pathname);
const bangumiData = await bangumiRes.json();
log("info", "判断剧集", bangumiData);
if (bangumiData.bangumi.episodes.length >= episode) {
// 先判断season
if (matchSeason(anime, title, season)) {
resEpisode = bangumiData.bangumi.episodes[episode-1];
resAnime = anime;
break;
}
}
}
}
} else {
// 判断电影
for (const anime of searchData.animes) {
const animeTitle = anime.animeTitle.split("(")[0].trim();
if (animeTitle === title) {
let originBangumiUrl = new URL(req.url.replace("/match", `bangumi/${anime.bangumiId}`));
const bangumiRes = await getBangumi(originBangumiUrl.pathname);
const bangumiData = await bangumiRes.json();
log("info", bangumiData);
if (bangumiData.bangumi.episodes.length > 0) {
resEpisode = bangumiData.bangumi.episodes[0];
resAnime = anime;
break;
}
}
}
}
// 如果都没有找到则返回第一个
if (!resAnime) {
for (const anime of searchData.animes) {
let originBangumiUrl = new URL(req.url.replace("/match", `bangumi/${anime.bangumiId}`));
const bangumiRes = await getBangumi(originBangumiUrl.pathname);
const bangumiData = await bangumiRes.json();
log("info", bangumiData);
if (season && episode && bangumiData.bangumi.episodes.length >= episode) {
// 先判断season
if (matchSeason(anime, title, season)) {
resEpisode = bangumiData.bangumi.episodes[episode-1];
resAnime = anime;
break;
}
} else if (bangumiData.bangumi.episodes.length > 0) {
if (bangumiData.bangumi.episodes.length > 0) {
resEpisode = bangumiData.bangumi.episodes[0];
resAnime = anime;
break;