铺面列表
<p><strong>简要描述:</strong> </p>
<ul>
<li>返回一个谱面列表数组</li>
<li>GET方式 键1键2都可使用,只用一个即可,可混用</li>
<li>POST方式 cmd=beatmaplist</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li>GET <code>https://api.sayobot.cn/beatmaplist</code></li>
<li>POST <code>https://api.sayobot.cn/?post</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
<li>POST </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">键1</th>
<th style="text-align: center;">键2</th>
<th style="text-align: center;">类型</th>
<th style="text-align: left;">默认值</th>
<th style="text-align: left;">描述</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">limit</td>
<td style="text-align: left;">0</td>
<td style="text-align: center;">L</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">25</td>
<td style="text-align: left;">本次请求返回的谱面数量</td>
<td>/</td>
</tr>
<tr>
<td style="text-align: left;">offset</td>
<td style="text-align: left;">1</td>
<td style="text-align: center;">O</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始点,从该点继续获取数据</td>
<td>/</td>
</tr>
<tr>
<td style="text-align: left;">type</td>
<td style="text-align: left;">2</td>
<td style="text-align: center;">T</td>
<td style="text-align: center;">int(GET/POST)<br/>string(POST)</td>
<td style="text-align: left;">1(GET/POST)<br/>hot(POST)</td>
<td style="text-align: left;">分类:<br/>1 = hot<br/>2 = new<br/>3 = packs<br/>4 = search</td>
<td>/</td>
</tr>
<tr>
<td style="text-align: left;">keyword</td>
<td style="text-align: left;">3</td>
<td style="text-align: center;">K</td>
<td style="text-align: center;">string</td>
<td style="text-align: left;">/</td>
<td style="text-align: left;">搜索的关键字</td>
<td>可以是title、tag、艺术家、作图者、难度名、标签、来源</td>
</tr>
<tr>
<td style="text-align: left;">subType</td>
<td style="text-align: left;">4</td>
<td style="text-align: center;">S</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0xffffffff</td>
<td style="text-align: left;">精确匹配:<br/>1 = title/titleU<br/>2 = artist/artistU<br/>4 = creator<br/>8 = version<br/>16 = tags<br/>32 = source</td>
<td>匹配多个的时候直接加起来获得最终数值,如:<br/>仅搜索标题 1=1,<br/>搜索标题和艺术家 1 + 2 = 3<br/>搜索tags和难度名 16+8=24</td>
</tr>
<tr>
<td style="text-align: left;">mode</td>
<td style="text-align: left;">5</td>
<td style="text-align: center;">M</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0xffffffff</td>
<td style="text-align: left;">mode 匹配:<br/>1 = std<br/>2 = taiko<br/>4 = ctb<br/>8 = mania</td>
<td>同上</td>
</tr>
<tr>
<td style="text-align: left;">class</td>
<td style="text-align: left;">6</td>
<td style="text-align: center;">C</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0xffffffff</td>
<td style="text-align: left;">铺面状态:<br/>1 = Ranked & Approved<br/>2 = Qualified<br/>4 = Loved<br/>8 = Pending & WIP<br/>16 = Graveyard</td>
<td>同上</td>
</tr>
<tr>
<td style="text-align: left;">genre</td>
<td style="text-align: left;">7</td>
<td style="text-align: center;">G</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0xffffffff</td>
<td style="text-align: left;">风格:<br/>1 = any<br/>2 = 尚未指定<br/>4 = 电子游戏<br/>8 = 动漫<br/>16 = 摇滚<br/>32 = 流行乐<br/>64 = 其他<br/>128 = 新奇<br/>256 = 嘻哈<br/>512 = 没有512<br/>1024 = 电子</td>
<td>同上</td>
</tr>
<tr>
<td style="text-align: left;">language</td>
<td style="text-align: left;">8</td>
<td style="text-align: center;">E</td>
<td style="text-align: center;">int</td>
<td style="text-align: left;">0xffffffff</td>
<td style="text-align: left;">语言:<br/>1 = any(未分类)<br/>2 = 其他<br/>4 = 英语<br/>8 = 日语<br/>16 = 中文<br/>32 = 器乐<br/>64 = 韩语<br/>128 = 法语<br/>256 = 德语<br/>512 = 瑞典语<br/>1024 = 西班牙语<br/>2048 = 意大利语<br/>4096 = /</td>
<td>同上</td>
</tr>
<tr>
<td style="text-align: left;">other(GET only)</td>
<td style="text-align: left;">9</td>
<td style="text-align: center;">R</td>
<td style="text-align: center;">string</td>
<td style="text-align: left;">/</td>
<td style="text-align: left;">star:0~10,AR:0~10,OD:0~10,CS:0~10,HP:0~10,length:0~999,BPM:0~9999,end</td>
<td>注意!!必须按照这个格式请求,不能缺省,符号为半角</td>
</tr>
<tr>
<td style="text-align: left;">stars(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">ar(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">od(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">cs(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">hp(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">length(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
<tr>
<td style="text-align: left;">bpm(POST only)</td>
<td style="text-align: left;"></td>
<td style="text-align: center;"></td>
<td style="text-align: center;">float Array</td>
<td style="text-align: left;">[0,1000.0]</td>
<td style="text-align: left;">难度范围</td>
<td>左小右大,因为float精度原因建议适当放宽0.1以提高匹配成功率</td>
</tr>
</tbody>
</table>
<p><strong>请求示例</strong></p>
<ul>
<li>GET
<ul>
<li>获取热门20张图 <code>https://api.sayobot.cn/beatmaplist?L=20&O=0&T=1</code> or <code>https://api.sayobot.cn/beatmaplist?0=20&1=0&2=1</code></li>
</ul></li>
<li>POST
<ul>
<li>获取热门20张图
<pre><code>{
"cmd": "beatmaplist",
"type": "hot",
"limit": 20
}</code></pre></li>
<li>搜索歌手kano并筛选难度
<pre><code>{
"cmd": "beatmaplist",
"type": "search",
"limit": 20,
"keyword": "kano",
"class": 7,
"mode": 1,
"subtype": 2,
"stars": [4.0, 7.0]
}</code></pre></li>
</ul></li>
</ul>
<p><strong>返回示例</strong></p>
<pre><code>{
"data": [
{
"approved": 3,
"artist": "Soken Masayoshi",
"artistU": "",
"creator": "kanor",
"favourite_count": 3,
"lastupdate": 1582859628,
"modes": 1,
"order": 10,
"play_count": 180,
"sid": 1097108,
"title": "Sunrise",
"titleU": ""
},
{
"approved": 1,
"artist": "Kami-sama, I have noticed",
"artistU": "",
"creator": "Ryuusei Aika",
"favourite_count": 62,
"lastupdate": 1579421827,
"modes": 1,
"order": 0,
"play_count": 101574,
"sid": 1094943,
"title": "Namae no Nai Ao (TV Size)",
"titleU": ""
}
],
"endid": 25,
"match_artist_results": 1813,
"match_creator_results": 394,
"match_tags_results": 1535,
"match_title_results": 264,
"match_version_results": 239,
"results": 3857,
"status": 0,
"time_cost": 218
}
</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">endid</td>
<td style="text-align: left;">number</td>
<td>下次请求的起始点(offset)。0=请求完毕</td>
</tr>
<tr>
<td style="text-align: left;">time_cost</td>
<td style="text-align: left;">number</td>
<td>搜索耗时(ms)</td>
</tr>
<tr>
<td style="text-align: left;">results</td>
<td style="text-align: left;">number</td>
<td>该关键词匹配的结果总数, match 字段都仅在offset=0的时候出现</td>
</tr>
<tr>
<td style="text-align: left;">match_title_results</td>
<td style="text-align: left;">number</td>
<td>匹配到的标题总数</td>
</tr>
<tr>
<td style="text-align: left;">match_artist_results</td>
<td style="text-align: left;">number</td>
<td>匹配到的作者总数</td>
</tr>
<tr>
<td style="text-align: left;">match_creator_results</td>
<td style="text-align: left;">number</td>
<td>匹配到的创作者总数</td>
</tr>
<tr>
<td style="text-align: left;">match_version_results</td>
<td style="text-align: left;">number</td>
<td>匹配到的难度总数</td>
</tr>
<tr>
<td style="text-align: left;">match_tags_results</td>
<td style="text-align: left;">number</td>
<td>匹配到的标签总数</td>
</tr>
<tr>
<td style="text-align: left;">sid</td>
<td style="text-align: left;">number</td>
<td>铺面集合唯一 id</td>
</tr>
<tr>
<td style="text-align: left;">modes</td>
<td style="text-align: left;">number</td>
<td>模式:<br />1 = osu<br />2 = taiko<br />4 = ctb<br />8 = mania</td>
</tr>
<tr>
<td style="text-align: left;">approved</td>
<td style="text-align: left;">number</td>
<td>Rank 状态:<br />-2 = graveyard<br />-1 = WIP<br />0 = pending<br />1 = ranked<br />2 = approved<br />3 = qualified<br />4 = loved</td>
</tr>
<tr>
<td style="text-align: left;">lastupdate</td>
<td style="text-align: left;">date</td>
<td>最后更新日期</td>
</tr>
<tr>
<td style="text-align: left;">title</td>
<td style="text-align: left;">number</td>
<td>标题</td>
</tr>
<tr>
<td style="text-align: left;">titleU</td>
<td style="text-align: left;">number</td>
<td>标题 Unicode</td>
</tr>
<tr>
<td style="text-align: left;">artist</td>
<td style="text-align: left;">number</td>
<td>艺术家</td>
</tr>
<tr>
<td style="text-align: left;">artistU</td>
<td style="text-align: left;">number</td>
<td>艺术家 Unicode</td>
</tr>
<tr>
<td style="text-align: left;">creator</td>
<td style="text-align: left;">number</td>
<td>作图者</td>
</tr>
<tr>
<td style="text-align: left;">favourite_count</td>
<td style="text-align: left;">number</td>
<td>被收藏的次数</td>
</tr>
<tr>
<td style="text-align: left;">order</td>
<td style="text-align: left;">number</td>
<td>排序标识(热度?)</td>
</tr>
<tr>
<td style="text-align: left;">play_count</td>
<td style="text-align: left;">number</td>
<td>被玩的次数</td>
</tr>
</tbody>
</table>