mirror of
https://github.com/jackwener/OpenCLI.git
synced 2026-09-14 18:25:42 +08:00
df8ca8d440
* feat(xianyu): search 支持服务端价格区间 / 地区筛选(--min-price/--max-price/--province/--city)
闲鱼 search 之前只有 query + limit。本次改成直接调 goofish 自己的搜索接口
`mtop.taobao.idlemtopsearch.pc.search`(沿用 item.js 里 window.lib.mtop.request
的用法,签名由页面自带,无需手搓),把价格区间和地区交给服务端筛选 + 分页,
而不是抓一屏 DOM 再在本地过滤。
筛选编码是在登录态浏览器里 hook window.lib.mtop.request、实际操作筛选面板抓到
真实请求后逆出来的,并逐条用接口返回 + 详情接口 publishCity 做了 ground-truth 校验:
- --min-price / --max-price → propValueStr.searchFilter = "priceRange:<min>,<max>;"
(元;单边区间用 0 / 99999999 兜底)。实测 priceRange:100000,150000 返回价格
全部落在 112999–149900。
- --province / --city → extraFilterValue = JSON({divisionList:[{province,city}],
excludeMultiPlacesSellers:"0",extraDivision:""})。city 可单独使用(province 留空)。
实测「广东」「北京」结果集完全不相交;--city 深圳 / 湛江 的结果用详情接口校验
publishCity 全部命中。
- 任一筛选生效时 fromFilter=true。limit 最多 60,按需翻页(rowsPerPage=30)。
返回字段改为结构化解析(item_id / title / price / location / want / url),
鉴权与风控错误处理沿用 item.js 的成熟逻辑(AuthRequired / Empty / mtop-not-ready)。
已在登录态浏览器里真跑验证(深圳+10–20万、湛江、无筛选基线均正确),
clis/xianyu 45 个单测全绿,tsc --noEmit 通过,cli-manifest.json 同步重建。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(xianyu): harden search filter result handling
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: jackwener <jakevingoo@gmail.com>