ashareapi-pi 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ashareapi-pi",
3
- "version": "0.2.4",
4
- "description": "ashareapi — A股数据 API 官方 Pi 包:装上即可查 A 股行情 / K线 / 财务 / 资金 / 龙虎榜(32 个端点说明书,开放标准 Agent Skills)。",
3
+ "version": "0.2.6",
4
+ "description": "A股数据 API 官方 Pi 包 —— 装上即可查 A 股行情 / K线 / 财务 / 资金 / 龙虎榜(32 个端点说明书,开放标准 Agent Skills)",
5
5
  "keywords": [
6
6
  "pi-package",
7
7
  "pi",
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: ashareapi
3
- description: 用 ashareapi 获取 A 股数据:行情 / K线 / 财务三表 / 资金流 / 龙虎榜 / 板块 / 可转债 / 因子选股 / 宏观 / 产业链。当用户要查 A 股现价、K线走势、财报(营收净利毛利率)、主力资金、龙虎榜(机构/游资)、涨停、板块轮动、可转债条款(强赎/双低)、ETF、新股打新、指数估值、产业链上下游,或要写调用 A 股数据的代码、接 REST API / 官方 SDK(Python: pip install ashareapi · Node.js: npm install ashareapi)时使用。含 32 个端点的参数与字段语义、单位换算(volume 是手 / amount 是元 / 比率为百分数)、数据日期语义、常见错误与限流处理(匿名 5 次/分,解一次 PoW 挑战提到 60 次/分)。
3
+ description: 用 ashareapi 获取 A 股数据:行情 / K线 / 财务三表 / 资金流 / 龙虎榜 / 板块 / 可转债 / 因子选股 / 宏观 / 产业链。当用户要查 A 股现价、K线走势、财报(营收净利毛利率)、主力资金、龙虎榜(机构/游资)、涨停、板块轮动、可转债条款(强赎/双低)、ETF、新股打新、指数估值、产业链上下游,或要写调用 A 股数据的代码、接 REST API / 官方 SDK(Python:pip install ashareapi · Node.js:npm install ashareapi)时使用。含 32 个端点的参数与字段语义、单位换算(volume 是手 / amount 是元 / 比率为百分数)、数据日期语义、常见错误与限流处理(匿名 5 次/分、单次 250 条、每天 10 万条;解一次 PoW 挑战提到 60 次/分,每日条数不变)。
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.2.4"
7
- updated: "2026-09-30"
6
+ version: "0.2.6"
7
+ updated: "2026-10-03"
8
8
  homepage: "https://ashareapi.com"
9
9
  docs: "https://ashareapi.com/docs"
10
10
  endpoints: "https://ashareapi.com/endpoints"
@@ -124,7 +124,7 @@ Key 从 https://ashareapi.com/pricing 获取。**401 = 没带 Key 调了付费
124
124
  | 现象 | 含义 | 怎么办 |
125
125
  |---|---|---|
126
126
  | **401** | 没带 Key 调了付费端点 | 拿 Key,或改用 5 个免费端点 |
127
- | **429** | 超出档位频率(匿名 5 次/分)| 降频;或**解一次 PoW 挑战提到 60 次/分**(见下);或升级档位 |
127
+ | **429** | 超出限额(匿名:**每分钟次数** 或 **当天条数**)| 次数超 → 降频,或**解一次 PoW 挑战提到 60 次/分**(见下);**条数超 → 解 PoW 无效**,次日恢复,或用 Key |
128
128
  | **`ok:false`** | 上游取数失败(已自动换源)| **不扣次数**,重试一次 |
129
129
  | **200 但 data 为空** | 当前确实没有这类数据(如当天无大宗交易)| 换条件 / 稍后再试,**不是故障** |
130
130
  | **5xx** | 重试耗尽 | 稍后再试 |
@@ -139,6 +139,8 @@ curl "https://api.ashareapi.com/v1/challenge"
139
139
  curl -H "X-PoW: <challenge>.<nonce>" "https://api.ashareapi.com/v1/quote?code=sh600667"
140
140
  ```
141
141
 
142
+ ⚠️ PoW 只提升**每分钟次数**,**不提升每日条数** —— 匿名每天仍最多 **10 万条**;批量补历史/回测请用 Key。
143
+
142
144
  详细错误语义 → 读 `references/errors.md`。
143
145
 
144
146
  ## 七、要写代码?用官方 SDK(Python / Node.js)
@@ -207,7 +209,11 @@ console.log(await paid.screen("", "low_pe", 10, "ROETTM"));
207
209
 
208
210
  ## 九、本 skill 版本
209
211
 
210
- **当前版本:`0.2.4`(2026-09-30)**
212
+ **当前版本:`0.2.6`(2026-10-03)**
213
+
214
+ **本版更新**:
215
+ - **错误与限流**:补充匿名额度口径 —— 单次最多 **250 条**、每天最多 **10 万条**;并区分两种 429(**每分钟次数**超 → 可解一次 PoW 挑战提额;**当天条数**超 → **解 PoW 无效**,次日恢复或用 Key)。
216
+ - **修正 frontmatter 语法**:此前会导致部分客户端读不到技能描述(技能无法被自动识别),现已修正。
211
217
 
212
218
  ### 怎么知道该更新
213
219
 
@@ -17,12 +17,12 @@
17
17
  | 端点 | 参数 | 返回要点 |
18
18
  |---|---|---|
19
19
  | `/v1/quote` | `code*` | 实时行情:`last` 现价 / `open/high/low` / `volume`(手)/ `amount`(元)/ `turnover` 换手率% / `date`。**最新一根 = 当日实时** |
20
- | `/v1/kline` | `code*` · `period`(day/week/month) · `count` | OHLCV 历史 K 线。**只有日/周/月,无分钟级**。价格口径**固定为前复权**(除权除息日不跳空;无 `adjust` 参数)—— **不要再自己复权**(会二次复权)|
20
+ | `/v1/kline` | `code*` · `period`(day/week/month) · `count`(默认 30,最大 **1212**;**匿名最多 250**)| OHLCV 历史 K 线。**只有日/周/月,无分钟级**。价格口径**固定为前复权**(除权除息日不跳空;无 `adjust` 参数)—— **不要再自己复权**(会二次复权)|
21
21
  | `/v1/hot` | `limit`(默认 30,**上限 50**)| 全市场热搜榜(A股/美股/ETF):关注度排名 + 涨跌幅 |
22
22
  | `/v1/market-overview` | `type`(summary/trade/interval/technical/margin/**valuation**/**rotation**) | 大盘画像。`valuation` = 中证全指 PE/PB/PS **历史百分位**;`rotation` = 风格轮动(大小盘/成长价值)。⚠️ `type=updown` 是 **T-1 口径**,涨跌家数请用 `/v1/changedist` |
23
23
  | `/v1/changedist` | 无 | **当期**涨跌家数 / 涨跌停家数 / 停牌 / 成交额 / 区间分布 —— **市场广度推荐入口** |
24
24
  | `/v1/health` | 无 | `data_ready=true` 表示数据通道可用(不含内部实现细节)|
25
- | `/v1/challenge` | `difficulty` | PoW 挑战(匿名提额用)。解 nonce 后带 `X-PoW: <challenge>.<nonce>`,匿名配额 5 → 60 次/分 |
25
+ | `/v1/challenge` | `difficulty` | PoW 挑战(匿名提额用)。解 nonce 后带 `X-PoW: <challenge>.<nonce>`,匿名配额 5 → 60 次/分(**只提每分钟次数,每日条数上限不变**)|
26
26
 
27
27
  ---
28
28
 
@@ -13,7 +13,7 @@
13
13
  | **403** | 禁止 —— 常见于 **IP 维度限制**(一个 Key 被多个 IP 共用,超出该档位允许的 IP 数)| 别把 Key 共享给多人;升级档位 |
14
14
  | **404** | 路径不存在 | 核对端点名(见 `endpoints.md`)|
15
15
  | **422** | 参数错误(缺必填 / 值非法)| 看返回里的说明;常见是缺 `code` |
16
- | **429** | **超出限流** | 降频 · 解 PoW 提额 · 升级档位(见下)|
16
+ | **429** | **超出限流**(两种:每分钟**次数**超 · 当天**条数**超)| 次数超 → 降频 · 解 PoW 提额 · 升级档位;**条数超 → 解 PoW 无效**,次日恢复,或用 Key / 升级档位(见下)|
17
17
  | **5xx** | 服务端/上游异常 | 稍后重试 |
18
18
 
19
19
  ## 二、`ok` 字段(HTTP 200 也要看它)
@@ -42,10 +42,12 @@
42
42
 
43
43
  | 档位 | 额度 |
44
44
  |---|---|
45
- | **匿名**(无 Key)| **5 次/分钟** |
46
- | **匿名 + PoW** | **60 次/分钟** |
45
+ | **匿名**(无 Key)| **5 次/分钟** · 单次最多 **250 条** · 每天最多 **10 万条** |
46
+ | **匿名 + PoW** | **60 次/分钟**(**每日条数上限不变**,仍 10 万条)|
47
47
  | 各付费档 | 见 https://ashareapi.com/pricing(含每分钟与总量限制)|
48
48
 
49
+ ⚠️ 匿名有**两种**上限 —— **每分钟次数** 与 **每天条数**,429 可能是其中任意一种触发;先看返回里的提示是哪种。
50
+
49
51
  **触发时**:返回 **429**。
50
52
 
51
53
  ### 匿名提额:解一次 PoW 挑战
@@ -67,10 +69,12 @@ curl -H "X-PoW: <challenge>.<nonce>" \
67
69
  - 挑战**有有效期**(`expires_in`,通常 600 秒),过期重新取
68
70
  - 挑战可以**预取 + 预解算 + 延后使用**(流水线化,不必每次现解)
69
71
  - **付费 Key 用户不需要 PoW**(额度已够)
72
+ - ⚠️ PoW 只提升**每分钟次数**,**不提升每日条数** —— 匿名每天仍最多 10 万条
70
73
 
71
74
  ### 降频建议(比死磕 429 更实际)
72
75
 
73
76
  - 批量取数时**加 `time.sleep()`**(匿名至少 12 秒/次;PoW 后 1 秒/次)
77
+ - ⚠️ 匿名**每天最多 10 万条** —— 批量补历史/回测请用 Key(一次 1212 条、无日上限)
74
78
  - **本地缓存**:同一标的一天内的行情/财务不必重复取
75
79
  - 需要**高频**就升级档位 —— 比反复解 PoW 省事
76
80
 
@@ -154,7 +154,7 @@ try:
154
154
  df = cli.fund("sh600667")
155
155
  except AuthError as e: # 401/403 → 付费端点缺 Key / IP 维度限制
156
156
  print(e)
157
- except RateLimitError as e: # 429 → 降频 · 解 PoW 提额 · 升级档位
157
+ except RateLimitError as e: # 429 → 降频 · 解 PoW 提额(只提次数)· 升级档位
158
158
  print(e)
159
159
  except UpstreamError as e: # ok:false → 上游失败(已换源、不扣次数)→ 重试一次
160
160
  print(e)