V1.5.4: 新增可用源 gz.ac16.vip;修复"点歌失败不入下载列表";下载列表删除按状态区分
一、新增歌曲源 gz.ac16.vip(置于源列表首位) 实测(DoH 取真实 IP 154.222.26.244,绕开本机网关 fake-IP 干扰): - i.php: HTTP 200,下发 token,end_date=2027-10-05(比现用镜像源的 2026-10-05 更晚); - music/do.php: 对 7303235/7200188/8614960 分别返回各自不同的真源地址 (http://txog.ktvsky.com/.../<编号>.ts?token=... / http://download.origjoy.com/.../<编号>.ts?sign=...), 文件名均等于点歌编号; - 这些地址能真实下载:HTTP 206 video/MP2T,逐曲内容各不相同, TS 流同步字节按 188 字节对齐(41/43 包同步); - 对照:其余 7 个入口对每首歌(含不存在的编号)统一返回同一段 https://wb66.cn/f/d/7b7c9/10188555.ts(广告/测试资源),主源 w.w345.my/i.php 直接 403。 因此把 gz.ac16.vip 加入源列表:ktv_api.js 的 CONFIG.HOSTS 与 SongUrlResolver.DEFAULT_HOSTS 各一处(均置于首位)。 ⚠️ 边界:该域名**自己**的 /<编号>.ts 永远是同一段广告,所以它继续留在 AdVideoFilter.AD_HOSTS(媒体层拦截);广告黑名单只作用于"返回地址的 host", 不作用于"取址入口的 host",两者不可混淆,否则会误杀唯一可用源。 KTV_BRIDGE_API 9 → 10(ktv_api.js 两处标记 + KtvJsBridge 两处校验),保证设备热更新到新脚本。 二、修复"点歌失败时歌曲不出现在下载列表" 根因:DownloadTask 只在 onDownloadStart 里创建,所以"取址失败(无法生成下载地址)"这类 还没真正开始下载的失败**不会留下任何记录**,下载列表里什么都没有。 修复:downloadSong() 在**发起下载之前**就登记任务(状态「排队中」), 失败时由既有回调就地改成「失败:原因」,条目保留在列表里,可看原因、可重试、可清理。 三、下载列表删除功能(按状态区分语义) - 有本地文件 → 「删除文件」(confirmDeleteLocalFile,同时清掉下载记录); - 失败/进行中(无文件)→ 「移出下载列表」(confirmRemoveDownloadEntry): 只删记录 + stateDatabase.removeDownload,**绝不动任何歌曲文件** (历史上"顺手清缓存"删光公放曲库的教训见 AGENTS); - 「更多」菜单在下载列表内额外提供「移出列表」; - SongListAdapter 的「更多」图标由装饰改为**可点/可聚焦**(遥控器可达,不再只能长按)。 版本 1.5.3(35) → 1.5.4(36);签名证书不变。测试 9 例全通过。
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
(function(global) {
|
||||
'use strict';
|
||||
|
||||
// KTV_BRIDGE_API: 9 (Android 缓存校验标记,请勿删除)
|
||||
// KTV_BRIDGE_API: 10 (Android 缓存校验标记,请勿删除)
|
||||
|
||||
// ─── 配置 ──────────────────────────────────────────
|
||||
const CONFIG = {
|
||||
@@ -23,6 +23,9 @@
|
||||
VER: '4',
|
||||
// 歌曲源(均为同一后台的多个入口; 运行时按可用性自动排序, 解析失败的源沉底)。
|
||||
HOSTS: [
|
||||
// 2026-10 实测: 其余入口对每首歌统一返回广告/测试资源时,本入口仍稳定下发真源 CDN 地址,
|
||||
// 故置于首位;它自己域名下的媒体始终是广告,由 AdVideoFilter 继续拦截。
|
||||
'http://gz.ac16.vip',
|
||||
'http://w.w345.my',
|
||||
'http://desktok.top',
|
||||
'http://mm.kk456.top',
|
||||
@@ -441,7 +444,7 @@
|
||||
// ─── 导出 ──────────────────────────────────────────
|
||||
global.KtvApi = KtvApi;
|
||||
global.KtvApiConfig = CONFIG;
|
||||
global.KtvBridgeApiVersion = 9;
|
||||
global.KtvBridgeApiVersion = 10;
|
||||
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = {KtvApi: KtvApi, CONFIG: CONFIG};
|
||||
|
||||
Reference in New Issue
Block a user