V1.5.5: 加入源 a.ktv8.my;"所有源失效"改为明确弹窗提示

一、加入歌曲源 a.ktv8.my(置于 gz.ac16.vip 之后)
实测(代理修复后,DNS 直连真实 IP 20~42ms):
- 真实 IP 154.219.102.181 —— 与 w345.my **同一台服务器**(同一后台的兄弟入口);
- GET / → 200(917B,主机面板默认占位页);
- i.php → 200,170B,与其它 5 个入口响应**逐字节一致**:
  code=200 / msg=ok / ordertype=0 / end_date=2026-10-05 14:58:21 / retry=5 / heart_time=5400,token 正常下发;
- 自身媒体路径 /<编号>.ts 与 /ad_files/my_ad_video.ts 均 404(138B,与 e.ac19.cn 的 404 逐字节相同)
  → 它不托管广告媒体;
- ⚠️ do.php 取址行为未能定性: 测试期间本机出口 IP(与门店设备同一个 188.253.112.231)
  的配额被反复探测耗尽,表现为"成功一两次后长时间静默丢包"(与代码里记录的
  trial_times:2 × trial_duration:5 吻合)。故置于次位,由运行时升降序自动调整。
KTV_BRIDGE_API 10 → 11(ktv_api.js 两处标记 + KtvJsBridge 两处校验)。

二、"所有源都取不到地址"给出明确提示
新增 Eac19WindowGuard.onAllFailed ← noteAllSourcesFailed(),由 SongUrlResolver.resolve()
在**本轮彻底失败**时调用(403 / 只返回广告 / 网络异常都算),弹窗文案:
    「远程源已全部失效,等待新版本修复」
- 与既有的 onBlocked(风控 403 → "换公网 IP")常常同时触发,因此在 onBlocked 处理器里
  用 lastAllFailedAt() 做 60 秒去重,不会同时弹两个框;两者均 15 分钟节流。
- 以前这里只有一句"无法生成下载地址"的 toast,用户看起来像界面没反应。

版本 1.5.4(36) → 1.5.5(37);签名证书不变。测试 9 例全通过。
This commit is contained in:
zijunchiang
2026-10-07 07:53:48 +08:00
parent c1fd0fa319
commit 97ca1ae28e
7 changed files with 74 additions and 7 deletions
+5 -2
View File
@@ -12,7 +12,7 @@
(function(global) {
'use strict';
// KTV_BRIDGE_API: 10 (Android 缓存校验标记,请勿删除)
// KTV_BRIDGE_API: 11 (Android 缓存校验标记,请勿删除)
// ─── 配置 ──────────────────────────────────────────
const CONFIG = {
@@ -26,6 +26,9 @@
// 2026-10 实测: 其余入口对每首歌统一返回广告/测试资源时,本入口仍稳定下发真源 CDN 地址,
// 故置于首位;它自己域名下的媒体始终是广告,由 AdVideoFilter 继续拦截。
'http://gz.ac16.vip',
// 与 w345.my 同一台服务器(154.219.102.181)的兄弟入口,登录层正常;
// 取址行为尚未定性 → 置于次位,由运行时自动升降序。
'http://a.ktv8.my',
'http://w.w345.my',
'http://desktok.top',
'http://mm.kk456.top',
@@ -444,7 +447,7 @@
// ─── 导出 ──────────────────────────────────────────
global.KtvApi = KtvApi;
global.KtvApiConfig = CONFIG;
global.KtvBridgeApiVersion = 10;
global.KtvBridgeApiVersion = 11;
if (typeof module !== 'undefined' && module.exports) {
module.exports = {KtvApi: KtvApi, CONFIG: CONFIG};