plugin/nyaa/html结构分析.md
https://nyaa.si/?f=0&c=0_0&q={关键词}
| 参数 | 说明 | 示例值 |
|---|---|---|
q | 搜索关键词 | tomb |
f | 过滤器 (0=无过滤, 1=无重制, 2=仅信任) | 0 |
c | 分类 (0_0=全部, 1_0=动漫, 1_2=英文动漫, 1_3=非英文动漫等) | 0_0 |
s | 排序字段 (id/size/comments/seeders/leechers/downloads) | 可选 |
o | 排序方式 (asc/desc) | 可选 |
搜索结果显示在一个表格中:
<table class="table table-bordered table-hover table-striped torrent-list">
<thead>
<tr>
<th class="hdr-category">Category</th>
<th class="hdr-name">Name</th>
<th class="hdr-comments">Comments</th>
<th class="hdr-link">Link</th>
<th class="hdr-size">Size</th>
<th class="hdr-date">Date</th>
<th class="hdr-seeders">Seeders</th>
<th class="hdr-leechers">Leechers</th>
<th class="hdr-downloads">Downloads</th>
</tr>
</thead>
<tbody>
<!-- 搜索结果行 -->
</tbody>
</table>
每个搜索结果是一个 <tr> 元素,包含以下字段:
<tr class="default"> <!-- class可能是: default, success, danger, warning -->
<!-- 1. 分类 -->
<td>
<a href="/?c=1_3" title="Anime - Non-English-translated">
</a>
</td>
<!-- 2. 标题(跨2列) -->
<td colspan="2">
<a href="/view/2024388" title="[GM-Team][国漫][神墓 第3季][Tomb of Fallen Gods Ⅲ][2025][09][GB][4K HEVC 10Bit]">
[GM-Team][国漫][神墓 第3季][Tomb of Fallen Gods Ⅲ][2025][09][GB][4K HEVC 10Bit]
</a>
</td>
<!-- 3. 下载链接 -->
<td class="text-center">
<a href="/download/2024388.torrent"><i class="fa fa-fw fa-download"></i></a>
<a href="magnet:?xt=urn:btih:e47fcca0f3f1e24b1cc871a07881350faca92636&dn=%5BGM-Team%5D...">
<i class="fa fa-fw fa-magnet"></i>
</a>
</td>
<!-- 4. 文件大小 -->
<td class="text-center">1.1 GiB</td>
<!-- 5. 发布时间 -->
<td class="text-center" data-timestamp="1758941208">2025-09-27 02:46</td>
<!-- 6. 做种数 -->
<td class="text-center">60</td>
<!-- 7. 下载数 -->
<td class="text-center">13</td>
<!-- 8. 完成数 -->
<td class="text-center">286</td>
</tr>
td:nth-child(1) atitle 属性td[colspan="2"] atext() 或 title 属性href 属性 (如 /view/2024388)种子文件: td.text-center a[href^="/download/"]
/download/{ID}.torrenthttps://nyaa.si/download/{ID}.torrent磁力链接: td.text-center a[href^="magnet:"]
magnet:?xt=urn:btih:{HASH}&dn={文件名}&tr={tracker列表}href 属性td.text-center (第4个td)td.text-center[data-timestamp]data-timestamp 属性 (Unix timestamp)td.text-centertd.text-centertd.text-center通过 <tr> 的 class 属性区分资源质量:
| Class | 含义 | 说明 |
|---|---|---|
default | 普通资源 | 灰色背景 |
success | 可信任/已验证资源 | 绿色背景 |
danger | 重制版 | 红色背景 |
warning | 警告/可疑 | 黄色背景 |
magnet:?xt=urn:btih:{INFO_HASH}
&dn={URL编码的文件名}
&tr={tracker1}
&tr={tracker2}
&tr={tracker3}
...
http://nyaa.tracker.wf:7777/announce
udp://open.stealth.si:80/announce
udp://tracker.opentrackr.org:1337/announce
udp://exodus.desync.com:6969/announce
udp://tracker.torrent.eu.org:451/announce
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...")
req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
req.Header.Set("Accept-Language", "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7")
req.Header.Set("Referer", "https://nyaa.si/")
1. 构建搜索URL
↓
2. 发送HTTP请求(带重试)
↓
3. 解析HTML页面 (goquery)
↓
4. 查找表格 table.torrent-list
↓
5. 遍历 tbody > tr 提取信息
↓
6. 提取磁力链接
↓
7. 关键词过滤(插件层)
↓
8. 返回结果
| Nyaa字段 | SearchResult字段 | 说明 |
|---|---|---|
| 标题 | Title | 资源标题 |
| 分类+大小+统计 | Content | 拼接描述信息 |
| 磁力链接 | Links[0].URL | magnet链接 |
| 发布时间 | Datetime | Unix timestamp转换 |
| 分类 | Tags[0] | 资源分类 |
| 做种/下载/完成 | Tags[1-3] | 统计信息 |
| 唯一ID | UniqueID | nyaa-{ID} |
| 频道 | Channel | 空字符串 |
Link{
Type: "magnet", // 固定为magnet
URL: magnetURL, // 完整的磁力链接
Password: "", // 磁力链接无密码
}
MaxIdleConns: 50
MaxIdleConnsPerHost: 20
MaxConnsPerHost: 30
IdleConnTimeout: 90 * time.Second
curl "http://localhost:8888/api/search?kw=神墓&plugins=nyaa"
{
"code": 0,
"message": "success",
"data": {
"results": [
{
"unique_id": "nyaa-2024388",
"title": "[GM-Team][国漫][神墓 第3季][Tomb of Fallen Gods Ⅲ][2025][09][GB][4K HEVC 10Bit]",
"content": "分类: Anime - Non-English-translated | 大小: 1.1 GiB | 做种: 60 | 下载: 13 | 完成: 286",
"datetime": "2025-09-27T02:46:00Z",
"links": [
{
"type": "magnet",
"url": "magnet:?xt=urn:btih:e47fcca0f3f1e24b1cc871a07881350faca92636&dn=...",
"password": ""
}
],
"tags": ["Anime - Non-English-translated", "做种:60", "下载:13", "完成:286"],
"channel": ""
}
]
}
}