---
name: tinyshare-tushare-proxy
description: >-
  Calls Chinese A-share and index data through a tinyshare-compatible HTTP proxy
  that mirrors Tushare Pro APIs. Covers Python via tinyshare SDK, raw HTTP
  (curl/requests), and stock tushare with overridden token and base URL. Use when
  the user mentions tinyshare、自建 tushare 接口、tushare 代理、115.159.100.200、
  pro_api、daily/index_daily, or migrating from tushare token to 授权码.
---

# Tinyshare / Tushare 自建代理

三种等价接入方式，任选其一。**授权码**由服务商发放，等同于该环境下的 API token；**勿**把授权码写进仓库，用环境变量或本地密钥文件。

**代理基址（示例）**：`http://115.159.100.200:8080/api/tushare`  
若文档或配置里更新了地址，以实际发货说明为准。

---

## 方式 A：tinyshare SDK（推荐，与 tushare 用法几乎一致）

**环境**：Python 3.8+

1. 安装：`pip install tinyshare --upgrade`
2. 将 `import tushare as ts` 改为 `import tinyshare as ts`
3. 用 **tinyshare 授权码** 替代原 tushare 官方 token

```python
import os
import tinyshare as ts

ts.set_token(os.environ["TINYSHARE_TOKEN"])  # 或从安全存储读取
pro = ts.pro_api()
df = pro.daily(
    ts_code="600519.SH",
    start_date="20260204",
    end_date="20260211",
)
print(df)
```

要点：`pro.xxx(...)` 的方法名与参数与 Tushare Pro 文档一致（如 `daily`、`index_daily`、`stock_basic` 等）。

---

## 方式 B：HTTP POST（任意语言 / curl）

- **URL**：`{代理基址}`，完整示例即 `http://115.159.100.200:8080/api/tushare`
- **Header**：`Content-Type: application/json`
- **Body**：JSON，字段为 `api_name`（对应 Tushare Pro 接口名）、`token`（授权码）、`params`（该接口文档中的参数字典）

```bash
curl --location 'http://115.159.100.200:8080/api/tushare' \
  --header 'Content-Type: application/json' \
  --data-binary '{
    "api_name": "index_daily",
    "token": "YOUR_AUTH_CODE",
    "params": {
      "ts_code": "399300.SZ",
      "start_date": "20250721",
      "end_date": "20250729"
    }
  }'
```

智能体实现脚本时：用 `requests.post(url, json={...})` 即可；`api_name` / `params` 查阅 [Tushare Pro 文档](https://tushare.pro/document/2) 对应接口。

---

## 方式 C：官方 `tushare` 包 + 改 token 与 HTTP 基址

在不安装 tinyshare、仍使用 `import tushare as ts` 时，在创建 `pro_api` 之后覆盖内部属性，使请求发往自建网关并使用授权码：

```python
import os
import tushare as ts

pro = ts.pro_api()
pro._DataApi__token = os.environ["TINYSHARE_TOKEN"]
pro._DataApi__http_url = "http://115.159.100.200:8080/api/tushare"
```

**注意**：依赖 tushare 内部属性名，升级 `tushare` 大版本后若失效，改用方式 A 或 B。

---

## 智能体操作清单

1. **确认接口**：用户要查的字段决定 `api_name` 与 `params`（与日频、指数、基本面相关时优先对照 Tushare 文档）。
2. **凭证**：从环境变量（如 `TINYSHARE_TOKEN`）或用户提供的安全配置读取，不在代码或 PR 中硬编码。
3. **选路**：新项目优先方式 A；仅一次调用或无私钥文件时用方式 B；存量 tushare 代码最小改动用方式 C。
4. **错误排查**：检查 `token`、日期格式 `YYYYMMDD`、`ts_code` 后缀（`.SH` / `.SZ` 等）、以及代理 URL 是否与服务商说明一致。

---

## 与「调用方式」的对应关系

| 需求摘要                                                  | 本 skill 章节 |
| --------------------------------------------------------- | ------------- |
| `pip install tinyshare`，`import tinyshare as ts`，授权码 | 方式 A        |
| curl + `api_name` / `token` / `params`                    | 方式 B        |
| `_DataApi__token` + `_DataApi__http_url`                  | 方式 C        |
