Elegy233
|
ef003d7882
|
fix: 修复无法优选 qq 平台匹配 (#409)
PLATFORM_ORDER 优选平台匹配自 PR #167 起改为依据番剧身份(标题 from 段或 source)与目标平台评分。当源身份名与配置平台名不一致、但集上挂有目标平台标签时(如 tencent 源、集标题挂 qq),getPlatformMatchScore(identity, "qq") 得 0,与无交集的 dandan 同为 0 分,平局由 SOURCE_ORDER 决定,导致配置 qq 却选中 dandan 而非 tencent。
现于 matchAniAndEp 评分时,将命中集所挂平台标签并入候选平台(与身份标签去重合并),使 tencent 这类源在集上挂有 qq 时能正确加分。同时 getPlatformMatchScore 预处理支持全角&并去重,修正合并标题重复标签(如 dandan&qiyi&qiyi)抬高杂质长度导致评分失真的问题。该加性改动不影响既有的合并源优选评分(已以 40 例用例验证,含合并源、正常单源、全角&、去重及手动优选绝对优先等场景)。
|
2026-08-01 12:57:26 +08:00 |
|
Elegy233
|
e8f22b621f
|
fix: 跨季扩展按平台满足度过滤源并修复恶性重复请求问题 (#408)
* fix: 跨季扩展按平台满足度过滤源并修复恶性重复请求问题
checkEpisodeSatisfied不再在首个不满足平台处break,改为遍历所有平台
通过新参数unsatisfiedOut记录不满足的平台集合。跨季扩展据此仅处理不满足
平台对应源,已满足者直接跳过不再被牵连重复调用handleAnimes。
跨季执行按源分组并发:源间Promise.all并行,同源内各季顺序执行确保
模块级缓存传播。源处理顺序遵循sourceOrderArr。
titleMatches新增threshold参数(默认0.8),maxSeason传入0.6放宽相似度
阈值使与查询翻译差异较大的结果仍能通过匹配参与季号提取。
* fix: 修复跨季场景下身份平台名与优选平台名不一致时的匹配失效
跨季分支 (PR #408) 的 checkEpisodeSatisfied 与 spillover 评分在判断某源是否为目标平台提供数据时,仅依据番剧身份(标题 from 段或 source),未并入命中集所挂的平台标签。当源身份名与配置平台名不一致、但集上挂有目标平台标签时(如 tencent 源、集标题挂 qq),该源被误判为「目标平台无数据」而跳过,导致配置 qq 却无法命中 tencent 源。
现于两处评分前,将候选平台由「身份标签」扩展为「身份标签与所挂集标签去重合并」(与 matchAniAndEp 的 1421 修复口径一致),使身份名(如 tencent)与优选平台名(如 qq)不一致、但集上挂有该标签的源也能被正确识别。该加性改动不影响既有的合并源优选评分(已以 21 例用例验证,含 tencent/qq 受影响案例与正常单源、身份命中、无平台、去重等不受影响案例)。
* fix: 修复未满足平台集合命名空间错配导致跨季扩展被跳过
问题:checkEpisodeSatisfied 在目标平台未满足时向 unsatisfiedOut 写入规范平台名(tPlat),而跨季扩展源过滤分支以源名(source)查询该集合,命名空间不一致使 PLATFORM_ORDER 模式下跨季扩展被静默整体跳过。
修复:在写入端就近收集提供该平台数据的 anime.source(providedSources),未满足时写入源名而非规范名,复用既有候选平台判定(actualPlatform),无新增映射表;仅当某 tPlat 子遍历确有数据且未满足时才写入对应源名,无关源不会被污染。
验证:新增 cross-season-unsatisfied-test.mjs 覆盖修复前后对比(tencent/qq、iqiyi/qiyi 受影响案例)、常规流程(首季命中/_any_/源名即规范名)与边界(多平台仅未满足源扩展、无关源不污染集合、主返回值契约不变)共 36 项全通过;既有跨季平台匹配测试 21/21 不受影响。
|
2026-08-01 12:56:58 +08:00 |
|
haode
|
f19a5d9c4c
|
feat: bangumi、episode 接口返回数据新增 url 字段 (#403)
* Add files via upload
* Add files via upload
|
2026-08-01 12:55:27 +08:00 |
|
huangxd-
|
13e88bec25
|
优化移动端系统配置操作按钮布局,红果源支持提取并显示短剧年份信息 (#411)
* feat(forward): 优化缓存管理,支持版本控制和分段缓存
- 引入缓存schema版本管理,避免旧版本缓存数据污染
- 添加分段缓存前缀、TTL及空重试最小间隔,提升缓存灵活性
- 使用内存缓存(Map)减少重复存储读取
- 重构getCaches逻辑,增加加载状态标识避免重复初始化
- 抽取parseForwardCacheValue统一解析校验,增强健壮性
- 缓存版本变更时自动清理旧数据,确保数据一致性
* style: 更新lavender主题配色并调整UI主题选项顺序
更新lavender主题样式,采用渐变背景和全新配色方案(蓝紫到粉紫渐变),使界面更鲜明;同时调整UI_THEME环境变量及内部主题列表中lavender的顺序,确保各配置保持一致。
* fix(ui): 优化移动端系统配置操作按钮布局
* feat(hongguo): 支持提取并显示短剧年份信息
- 新增 extractYearFromTimestamp 工具函数,从多种时间戳字段中解析年份
- 在搜索结果和剧集详情中集成年份提取,填充 anime 对象的 year 字段
- 修改 animeTitle 格式,在短剧名称后追加 (年份) 以提升识别度
- 补充 album_info 等备用数据源,增强解析健壮性
- 修复多视频详情接口响应结构兼容性问题,避免数据丢失
|
2026-08-01 12:55:06 +08:00 |
|
Elegy233
|
130e9886f3
|
fix(iqiyi): 优化分季URL请求数,分集异常时自动重试 (#405)
* fix(iqiyi): 分季URL按目标季过滤、跨调用及并发去重并统一标签为小写
旧版 album_episodes 分支对每个分季组的 videos URL 无差别地发起请求并合并到同一结果,产生三类问题:
1. 指定季时仍拉取并合并所有无关季分集(无季过滤);
2. 同一分季在同一次乃至跨多次 getEpisodes 调用中被重复请求(无去重);
3. 跨多次调用并发场景下,多个调用在缓存写入前同时发起同一分季请求(缓存击穿)。
修复方式:
- getEpisodes 新增 querySeason 与 seasonAlbumCache 参数;
- handleAnimes 透传解析出的目标季,并为整个搜索批次创建共享的 album_id 缓存;
- album_episodes 分支按 group.tab_name 用 getExplicitSeasonNumber 解析季号,指定季时跳过非目标季组;
- 以 album_id 为键缓存分季请求本身(而非仅结果):首次请求时立即记录 Promise,并发或后续调用复用同一请求,确保同一分季在一次搜索内最多请求一次;
- 日志标签 [iQiyi] 全量改为小写 [iqiyi],与其他源规范保持一致;
- video_list 内联分支不受影响,未指定季时行为与之前一致(仅减少冗余请求)。
测试 iqiyi.season.test.mjs 覆盖季过滤、单次/跨次/并发去重、内联分支等场景,共 8 例全过。
* fix(iqiyi): getEpisodes 的 base_info 请求失败时限时重试两次
问题:base_info 接口偶发返回空响应或结构残缺(status_code 为 0 但缺失
data.template,典型网络抖动)。原逻辑在 data.status_code !== 0 || !data.data ||
!data.data.template 时直接 return [],而 handleAnimes 仅在分集非空时才收录该
结果,导致一次瞬断会令整个季被静默丢弃,需重跑才能恢复(见老友记4.txt:
一次运行缺第七季,重跑即正常)。
修复:参照本文件搜索接口已有的「延迟重试两次」先例,将 base_info 的 httpGet
与解析封装为 fetchEpisodeData,对空响应、JSON 解析失败、status_code 非 0 或
结构残缺的情况最多重试两次(每次间隔 3 秒);耗尽仍未拿到合法响应才 return []。
首请求即成功时循环条件不满足,行为与之前完全一致。
* 优化(iqiyi): 全季搜索跳过已被内联覆盖的季的分季URL请求
全季搜索(不指定季)时,handleAnimes 先统一拉取各结果的 base_info,收集 album_episodes 中以内联 feature_paged 形式存在的季 entity_id 集合(inlinedAlbumIds)并缓存复用,避免重复请求 base_info;处理各结果时,若某分季组是 URL 桩且其 entity_id 已在内联集合中,跳过其 selector 请求。指定季时预拉取阶段不执行,桩季照常请求以保证指定季一定返回。覆盖判定以季 entity_id 为键,不会误吞衍生内容或错删无关命中数据。
|
2026-07-29 22:39:13 +08:00 |
|
Elegy233
|
436dd63f15
|
perf(ui): 优化日志查看器在大量日志下的渲染与筛选性能 (#404)
- 日志行加 content-visibility:auto,视口外日志跳过布局与绘制,
全量渲染 9000 行时布局成本从数百毫秒降到个位数毫秒
- 分类筛选由整段 innerHTML 销毁重建改为切换 CSS class 显隐,
不再重建日志 DOM
- addLog 仅在日志视图可见时重建 DOM,避免非日志页面产生无谓的全量重建
- 切到日志视图仍每次从服务端加载最新日志,保留原有及时性逻辑
不影响 GET /api/logs 服务端接口;不限制渲染行数,日志完整保留
main.js 保持上游原版未改动
|
2026-07-29 22:38:48 +08:00 |
|
Elegy233
|
825ddc25bb
|
fix: 修复严格匹配下记住手动选择结果功能失效及匹配遍历过早终止 (#401)
* fix: matchAniAndEp 移除对非优先条目的独占过滤,保留评分优先
原代码通过 preferAnimeId 直接 continue 跳过所有不匹配的优先条目,
其意图是确保优先条目被命中。但该过滤存在两个问题:
1. 与 isPreferredAnime 的 +9999 评分加成功能重复——评分已提供
压倒性优先权,独占过滤属于冗余保护。
2. 独占过滤阻止了优先源缺失目标集时的自然回退:其他源被
跳过导致无匹配,需要额外走 fallbackMatchAniAndEp 兜底。
移除独占过滤后,isPreferredAnime 的 +9999 评分加成和匹配后的
break 仍然确保优先条目在正常匹配中绝对优先,同时允许优先源
无目标集时自然回退到其他可用源。
* fix: TITLE_NOISE_FILTER 默认规则增加方括号杂音词支持
默认 TITLE_NOISE_FILTER 仅匹配圆括号内的杂音词(如(日配)、(国配)),
遗漏方括号形式的变种(如[日语版]、[国语版]、[中字])。
tencent 源的标题格式"假面骑士ZZZ[日语版](2025)"中[日语版]未被清理,
导致 titleMatches 在严格匹配下的标题清理不完整。
修复:默认规则扩展为单字符类同时匹配圆括号(中英文)和方括号,
在原有词表基础上新增方括号特供词:日语版、国语版、英语版、中字。
圆括号兼容保持不变。
* fix: 偏好记录流程的titleMatches强制使用非严格匹配,不因STRICT_TITLE_MATCH受影响
titleMatches 在全局 STRICT_TITLE_MATCH 开启时统一走 strictTitleMatch,
但偏好记录(setPreferByAnimeId)场景应始终使用非严格匹配。原因:
1. 用户手动选择某个源的弹幕即表示"我认可这是正确匹配",
不应因标题含[日语版]等形式差异而被拒。
2. strictTitleMatch 限制 suffix 只能为 seasonPattern 中的模式,
而(2025)、[日语版]等源补充标识均不符合,导致有意义的用户选择被丢弃。
3. "记住手动选择结果"强调自由选择权,严格匹配的搜索过滤逻辑不适用于此。
修复:titleMatches 增加 forceNonStrict 参数(默认false,完全向后兼容),
偏好记录流程传入 true,跳过 strictTitleMatch 直接走包含匹配(includes)。
* fix: matchAniAndEp 无平台偏好时 break 应感知 preferAnimeId,防止跳过优先条目
第1435行 if(!platform || isPreferredAnime) break 在 platform 为空时
无条件跳出循环,导致即使 preferAnimeId 指向靠后的条目,
循环也会在第一个匹配条目后终止,优先条目从未被评估。
修复:break 仅在两种场景触发:
1. isPreferredAnime=true — 已命中优先条目,无需继续
2. !platform && !preferAnimeId — 无平台偏好且无优先条目,首个匹配即可
当 preferAnimeId 存在但尚未命中时,继续循环评估后续条目。
|
2026-07-29 22:37:17 +08:00 |
|
Elegy233
|
c9112ee7cf
|
fix(tencent): 支持单 cid 综艺的多季分集获取 (#399)
综艺单 cid 多季内容收在 videoInfo.episodeSites/playSites 的 chapterInfo 下,
tabs 为空时仅取默认季分集,分季内容不完整。
- 按分页 tabs 下发的 page_context 结构重建各季请求参数:chapterInfo 自带的
pageContext 缺少 cid/page_num/req_type 等必填项,服务端忽略并回落默认季;
复用 tabs 路径的字段结构以切到对应季。
- 子分类式章节仅取“正片”子分类(标题为“正片”,作为 chapter_name 发往分页接口),
与 tabs 路径以 chapter_name=正片 标识正片的方式一致,避免引入花絮/直播回放/直拍。
- 按响应 module_params.has_next(字符串或布尔)逐页翻页取全分集;章节内容不按标题过滤,
仅排除 is_trailer=1 的预告片,加更/彩蛋/抢鲜看等章内内容与主集一并保留。
- 多季按标题年份与春夏秋冬播出季序排序后合并,跨季按 vid 去重,单季内按 episode_on_chapter 排序。
|
2026-07-29 22:36:51 +08:00 |
|
Elegy233
|
9d31e85dd1
|
fix: 修复 Bangumi-Data 检索子串混淆与尾部数字误识别为季号,使高达00正确匹配而非高达0079 (#398)
* fix: getTmdbJaOriginalTitle 对 Bangumi-Data 结果按精确度排序,防止子串误匹配
searchBangumiData 按数据文件原始顺序返回匹配结果,未按精确度排序。
当检索词为'机动战士高达00'时,Bangumi-Data 中 '机动战士高达0079'(1979) 和
'机动战士高达00'(2007) 均匹配,但因 0079 在文件中排在前,localMatches[0]
取到 1979 条目,日语原名错误提取为 '機動戦士ガンダム'(非00)。
后果:
- dandan 使用错误的日语原名搜索 episodes 接口 → 匹配到 0079 条目
- bahamut 使用错误的日语原名搜索 → 大量 0079 结果污染匹配列表
修复:取首个结果前按精确匹配排序,将正好与检索词相同标题的条目排在最前。
无精确匹配时维持原始顺序,确保对其他检索词无副作用。
* fix: extractSeasonNumberFromAnimeTitle 对尾部"00"等非法季号返回 null,防止误过滤
extractSeasonNumberFromAnimeTitle 规则4(尾部阿拉伯数字)对如"机动战士高达00"
匹配到"达00"中的"00",parseInt("00")=0 → 返回 season=0。
导致在 handleAnimes 的季号过滤中 s=0≠1 且 s≠null,条目被误过滤。
修复:尾部数字解析为0时返回 {season:null},因为动画领域不存在"第0季"。
|
2026-07-29 22:36:23 +08:00 |
|
Elegy233
|
776531128a
|
fix: 修复跨季集数匹配中多候选毒化、同号集膨胀、季容量虚高与无关源污染 (#397)
* fix: findCrossSeasonEpisodeMap seasonMap 被剧场版/电影条目毒化导致跨季映射实效
当同一季号存在多个候选条目时,!seasonMap.has(sNum) 以先到先得方式保存,
导致集数极少的剧场版(1集)占据 TV 系列应有的季号位置。
如咒术回战 searchData 中死灭回游/怀玉玉折(sNum=1,1集)排在前面,
真正的 S1 TV系列(24集)被跳过,seasonMap S1仅1集使跨季映射崩溃。
修复:比较集数,保留集数更多的候选条目。TV 系列自然覆盖剧场版。
* fix: filterSameEpisodeTitle 增加按集号去重,修复360聚合源多平台同名集膨胀
360 等聚合采集源将多平台同一集合并到单个条目中(如 imgo/youku/qiyi/bilibili 各 24 集
→ 96 links),filterSameEpisodeTitle 仅按标题去重(不同平台前缀不同故不过滤),
导致 checkEpisodeSatisfied 误判集数满足跳过跨季扩展、findEpisodeByNumber 索引映射到错误集、
seasonMap 容量虚高使跨季映射失效。
修复:同名去重后增加按 extractEpisodeNumberFromTitle 的二次去重,
同一集号保留首次出现的平台条目。无合法集号(null)的标题不受影响。
* fix: checkEpisodeSatisfied 跨季容量求和不应包含超过查询季号的后继季
seasonCapacities 的逐季容量在求和判断时原本无条件累加所有季号,
导致别名含"Season 3"的死灭回游(18363)被映射为sNum=3并累计12集后
与S1的24集合计36 ≥ 26,使跨季扩展被抑制。
修复:仅累加 sNum ≤ querySeason 的容量。超过查询季号的后继季
(如S3)在S2缺失时不应独立计入总量,因其实际依赖前序季的解析。
* fix: 跨季扩展 maxSeason 仅从与查询相关的条目提取季号,防止无关结果污染
maxSeason 遍历所有源的原始搜索结果,使用 a.animeTitle || a.title 提取季号。
animeko 结果字段为 name/name_cn(不含 animeTitle/title),单独用时提取不到
季号。但当 renren 同时启用时,其搜索返回的无关条目(标题含高季号但不匹配查询)
被 a.title 捕获,异常推高 maxSeason 触发无效跨季扩展。
修复:字段覆盖 a.animeTitle || a.title || a.name || a.name_cn,使用
titleMatches(testTitle, queryTitle) 过滤,仅从相关条目中提取季号。
* fix: maxSeason 的 titleMatches 添加 forceNonStrict=true,兼容 STRICT_TITLE_MATCH
titleMatches 在全局 STRICT_TITLE_MATCH 开启时统一走 strictTitleMatch。
strictTitleMatch 限制标题后缀仅能为 seasonPattern 中的模式,而源补充的
"(续篇)"、"年番"等标识不符合,导致相关的高季条目被错误过滤。
forceNonStrict=true 跳过严格匹配直接走包含匹配,确保 maxSeason 的宽匹配
语义不被全局严格模式干扰。该参数尚未合并(PR #401),JS 多传实参无副作用。
* fix: maxSeason 不足时仍尝试一次跨季扩展,兼顾关联作品发现机制
某些源(如 dandan)的高季条目经 handleAnimes 内的关联作品发现机制获取,
原始搜索结果中无直接季号标记。当 maxSeason(从原始搜索结果提取的季号)
不大于 querySeason 时,仍尝试至少一次跨季扩展(S+1),确保跨季执行中
触发源的关联作品发现逻辑,避免因原始搜索无高季标记而跳过有效季。
同时修复 maxSeason 的 titleMatches 过滤:字段覆盖 title/name/name_cn,
使用 titleMatches 过滤与查询无关的条目,避免无关源搜索结果的季号污染。
* Revert "fix: maxSeason 不足时仍尝试一次跨季扩展,兼顾关联作品发现机制"
This reverts commit 363ad56c62adfe5fedd229343f4447fc4cd2bad6.
|
2026-07-29 22:36:00 +08:00 |
|
huangxd-
|
370930ddb2
|
feat: 扩展AES支持多密钥长度并重构migu-util,红果支持多API主机故障转移与响应解析优化 (#406)
* feat: 扩展AES支持多密钥长度并重构migu-util
- codec-util: keyExpansion支持16/24/32字节密钥,解密函数动态计算轮数,支持AES-128/192/256
- codec-util: 重命名aesDecryptECB为aesEcbDecrypt并增加输入校验,提升健壮性
- migu-util: 移除大量WASM相关代码及依赖,简化解密逻辑,降低维护成本
- 统一使用标准AES ECB/CBC模式,替代原有WASM网关解密方案
* refactor(aes): 拆分密钥扩展与解密,为红果 X-Argus 固定 AES-128 路径
- 将原通用的 keyExpansion 和 aesDecryptBlock 明确为 AES-128 专用实现,并新增 keyExpansionForKeySize 和 aesDecryptBlockForKeySize 以支持 192/256 位密钥
- aesEcbDecrypt 现根据密钥长度选择对应实现,保持对外接口不变
- 原因:红果 X-Argus 依赖固定 AES-128 调度路径,拆分后便于维护且避免误用其他密钥长度影响该业务逻辑
* chore: 升级版本至1.20.1并优化密钥扩展注释
- 将全局版本号从1.20.0递增至1.20.1
- 更新`keyExpansion`函数的注释,明确其功能为将16字节密钥扩展为176字节,移除原有冗余描述
- 版本升级旨在反映当前代码状态,注释调整提升代码可读性
* feat(hongguo): 支持多API主机故障转移与响应解析优化
- 将固定 apiHost 扩展为 apiHosts 列表,并引入首选主机与轮换机制,提升请求容错性
- 新增 getApiHosts 方法按优先级返回可用主机,request 方法在主机失败时自动切换重试
- 提取 parseApiResponse 统一处理响应校验与 JSON 解析,增强错误信息可读性
- 移除 MAX_RETRIES 常量,改用主机列表轮询替代简单重试,并标记不可重试的业务错误
- 优化 comment 请求的并发控制与响应检查逻辑,减少无效请求
* fix: 修复模态框打开时页面背景滚动问题
- 新增 CSS 样式,当 modal 打开时锁定 html 和 body 的滚动
- 添加 lockPageScroll / unlockPageScroll 函数,记录滚动位置并在关闭后恢复
- 在编辑环境时调用锁定,关闭模态框时解锁,提升用户体验
|
2026-07-29 22:35:35 +08:00 |
|
huangxd-
|
84d22da9a9
|
docs: 更新项目结构文档,新增若干文件及目录
|
2026-07-27 08:03:05 +08:00 |
|
huangxd-
|
0e93064321
|
fix: 修复环境变量列表中过滤 UI_THEME 后编辑删除索引错乱的问题
在渲染环境变量列表时,过滤掉 UI_THEME 项后,原索引与显示位置不匹配,导致编辑和删除操作错误。现保留原始索引,确保操作指向正确的配置项。
|
2026-07-26 22:01:25 +08:00 |
|
huangxd-
|
22ba6dabd0
|
feat: 将 dan-any 模块提取为独立工具并优化构建流程
- 在 build-forward-widget 中为 dan-any.js 添加解析和加载钩子,将其排除出 widget 捆绑包,仅保留转换功能占位
- 新增 convertDanAny 函数封装所有 dan-any 格式转换逻辑,支持 JSON/XML/Binary 输出
- 重构 danmu-util 中的格式响应函数,移除直接依赖 @dan-uni/dan-any,改为调用本地 convertDanAny
- 清理冗余导入,降低模块耦合,为后续 forward 独立部署做准备
|
2026-07-26 21:53:19 +08:00 |
|
huangxd-
|
089530f7ed
|
chore: 移除 package.json 中的 devEngines 配置
不再强制指定 pnpm 版本,以简化项目管理并避免版本锁定带来的不必要约束。
|
2026-07-26 21:08:34 +08:00 |
|
Elegy233
|
d4d4c9fffa
|
fix: 完善跨季匹配与平台过滤逻辑,修复备用匹配状态及集标题解析 (#392)
* fix: 跨季扩展阻塞与备用匹配 isMatched 状态修复
checkEpisodeSatisfied 指定平台无匹配数据时返回 false:
指定目标平台(如 qiyi)但搜索结果均不匹配该平台时,不再误判为满足。
新增 anyPlatformHadData 标记,无匹配平台时返回 false 以触发跨季扩展。
备用匹配成功后设置 isMatched:
fallbackMatchAniAndEp 成功匹配剧集后 isMatched 未正确置为 true,
导致客户端收到匹配结果但标记为未匹配。
* fix: checkEpisodeSatisfied 优选平台无匹配时回退到不区分平台重查而非直接返回false
当 PLATFORM_ORDER 指定的平台与搜索结果源不匹配时(例如 PLATFORM_ORDER=qiyi 但搜索结果来自 renren),
anyPlatformHadData 为 false,原先直接返回 false 会错误触发跨季扩展(S5~S10)和 spillover 匹配,
造成大量无谓 API 请求。
修复:anyPlatformHadData 为 false 且有 targetPlatform 时,以 targetPlatform=null 递归调用自身,
回退到 _any_ 模式重新查验全部可用数据,再依据集数是否满足决定是否触发扩展。
这同时正确覆盖两种场景:
- 当前季集数不足(如 S1E31 仅 11 集)→ 正确触发扩展
- 当前季集数充足但平台不匹配(如 S4E3 在 renren 有 24 集且含 E3)→ 正确抑制扩展
* fix: matchAniAndEp与findCrossSeasonEpisodeMap中平台不匹配源时回退到无平台过滤
当PLATFORM_ORDER与搜索结果源不匹配时(例如PLATFORM_ORDER=renren但搜到iqiyi结果):
1. matchAniAndEp: findEpisodeByNumber因平台过滤丢弃所有集数返回null后,
新增回退:检查候选源是否匹配指定平台,不匹配则以platform=null重试。
这避免了bestRes为空而错误触发findCrossSeasonEpisodeMap spillover。
2. findCrossSeasonEpisodeMap: 平台不匹配时以currentSeason++ + continue
替代break,允许跨季映射在后续匹配季中继续查找而非直接退出。
保护措施:isPreferredAnime的原有回退逻辑保留作为最后一层兜底。
* fix: extractEpisodeNumberFromTitle 支持第X话和第X回格式
此前仅识别 /第(\d+)集/,导致 dandan 等源使用第31话格式的集标题
无法被提取集号,进而 findEpisodeByNumber 对所有分季 dandan 条目返回 null。
跨季扩展虽然正确拉取了 S3 dandan 条目的 E31(第31话 决裂),但
extractEpisodeNumberFromTitle 无法提取数字 31,导致匹配被跳过,
最终落在能识别第31集的 bahamut 不分季条目上。
修复将正则扩展为 /第(\d+)[集话回]/,同时覆盖:
- 集:标准中文格式(如第31集)
- 话:日式动画格式(如第31话)
- 回:旧式分回格式(如第12回)
不匹配 期/章/卷,避免错配综艺/漫画/OVA分卷格式。
* fix: titleMatches 对无季号标题放宽季数守卫,避免不分季长剧被全部拦截
titleMatches 在 querySeason>1 时原先对无季号标题作 (null||1)!=querySeason
拦截,导致 iqiyi 搜索航海王 S2E62 时全部 16 个结果因标题中无季号被过滤,
searchData 为空,匹配链路崩溃。
修复:仅当源标题明确含季号且与目标季不一致时才拦截,无季号的不分季长剧
交由上游源处理器(如 iqiyi 季数预过滤)决定是否保留。
影响分析:
- 不分季长剧(querySeason>1):修复前被拦截 → 修复后通过 → 正确
- 分季剧S1标题(querySeason=2):修复前拦截 → 修复后仍拦截 → 不变
- 分季剧S2标题(querySeason=2):修复前通过 → 修复后仍通过 → 不变
- 分季剧S3标题(querySeason=2):修复前拦截 → 修复后仍拦截 → 不变
- querySeason=1或null:不受此分支影响,原有行为完全保持
|
2026-07-26 21:04:12 +08:00 |
|
Elegy233
|
f4d6e5781b
|
feat: 合并工具支持标题年份一致时豁免类型标签差异 (#391)
标题与年份完全一致时跳过媒体类型(电视剧/动漫)冲突检测。
RegexStore.Clean 新增 YEAR_DIGITS,用于匹配捕获四位数年份。
年份不同、N/A 或无年份不触发豁免。
|
2026-07-26 21:03:56 +08:00 |
|
 Elegy233andhuangxd-
|
2b34bae417
|
feat: renren 全阶段超时调整与云环境两两接口并行,搜索连通性优化详情 (#390)
超时调整:
- 搜索接口超时 3000ms
- 详情接口超时 3000ms
- 弹幕接口超时 5000ms
- renrenRequest 与 renrenHttpGet 新增可选 timeout、signal 参数
云环境两两并行 + 首成即止(搜索和详情):
- 搜索:WIN 和 TV 并行,MAC 和 WEB 并行。TV 优先于 WIN,MAC 优先于 WEB。
- 详情:WEB 和 TV 并行,MAC 和 WIN 并行。WEB 优先于 TV,MAC 优先于 WIN。
- 主级成功时通过 AbortController 中止次级请求,无数据不触发中止。
- 本地环境保持串行降级逻辑不变。
搜索连通性优化详情:
- 搜索阶段记录各 tier 连通性(ok / timeout / unknown)。
- 详情阶段跳过搜索中已超时的 tier,优先使用已验证工作的 tier。
- 连通性仅在单次搜索到详情的链路内有效,每次搜索入口清零。
- 主级被跳过时,次级工作则采纳,失败时回退主级。
详情优先级调整为 WEB,TV,MAC,WIN。
Co-authored-by: huangxd- <649924757@qq.com>
|
2026-07-26 21:03:40 +08:00 |
|
Elegy233
|
a4256c2885
|
fix: 严格匹配支持剧名杂音清理,改用正则补全数字与英中季号允许关键词 (#389)
strictTitleMatch 入口处先执行 titleNoiseFilter 再 normalizeSpaces,
标题与查询词双端清理后比较,与宽松模式行为一致。
移除 normalizeSpaces 已剥离的无用符号分隔词(空格、括号、冒号等)。
允许关键词检测改用正则 seasonPattern,覆盖阿拉伯数字(新闻女王2)、
罗马数字(无职转生Ⅱ)、英文季号(S1/Season1/Part1)、
中文季号(第一季/第三部)及关键词(年番/合集/部/篇/部分/剧场/完结/最终)。
裸 S/第/Season 无数字后缀不再匹配,部(?!分) 防止裸"部"吞掉"部分"。
|
2026-07-26 21:00:58 +08:00 |
|
Elegy233
|
4c3321ee51
|
fix: 同平台的不同链接弹幕请求串行延迟 1 秒,防止风控 (#388)
当同平台存在多个不同链接时(链接合并的多 URL、合并源
的多配音版本等),改为串行执行,每个之间间隔 1 秒,
防止短时间内对同一平台发起多次并发请求触发风控。
不同平台仍保持并行执行,互不影响。
仅影响 fetchMergedComments 中的多链接分支,
常规单源流程不受任何影响。
|
2026-07-26 21:00:45 +08:00 |
|
Elegy233
|
ad60e299bd
|
fix: iqiyi 搜索风控重试间隔从 1.5 秒延长至 3 秒,并优化年份提取 (#387)
* fix: 爱奇艺搜索风控重试间隔从 1.5 秒延长至 3 秒
用户反馈遇到风控时当前 1.5 秒间隔不足以通过,等待一会后又可正常访问。
推测爱奇艺风控冷却窗口约 3-5 秒,延长至 3 秒以覆盖更多场景。
* fix: 爱奇艺搜索意图聚合卡片支持从 superscript 角标获取年份
搜索接口 homePageV3 返回的意图聚合卡片(template 112)不含 year 字段,
年份实际存放在角标字段 superscript(如 "1999"),导致航海王等内容年份恒为 null。
在原有 year.value || year.name 回退链末尾追加 superscript 兜底,使其在普通结果卡片
与意图聚合卡片下均能正确提取 4 位年份。
|
2026-07-26 21:00:20 +08:00 |
|
Elegy233
|
a18a7b5174
|
fix: 合并合集探测分离 3D/2D 维度,防止误判断合并 (#386)
getContentCategory 对 2D 动漫和 3D 动漫均返回 ANIME,
导致同 baseTitle 的 3D 番进入与 2D 番同一合集探测组。
如 tencent 择天记(2020)【动漫】(2D,61集) 与 iqiyi
择天记(2026)【3D动漫】(3D,26集) 被误分到同一组而产生错误合并。
合集探测分组 key 中加入维度标记(3D/2D/-),使 3D 与 2D
番剧互不进入同一探测组,合集探测各查各的。
|
2026-07-26 21:00:07 +08:00 |
|
Elegy233
|
d3d15567a1
|
fix: 修复集连播场景可能导致集偏移记录错误 (#383)
* fix: 集偏移记录加 3 分钟 TTL 防止 lastSearch.episode 过期
lastSearch 仅在 Match/Search 时更新。用户顺播下一集时不刷新,
导致 Comment 记录错误偏移(如 E21 时搜索,20 分钟后顺播 E24
仍以 E21 为基准记录 "21:第24集")。
加 3 分钟时间窗口:Match 后 3 分钟内的 Comment 才记录偏移。
- 手动纠正:Match 后立即纠正,3 分钟内生效
- 顺播过期:超过 3 分钟自动跳过,不产生错误偏移
3 分钟与默认搜索结果缓存时间一致。
* Refine comments on lastSearch handling and TTL
Updated comments for clarity regarding lastSearch behavior and TTL handling.
|
2026-07-26 20:59:51 +08:00 |
|
Rinne
|
57e693f3d5
|
feat: 支持更多类型的弹幕输出 (#382)
* feat: 添加基于 @dan-uni/dan-any 的多弹幕格式输出支持,并优化弹幕数据格式化响应
* feat: 更新 README 关于支持多种弹幕格式输出的内容,并添加环境变量配置选项
|
2026-07-26 20:59:36 +08:00 |
|
 Elegy233andhuangxd-
|
a8147a9811
|
fix: 日志标签分层、UI渲染性能优化、全项目标签统一小写 (#380)
标签分层: [Utils] 全项目归入 [system],减少不必要分类层级
性能优化: getLogCategory 预计算为 _category 字段,
renderLogs/updateFilterUI 直接读取,5k行场景正则在10000+→0次
裸标签补全: [Path Check]/[Path Fix] → [system] [Path ...];
Bangumi-Data 直调 fetch 的 [请求模拟] 补 [system] 前缀
标签统一: 源文件 log() 中的大写标签([Server]/[Animeko]/
[Bilibili]/[Bilibili-Proxy]/[Tencent] 等40+种)统一为小写
Co-authored-by: huangxd- <649924757@qq.com>
|
2026-07-26 20:59:19 +08:00 |
|
huangxd-
|
3a6b5340a0
|
改用opencc-js处理繁简转换 (#395)
* refactor: 优化构建脚本并改用opencc-js处理繁简转换
- 重构 `build-forward-widget.js` 中的行删除逻辑,改用 split/filter 按片段匹配,避免单行大字典导致正则回溯或内存问题
- 增加 `esbuild.stop()` 确保构建进程正常退出,将 `process.exit(1)` 改为 `process.exitCode = 1` 以允许清理
- 将 `zh-util.js` 中硬编码的繁简映射替换为 `opencc-js` 库,大幅精简代码并提高转换准确性和可维护性
* refactor(utils): 更新 opencc-js 转换器初始化方式
改用 ConverterFactory 并显式导入字典文件,避免使用已弃用的 Converter 构造函数,确保与最新 opencc-js API 兼容。
|
2026-07-26 20:56:45 +08:00 |
|
huangxd-
|
c4d2951eb5
|
新增红果短剧源 (#394)
* feat: 新增红果短剧源支持
- 在 README 和配置示例中添加红果短剧(hongguo)源,扩展弹幕获取来源
- 更新 SOURCE_ORDER、PLATFORM_ORDER、MERGE_SOURCE_PAIRS 等配置项的可选值
- 新增 hongguo.js 源文件,完善项目文档和目录结构说明
* fix: 支持通过红果播放链接获取弹幕
* feat: 添加红果短剧全集合并选项,支持按集号顺序合并所有集弹幕
- 新增环境变量 `HONGGUO_MERGE_ALL_EPISODES`,默认为 false,启用后将红果短剧所有集的弹幕按剧集顺序合并为一集返回,每集弹幕时间累加前面各集时长,剧集列表显示为“全集”
- 修改缓存键生成逻辑,当启用合并时在缓存键后追加标识,避免与未合并缓存冲突
- 新增 `parseHongguoSeriesId`、`isHongguoSeriesId` 等工具函数用于识别红果系列 ID
- 更新 README 和 `.env.example` 文档说明新配置项
* test: 增强 forward-widget 测试流程的健壮性与剧集匹配逻辑
- 注释掉 storage 模拟中的调试日志,减少测试输出干扰
- 增加进程退出码设置,测试失败时正确返回非零状态
- 新增搜索结果为空时的异常抛出,避免后续空引用
- 优化剧集选择:优先按集数精确匹配,回退到数组索引,增加匹配失败提示
- 新增弹幕分片选择:优先选择包含 450 秒左右的分片,否则取中间时间点
- 增加对分片列表和弹幕列表为空时的异常检查,确保链路完整性
- 调整输出日志,明确显示所选剧集、分片和请求时间点,便于调试
* test: 更新 forward-widget 测试用例参数
- 调整测试数据中的 episode、sourceOrder 和 title 值
- 新增 hongguoMergeAllEpisodes 配置项用于测试
- 更新测试场景以覆盖新逻辑
* feat(forward): 支持debug构建并添加真机远程日志回传
- 新增 `--debug` 构建参数,生成 `logvar-danmu.debug.js` 供真机调试使用
- debug 版本将 `httpGet/httpPost` 替换为带日志回传的调试实现
- 实时回传 handler 执行、请求详情、耗时、异常及 console 输出到服务端终端和 `/api/logs`
- 敏感信息(Cookie、token、API key)在回传前自动脱敏,且回传失败不影响主流程
- 更新 README,补充 Forward 真机调试步骤和使用说明
|
2026-07-26 20:56:32 +08:00 |
|
huangxd-
|
1bb163e77d
|
feat: 添加环境变量配置导入导出功能以及管理界面主题配置UI_THEME (#393)
* feat: 添加环境变量配置导入导出功能
- 新增 exportSystemConfig 函数,支持将当前环境变量配置导出为 JSON 文件
- 新增 import 相关函数,支持选择并导入配置文件,自动校验键名格式与值类型
- 导入时按优先级排序(TOKEN、ADMIN_TOKEN 等),避免权限提前失效
- 处理脱敏值(全星号)跳过导入并给出明确提示
* feat: 添加管理界面主题配置UI_THEME
增加UI_THEME环境变量,支持ocean、forest、graphite、berry、monochrome、sunset、aurora、lavender、mist、terminal共10种主题,默认值为ocean。在系统API中解析并应用该配置,使管理界面可根据用户偏好切换视觉风格,提升使用体验。
* 更换导入导出配置的图标
* chore: bump version to 1.20.0
* feat(ui): 支持浏览器本地保存主题偏好,优化主题切换错误处理
- 新增 localStorage 存储用户主题选择,优先于环境变量 UI_THEME 与部署默认值
- 主题切换时同时保存本地偏好,云端保存失败时降级为本地生效并给出友好提示
- 更新 README 中 UI_THEME 说明,明确浏览器本地主题优先于环境变量
- 重构主题相关函数,提升可维护性
|
2026-07-26 20:56:09 +08:00 |
|
huangxd-
|
ce8b3cbddf
|
feat: 为ForwardWidget构建添加运行时兼容插件,并重构解压工具函数 (#376)
- 新增 forwardRuntimeCompatPlugin 插件,处理 node:async_hooks 的浏览器兼容实现,并重定向 brotli 字典文件至浏览器版本,确保 ForwardWidget 在浏览器类运行时环境中正常运行
- 将 iQiyi 源中的 Brotli 解压逻辑迁移至 codec-util 的 decompressBrotli 通用函数,统一使用 utf8BytesToString 替代 TextDecoder,提升代码复用性和可维护性
- 此举旨在减少构建产物中的 Node.js 内置模块依赖,并集中管理解码工具,便于后续扩展
|
2026-07-18 08:08:12 +08:00 |
|
lilixu3
|
64f885c98d
|
fix: 芒果TV搜索API改用新版v2接口+seqId签名 (#374)
* fix: 芒果TV搜索API改用新版v2接口+seqId签名
旧版 /msite/search/v2 已返回403,改用 /aphone/search/rebirth/v2
新增 seqId=md5(deviceId + "." + timestamp) 签名
适配新版响应格式 mediaRebirthV2
* 使用纯JS md5替代Node crypto模块以兼容fw播放器
|
2026-07-17 07:27:47 +08:00 |
|
Elegy233
|
50e84818e3
|
feat: 链接解析支持空格分隔多链接合并弹幕、时间偏移、Bahamut/Animeko 链接解析 (#373)
* feat: 链接解析支持空格多链接合并弹幕、时间偏移、Bahamut/Animeko 链接解析
多链接合并: 空格分隔 → MERGE_DELIMITER → fetchMergedComments
时间偏移: 尾缀 @-50/@100(秒数) @%30/@%-11(百分比)
B站短链: 合并与单链接均 resolve b23.tv
b23.tv: 搜索平台识别补充
Bahamut: ani.gamer.com.tw/animeVideo.php?sn=49943
Animeko: bgm.tv/ep/1701422,复用健康度节点路由
多链接标题: 逐链接获取后以全角 & 拼接
* feat: Animeko 链接解析支持 Bangumi 全域名及反代
bgm.tv / bangumi.tv / chii.in / bangumi.lol 四域名
域名检测用单行 .test(),ID 提取用单捕获组内联正则
|
2026-07-17 07:27:19 +08:00 |
|
Elegy233
|
bcb80ffa66
|
fix: 爱奇艺电影 share_url 短链接时回退 entity_id,decode 无效时原始 tvid 重试 (#372)
share_url 部分已变为 qy.net 短链接,旧正则 v_(\w+)\.html 无法
匹配。share_url/page_url 提取失败时使用 qipuId(entity_id) 作为
视频ID。decode API 将 entity_id 错误转换为无效 tvid 时,
用原始 tvid 直接请求 baseinfo。
|
2026-07-17 07:26:44 +08:00 |
|
huangxd-
|
28873bdb2a
|
chore: bump version to 1.19.16
|
2026-07-17 07:25:49 +08:00 |
|
huangxd-
|
0c2063b008
|
修复query可能是null的问题
|
2026-07-14 23:54:26 +08:00 |
|
Elegy233
|
a40fd61671
|
fix: DANMU_OFFSET 解析与匹配含 / 剧名的两个问题 (#371)
1. parseOffsetRules 无条件按 / 分割,含 / 剧名解析错误
2. resolveOffsetRule 严格相等比较,normalizeSpaces 抹掉斜杠
导致规则 anime 与实际 baseTitle 无法匹配
修复: 正则解析 /,对决两边做 normalizeSpaces 归一比较
|
2026-07-14 22:29:52 +08:00 |
|
Elegy233
|
3345ed190a
|
feat: 增加剧名杂音清理规则配置项,清理搜索与匹配阶段的剧名杂音词 (#368)
* feat: 增加剧名杂音清理规则配置项,清理搜索与匹配阶段的剧名杂音词
括号内画质/配音/版本等杂音词(如臻彩、高清、国配)阻塞
搜索和标题匹配。清洗分两层:
1. 搜索输入阶段:searchAnime 获取用户关键词后即清理再提交源站
2. 标题匹配阶段:titleMatches 对源标题和查询词双端清理后再比较
新增 TITLE_NOISE_FILTER 环境变量,值为正则表达式。
默认规则使用字符类 [((]...[))] 同时匹配中英文括号。
不设置时使用默认规则,设为空可禁用。
* fix: 限制剧集匹配中直播一词正则,避免误伤正常标题
EPISODE_TITLE_FILTER 中直播(陪看|回顾)? 匹配裸"直播"
导致"昭演女高 直播欺师"被误过滤。去掉了 ? 和裸直播
匹配分支,仅保留直播陪看、直播回顾等明确杂音后缀。
同时更新 .env.example 与 README 默认值。
* fix: matchAnime 标题未做杂音清理,导致含杂音词文件名匹配失败
matchAnime 提取标题后未清理画质/配音等杂音词,直接传入
matchAniAndEp 和 matchSeason 做 includes 匹配。
杂音词经 normalizeSpaces 去括号后内容残留,阻塞匹配。
在 TITLE_MAPPING_TABLE 和繁转简之后插入噪音清理,
所有下游函数自动受益。searchAnime 保持独立的搜索词清理。
|
2026-07-14 22:29:15 +08:00 |
|
Elegy233
|
2163d7b5f4
|
fix(merge): 零偏移奖励门槛从 4 对降为 1 对,修复新番"炒翻天"合并错误 (#364)
ZERO_DIFF_BONUS 原需 >3 对零差才能触发 100 分奖励,
导致单集断层场景仅 E1 一对零差无法拿到加成,
被无断层惩罚的批量偏移对以数量优势压制,选错偏移方向。
任意零差对集出现即表明集号一致,门槛降为 >0。
|
2026-07-14 22:26:56 +08:00 |
|
Wo254992
|
6ad5a2d5bb
|
Fix(hanjutv): 修复韩剧TV搜索候选错配并提升结果稳定性 (#367)
* 优化韩剧TV暖身恢复与结果顺序
暖身仅在成功后记录身份,失败后允许下一次搜索重试,并保持并发请求共享同一暖身任务。
详情请求继续全部并行,完成后按候选顺序写入结果与缓存,同时保留单候选异常隔离;最小回归测试并入worker.test.js,版本升级至1.19.15。
* 修复韩剧TV搜索候选跨季错配
S5与极速版候选仅在NFKC与首尾空白规范化后的剧名完全一致时合并,删除双向模糊标题和季号叠加判断。
同名多条目使用播放模式、发布年份、集数和分类唯一消歧;仍有歧义时保持独立,最小回归测试并入worker.test.js。
* 修复韩剧TV同名候选配对与年份解析
将S5与TV同名候选改为双向唯一最佳匹配,保留无年份一对一合并并消除返回顺序导致的错配。
修正秒、毫秒、字符串时间戳和紧凑日期的年份解析,补充歧义、顺序不变与旧年份回归测试。
|
2026-07-14 22:26:01 +08:00 |
|
Elegy233
|
617ae3b230
|
fix(iqiyi): 搜索接口风控时延迟重试,并输出原始响应辅助排障 (#360)
爱奇艺搜索接口在快速连续请求时可能返回 code=-1 的
风控响应,此前被直接判为无结果并返回空列表。
将 HTTP 请求封装为 doSearch 闭包,风控时等待 1.5 秒
后重试,最多重试两次。搜索无结果及风控失败时输出
原始响应数据,便于人工识别风控 vs 真实无结果。
|
2026-07-04 22:06:39 +08:00 |
|
Elegy233
|
0bcb0aace6
|
fix(titleMatches): 查询词含季号时追加去季变体,防止无季标题被误过滤 (#359)
查询词含季号(如"间谍过家家 第一季")时,源返回的标题
可能不含季标记(如"间谍过家家(N/A)【动漫】"),策略2
包含匹配因"第一季"三字不存在而失败,退至策略3相似度又
因季后缀降低匹配率,最终被误过滤。
将去季后的干净查询词(使用 merge-util INFO_STRONG 标准
季正则)加入候选池,季校验前提作为闸门防止跨季误匹配。
|
2026-07-04 22:06:00 +08:00 |
|
Elegy233
|
8eccc3dfbc
|
chore: 消除与已有工具函数重复的内联实现 (#358)
dandan-api.js:
- getComment 中手动 match / replace【】提取平台标识,
改为使用已导入的 extractEpisodeTitle
iqiyi.js:
- 删除私有 _base64ToUint8Array 方法,
改为使用 codec-util.js 的 base64ToBytes
|
2026-07-04 22:05:27 +08:00 |
|
Elegy233
|
6c236dcb71
|
fix(merge): 中文数字季号正则支持超过十的数字 (#357)
RegexStore.Season.CN 字符类缺少 + 量词,导致 第十三季
等超过十的中文季号只匹配首字 十,与 第十五季 等一同
被误规范为 第10季,引发错误合并。
正则追加 + 量词支持多字符中文数字,
cnNums 查表替换为 convertChineseNumber 处理任意长度。
|
2026-07-04 22:03:07 +08:00 |
|
huangxd-
|
6a90bc015b
|
更新小版本号
|
2026-07-04 22:02:30 +08:00 |
|
Elegy233
|
b5123c25c1
|
fix(animeko): 更新内置镜像站域名 (#354)
原镜像站域名遭遇 TLS 阻断导致请求失败,更换为新域名。
bangumi.one → bangumi.lol
详见:https://bgm.tv/group/topic/462456
|
2026-06-28 08:14:18 +08:00 |
|
Elegy233
|
808db83cf4
|
fix(renren): 请求超时设为 5 秒并移除重试 (#347)
各端 HTTP 请求均显式传入 timeout: 5000 替代全局 VOD_REQUEST_TIMEOUT,
确保被屏蔽的非大陆 IP 在 Netlify/Vercel 等平台快速失败而非累积超时。
renrenHttpGet / renrenRequest 移除 retries: 1,
被 ban 的 IP 重试无意义反而倍乘等待时间。
|
2026-06-28 08:13:31 +08:00 |
|
huangxd-
|
f4cb1d1664
|
Merge branch 'main' of github.com:huangxd-/danmu_api
|
2026-06-28 08:12:38 +08:00 |
|
huangxd-
|
869ac36948
|
非admin token下,请求记录从「只脱敏 IP」扩展到「同时脱敏接口查询值和请求体值」
|
2026-06-28 08:12:29 +08:00 |
|
Elegy233
|
69fe600cfa
|
fix(bilibili): 搜索结果分集优先按 index_title 排序,无法提取时退回 ep_id (#352)
部分番剧的 ep_id 为倒序排列,导致集号错乱。
改为优先从 index_title 提取集号升序排列,
任一集无法提取时整组退回 ep_id 排序。
|
2026-06-20 13:35:06 +08:00 |
|
Elegy233
|
1d98d3fcea
|
fix: 修复跨季集数顺延映射污染偏好记录 (#350)
fallbackMatchAniAndEp 通过 isSpillover 标记区分跨季顺延
结果,matchAnime 据此跳过 setLastSearch,避免 spillover
匹配的无关番剧经过 getComment 路径污染 lastSelectMap 偏好。
|
2026-06-20 13:34:18 +08:00 |
|
Elegy233
|
2230a9dcc3
|
feat: Bangumi-Data 命中日志追加检索词 (#348)
在 Bahamut/Animeko/Bilibili/Dandan/TMDB 的 Bangumi-Data
本地命中日志末尾追加(检索词:xxx),方便排查时
关联搜索关键词与命中结果。
|
2026-06-20 13:33:33 +08:00 |
|