PageSourceSearch

https://api.nb-channel.top/api/docs

html nb-channel.top collected 2026-10-06 13:15:40 UTC 8,168 bytes, 169 lines download raw bytes

1<!DOCTYPE html>
2<html lang="zh-CN">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<title>NB频道 市值 API 文档</title>
7<style>
8body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;max-width:860px;margin:0 auto;padding:24px 16px;line-height:1.7;background:#f7f8fa;color:#222}
9h1{border-bottom:2px solid #00a1d6;padding-bottom:8px}
10h2{margin-top:32px;color:#00a1d6;border-left:4px solid #00a1d6;padding-left:10px}
11code,pre{background:#eef1f5;border-radius:6px;font-size:0.9em}
12code{padding:2px 6px}
13pre{padding:12px 14px;overflow-x:auto}
14table{border-collapse:collapse;width:100%;margin:12px 0}
15th,td{border:1px solid #d5dae0;padding:8px 10px;text-align:left;font-size:0.92em}
16th{background:#e9eef4}
17.ep{background:#fff;border:1px solid #e1e6ec;border-radius:10px;padding:14px 16px;margin:14px 0}
18.badge{display:inline-block;background:#00a1d6;color:#fff;border-radius:4px;padding:1px 8px;font-size:0.8em;margin-right:6px}
19.badge.g{background:#28a745}
20.footer{margin-top:40px;color:#888;font-size:0.85em;text-align:center}
21</style>
22</head>
23<body>
24<h1>📈 NB频道 虚拟股票市值 API</h1>
25<p>只读接口,数据与网站前端实时一致。Base URL:<code>https://nbchannel.pythonanywhere.com</code> 或 <code>https://api.nb-channel.top</code></p>
26
27<div style="background:#fff8e1;border:1px solid #ffe08a;border-radius:10px;padding:14px 16px;margin:16px 0">
28<b>⚠️ 2026-09-25 起,主要接口需要 API Key</b><br>
29<code>/api/market</code>(含子路径与导出)、<code>/api/comments</code>、<code>/api/stats</code>
30需要带 <code>X-API-Key</code> 请求头,否则返回 <code>401 UNAUTHORIZED</code>。<br>
31<b>申请:</b>邮件 <a href="mailto:[email protected]">[email protected]</a>
32或站内评论区 @NB频道官方,说明用途与大致调用频率。<br>
33<b>用法:</b>
34<pre>curl -H "X-API-Key: 你申请到的Key" "https://api.nb-channel.top/api/market"</pre>
35请用请求头而不是 <code>?key=</code> 参数(URL 会进日志与 referrer),也不要把 Key 提交到公开仓库。<br>
36<code>/api/bili-fans</code> 与 <code>/api/docs</code> 仍然完全公开,不需要 Key。
37</div>
38
39<h2>统一响应结构</h2>
40<p>成功:<code>{"success": true, "code": "OK", ...数据字段}</code>;失败:<code>{"success": false, "code": "错误码", "message": "说明"}</code></p>
41<table>
42<tr><th>错误码</th><th>HTTP</th><th>含义</th></tr>
43<tr><td><code>OK</code></td><td>200</td><td>成功</td></tr>
44<tr><td><code>UNAUTHORIZED</code></td><td>401</td><td>API Key 缺失或错误(请带 <code>X-API-Key</code> 请求头)</td></tr>
45<tr><td><code>RATE_LIMITED</code></td><td>429</td><td>请求过于频繁(每 IP 每分钟 60 次)</td></tr>
46<tr><td><code>NOT_FOUND</code></td><td>404</td><td>公司不存在</td></tr>
47<tr><td><code>INVALID_PARAM</code></td><td>400</td><td>参数不合法</td></tr>
48<tr><td><code>DB_ERROR</code></td><td>500</td><td>后端数据库异常</td></tr>
49</table>
50
51<h2>接口列表</h2>
52
53<div class="ep">
54<span class="badge">GET</span><code>/api/market</code> — 全市场快照
55<p>参数:<code>name</code>(可选,按公司名模糊查询,最多50家)</p>
56<pre>curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/market"
57curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/market?name=NB"</pre>
58</div>
59
60<div class="ep">
61<span class="badge">GET</span><code>/api/market/&lt;company_id&gt;</code> — 单家公司市值
62<pre>curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/market/1"</pre>
63</div>
64
65<div class="ep">
66<span class="badge">GET</span><code>/api/market/&lt;company_id&gt;/history</code> — 历史K线(市值走势点)
67<p>参数:<code>days</code>(可选,默认 7,范围 1~30)</p>
68<pre>curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/market/1/history?days=7"</pre>
69</div>
70
71<div class="ep">
72<span class="badge">GET</span><code>/api/market/export?format=csv</code> — 全市场快照导出(CSV 文件下载)
73<pre>
73curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/market/export?format=csv" -o market.csv</pre>
74</div>
75
76<div class="ep">
77<span class="badge">GET</span><code>/api/comments</code> — 最新评论(只读)
78<p>参数:<code>page</code>(默认 1)、<code>limit</code>(默认 20,最大 50)、<code>page_path</code>(可选,按页面筛选,如 comments-beta.html)</p>
79<p>响应含 <code>total</code>(总评论数)与 <code>page_count</code>(总页数,按当前 limit 计算)</p>
80<pre>curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/comments?page=1&limit=20"
81curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/comments?page_path=comments-beta.html"</pre>
82</div>
83
84<div class="ep">
85<span class="badge">GET</span><code>/api/stats</code> — API 用量统计(当日请求数/端点分布/限流次数)
86<pre>curl -H "X-API-Key: 你的Key" "https://api.nb-channel.top/api/stats"</pre>
87</div>
88
89<div class="ep">
90<span class="badge">GET</span><code>/api/docs</code> — 本文档
91</div>
92
93<h2>响应示例(全市场)</h2>
94<pre>{
95  "success": true,
96  "code": "OK",
97  "as_of": "2026-08-19T12:00:00+00:00",
98  "total_market_value": 1234567,
99  "count": 54,
100  "companies": [
101    {"id": 1, "name": "NB频道", "market_value": 148467, "owner": "NB搞事局"}
102  ]
103}</pre>
104
105<h2>响应示例(历史K线)</h2>
106<pre>{
107  "success": true,
108  "code": "OK",
109  "as_of": "2026-08-19T12:00:00+00:00",
110  "company_id": 1,
111  "name": "NB频道",
112  "days": 7,
113  "points_count": 900,
114  "points": [
115    {"t": "2026-08-19T03:55:00+00:00", "v": 148467}
116  ]
117}</pre>
118
119<h2>代码示例</h2>
120<p>完整 SDK 示例见仓库 <code>api-sdk/</code> 目录(<code>python_example.py</code> / <code>js_example.js</code>)。</p>
121
122<div class="ep">
123<span class="badge">Python</span> requests
124<pre>from python_example import NBMarket
125
126nb = NBMarket()   # 或 NBMarket(base_url="https://nbchannel.pythonanywhere.com")
127
128market = nb.market()                       # 全市场
129print(market["total_market_value"])
130print(nb.market(name="NB"))                # 按名模糊查询
131print(nb.market_by_id(3))                  # 单公司
132print(nb.history(3, days=7))               # 历史K线
133comments = nb.comments(page=1, limit=10)   # 评论(含 total / page_count)
134print(comments["total"], comments["page_count"])</pre>
135</div>
136
137<div class="ep">
138<span class="badge">JavaScript</span> fetch(浏览器 / Node)
139<pre>// 浏览器:&lt;script src="js_example.js"&gt; 后直接用 window.NBMarket
140const market = await NBMarket.market();
141console.log(market.total_market_value);
142
143const one = await NBMarket.marketById(3);
144const kline = await NBMarket.history(3, 7);
145
146const comments = await NBMarket.comments(1, 10);
147console.log('共', comments.total, '条,', comments.page_count, '页');</pre>
148</div>
149
150<h2>字段说明</h2>
151<table>
152<tr><th>字段</th><th>说明</th></tr>
153<tr><td><code>as_of</code></td><td>数据生成时间(UTC ISO8601),调用方可判断数据新旧</td></tr>
154<tr><td><code>market_value</code></td><td>公司当前市值(NB币)</td></tr>
155<tr><td><code>t / v</code></td><td>K线采样时间 / 该时刻市值</td></tr>
156<tr><td><code>owner</code></td><td>公司归属用户名</td></tr>
157</table>
158
159<h2>限制与说明</h2>
160<ul>
161<li>限流:每 IP 每分钟最多 60 次,响应头 <code>X-RateLimit-Limit</code> / <code>X-RateLimit-Remaining</code> 可查剩余</li>
162<li>数据只读,请勿用于批量爬取;如需更高额度可联系站长</li>
163<li>别名:<code>/api/virtual-market-value</code>、<code>/api/Virtual market value</code> 与 <code>/api/market</code> 等价</li>
164</ul>
165
166<div class="footer">© 2026 NB频道 · 如有问题请联系 [email protected]</div>
167<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"2694d6c1b70c42ee8414dc6303584599","r":1,"spa":2}' crossorigin="anonymous"></script>
167
168</body>
169</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.