fix(ncm): 启动卡顿+大歌单+No tracks 三连修 (agent-209) — ①home/playlist 加载改后台 worker ②大歌单 detail n=1(tracks瘦身)+响应cap 2MB ③song_detail c数组引号转义 ④P0: MIPS32 long=32位歌曲id溢出→int64 ⑤eapi批缓冲2048→4096
ncm→f6bd765a 已部署; 真机验证(风控合规): 小歌单✓ 大歌单256首✓ 启动不卡✓; 已知: 大歌单首屏~30s(二期改分页端点)
This commit is contained in:
1 parent
a651df0e9b
commit
4cec476dd9
16 files changed
+344
-36
No files matched your search
@@ -0,0 +1,51 @@
|
||||
/* verify_fixes.c — 真机复验三修复中“数据层”两项(合并进一次运行,少请求)。
|
||||
* 用与 App 相同的 core 函数:
|
||||
* ① 小歌单(18206253175) detail→song_detail:期望 idn>0 且 song_detail rc=0 bn>0(修空的 c 转义)
|
||||
* ② 大歌单(581857874) detail→song_detail 首批:期望 idn=256(不再 -11 FULL)且 song rc=0 bn=64
|
||||
* 真实请求数:2 (small detail+song) + 2 (big detail+song) = 4。
|
||||
*/
|
||||
#include "ncm.h"
|
||||
#include "ncm_api.h"
|
||||
#include "ncm_common.h"
|
||||
#include "ncm_http.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
static ncm_ctx_t ncm_ctx;
|
||||
|
||||
static void run_chain(const char *pid, const char *label, int expect, int cap)
|
||||
{
|
||||
int64_t ids[256]; int idn = 0;
|
||||
long t0 = (long)ncm_now_ms();
|
||||
int rc = ncm_api_playlist_detail(ncm_ctx.device_id, ncm_ctx.cookie, pid,
|
||||
NULL, 0, NULL, 0, ids, cap, &idn);
|
||||
long dt = (long)ncm_now_ms() - t0;
|
||||
printf("[%s] detail rc=%d elapsed_ms=%ld idn=%d ids[0]=%lld\n", label, rc, dt, idn, idn>0?(long long)ids[0]:-1);
|
||||
ncm_song_t songs[256]; int outn = 0;
|
||||
for (int off = 0; off < idn; off += 64) {
|
||||
int batch = idn - off; if (batch > 64) batch = 64;
|
||||
int bn = 0;
|
||||
t0 = (long)ncm_now_ms();
|
||||
rc = ncm_api_song_detail(ncm_ctx.device_id, ncm_ctx.cookie, &ids[off], batch, &songs[off], 256-off, &bn);
|
||||
printf(" [%s] song off=%d batch=%d rc=%d elapsed_ms=%ld bn=%d\n", label, off, batch, rc, (long)ncm_now_ms()-t0, bn);
|
||||
if (rc != NCM_OK) break;
|
||||
outn += bn;
|
||||
if (bn < batch) break;
|
||||
}
|
||||
printf(" [%s] RESULT song_count=%d (expect~%d)\n", label, outn, expect);
|
||||
if (outn > 0) printf(" [%s] [0] %s / %s\n", label, songs[0].name, songs[0].art_name);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data";
|
||||
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem";
|
||||
ncm_ctx_init(&ncm_ctx, data_dir);
|
||||
printf("device_id=%s cookie_len=%zu\n", ncm_ctx.device_id, strlen(ncm_ctx.cookie));
|
||||
ncm_http_set_verify_default(1, cacert);
|
||||
|
||||
run_chain("18206253175", "small(Docu/1)", 1, 256);
|
||||
run_chain("581857874", "big(5191)", 256, 256);
|
||||
printf("VERIFY DONE\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user