Commit 251d6f9
authored
feat: 使用 bangumi-data 数据实现季边界映射,优化跨季请求量与准确性 (huangxd-#429)
* feat: 使用 bangumi-data 数据实现季边界映射,优化跨季请求量与准确性
本提交聚焦于跨季扩展的「请求量」与「命中准确性」两项优化,并以请求级 HTTP 缓存统一解决跨季扩展产生的重复请求(全源受益、零源改动)。
一、TMDB 季边界映射(核心能力,新增 tmdb-util.js)
- 新增 buildTmdbSeasonBoundaries / getTmdbSeasonBoundaries,消费 bangumi-data(searchBangumiData)的扁平结果 {matchedSiteKey, siteId},将 TMDB 的季结构映射为本项目的「季序 → 起始集」边界表。
- dandan-api.js 跨季扩展:在启用 Bangumi Data 且能解析到 TMDB 季边界时,由原先「向后逐季顺序扩展(S+1、S+2…)」收敛为「依据 TMDB 边界直接定位目标集所在季」,跳过其间无关季(如要看 S5、中间 S4 无需拉取),降低无效 API 请求量;未启用 Bangumi Data 或边界未解析时,维持上游原版逐季顺序扩展。
上述 TMDB 季边界增强仅在启用 Bangumi Data 且成功解析到边界时生效;否则跨季扩展与顺延均回落到上游原版逻辑。
二、跨季顺延准确性修正
- 跨季顺延的集数扣减:在能解析到 TMDB 边界时按「TMDB 标准总集数 seasonEpisodeTotal」扣减,否则按原版「某季实际拉到的集数 allEps.length(可能偏短或偏长)」扣减,避免中间季集数统计偏差导致收敛到错误季。
- 原 [spillover] 共有…集 日志同步改用 seasonEpisodeTotal 以与扣减一致。
三、请求级 HTTP 响应复用(全源去重,零源改动)
- http-util.js 的 httpGet 新增请求级缓存:同一搜索请求内相同 URL 的重复 GET 直接复用首次响应,不再发网络请求;配套 httpCacheContext 与 runWithHttpCache。
- dandan-api.js 的 searchAnime 用 runWithHttpCache 把整次搜索(主搜索 + 跨季扩展)包进同一请求级缓存上下文。
- 跨季扩展重跑各源 handleAnimes / getEpisodes 时,使用的是与主搜索相同的番剧 id(详情 URL 一致),重复 GET 自动抹平。该机制位于共享 httpGet,对所有约 20 个源自动生效,无需改动任何源文件。
四、改动范围最小化
- 最终仅 3 个文件有分支专属改动:dandan-api.js(跨季扩展逻辑)、tmdb-util.js(季边界映射)、http-util.js(HTTP 缓存)。各源文件(含 dandan.js)经评审已全部回退至上游,未携带任何分支专属改动。
* fix: 修复请求级 HTTP 缓存误杀源级同 URL 重试
请求级 HTTP 缓存(httpCacheContext / runWithHttpCache)对每次成功响应写缓存,读取位于 httpGet 顶部、先于源级重试逻辑。iqiyi 搜索风控(code=-1)与 base_info 异常的源级同 URL 重试重调 httpGet 时命中缓存,复用首次已缓存的失败响应,导致重试被静默吞掉、始终失败。
新增 bypassCache 选项:源级重试显式声明后跳过读/写缓存,刻意重取绕过去重;首次(非重试)调用仍走缓存,跨季扩展的全源去重收益保留。通用请求工具内置的 retries: 重试不受此问题影响(失败尝试不写缓存、循环内重发网络)。本修复仅 iqiyi 有源级同 URL 重试,故根机制(http-util.js)配合其重试接线即覆盖全部受影响源。1 parent 115fae3 commit 251d6f9
4 files changed
Lines changed: 172 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
481 | 481 | | |
482 | 482 | | |
483 | 483 | | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
484 | 492 | | |
485 | 493 | | |
486 | 494 | | |
| |||
492 | 500 | | |
493 | 501 | | |
494 | 502 | | |
| 503 | + | |
495 | 504 | | |
496 | 505 | | |
497 | 506 | | |
| |||
848 | 857 | | |
849 | 858 | | |
850 | 859 | | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
851 | 878 | | |
852 | 879 | | |
853 | 880 | | |
| |||
856 | 883 | | |
857 | 884 | | |
858 | 885 | | |
859 | | - | |
| 886 | + | |
860 | 887 | | |
861 | 888 | | |
862 | 889 | | |
| |||
953 | 980 | | |
954 | 981 | | |
955 | 982 | | |
| 983 | + | |
956 | 984 | | |
957 | 985 | | |
958 | 986 | | |
| |||
1260 | 1288 | | |
1261 | 1289 | | |
1262 | 1290 | | |
| 1291 | + | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
1263 | 1303 | | |
1264 | 1304 | | |
1265 | 1305 | | |
1266 | 1306 | | |
1267 | | - | |
| 1307 | + | |
1268 | 1308 | | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
1269 | 1322 | | |
| 1323 | + | |
| 1324 | + | |
1270 | 1325 | | |
1271 | 1326 | | |
1272 | 1327 | | |
| |||
1293 | 1348 | | |
1294 | 1349 | | |
1295 | 1350 | | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
1296 | 1367 | | |
1297 | 1368 | | |
1298 | 1369 | | |
| |||
1306 | 1377 | | |
1307 | 1378 | | |
1308 | 1379 | | |
1309 | | - | |
1310 | | - | |
| 1380 | + | |
| 1381 | + | |
1311 | 1382 | | |
1312 | 1383 | | |
1313 | 1384 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | | - | |
| 66 | + | |
| 67 | + | |
67 | 68 | | |
68 | 69 | | |
69 | 70 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
79 | | - | |
| 80 | + | |
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
| |||
522 | 523 | | |
523 | 524 | | |
524 | 525 | | |
525 | | - | |
| 526 | + | |
526 | 527 | | |
527 | 528 | | |
528 | 529 | | |
529 | 530 | | |
530 | 531 | | |
531 | | - | |
| 532 | + | |
| 533 | + | |
532 | 534 | | |
533 | 535 | | |
534 | 536 | | |
| |||
542 | 544 | | |
543 | 545 | | |
544 | 546 | | |
545 | | - | |
| 547 | + | |
546 | 548 | | |
547 | 549 | | |
548 | 550 | | |
| |||
972 | 974 | | |
973 | 975 | | |
974 | 976 | | |
| 977 | + | |
975 | 978 | | |
976 | 979 | | |
977 | 980 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
8 | 15 | | |
9 | 16 | | |
10 | 17 | | |
| |||
53 | 60 | | |
54 | 61 | | |
55 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
56 | 73 | | |
57 | 74 | | |
58 | 75 | | |
| |||
205 | 222 | | |
206 | 223 | | |
207 | 224 | | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
208 | 230 | | |
209 | 231 | | |
210 | 232 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
759 | 759 | | |
760 | 760 | | |
761 | 761 | | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
0 commit comments