HoYoRandom
一个使用 node.js 编写的随机 API:
- 丰富的选项
- API 和资源文件分离,自动更新
- 支持自部署,可以使用你自己的资源(图片、视频、一言)
- 模块化架构,易于扩展
包括原神&崩坏 3 精选图片、音乐、视频以及一言.
喜欢的话麻烦点个Star吧ヾ(≧▽≦\*)o
欢迎贡献!
链接
默认的资源存储在DreamOfIce/HoYoRandomResources
详细文档位于DreamOfIce/HoYoRandom-docs
使用 PHP 编写的旧版本:HoYoRandom-php(不再更新)
TODO
- 一言接口
- 媒体文件接口
- 自部署文档
- 开发文档
- 标签(tag)支持
- 统计系统
-
TypeScript重写
API 端点
我提供的公共 API,服务器位于美国,目前没有速率限制:
本站已启用
HSTS,并加入Preload List,故仅支持 https 调用 https://api.dreamofice.cn/hoyorandom/
接口
支持的参数列表请见参数一节
以下为默认的 API 接口,你可以自行部署不同的接口
图片
- 路径:
/img - 类型:
media - 资源: HoYoRandomResources/img
返回示例:
- Raw
- JSON
{ "category": "ys", "name": "韶光抚月,天下人间", "url": "https://cf.dreamofice.cn/p/HoYoRandom/img/ys/%E9%9F%B6%E5%85%89%E6%8A%9A%E6%9C%88%EF%BC%8C%E5%A4%A9%E4%B8%8B%E4%BA%BA%E9%97%B4.webp" }
音乐
- 路径:
/music - 类型:
media - 资源: HoYoRandomResources/music
返回示例:
- Raw
- JSON
{ "category": "ys", "name": "HOYO-MiX - Ruu's Melody 阿瑠的歌", "url": "https://cf.dreamofice.cn/p/hoyorandom/music/ys/HOYO-MiX%20-%20Ruu's%20Melody%20%E9%98%BF%E7%91%A0%E7%9A%84%E6%AD%8C.mp3" }
视频
- 路径:
/video - 类型:
media - 资源: HoYoRandomResources/video
返回示例:
- Raw
- JSON
{ "category": "ys", "name": "295850674-1-208", "url": "https://cf.dreamofice.cn/p/hoyorandom/video/ys/295850674-1-208.mp4" }
一言
- 路径:
/hitokoto - 类型:
hitokoto - 资源: HoYoRandomResources/hitokoto
返回示例:
- text
烟花易逝,人情长存 - JSON
{ "hitokoto": "愿风神忽悠你", "category": "ys" } - js
document
.querySeletor('#hitokoto')
.innerText(
'你不明白「牺牲是无法避免的」意味着什么,真正可怕的,并不是这个世界夺走了多少人的性命,而是它让多少人对失去生命这件事,习以为常',
);
参数
目前支持三种方式传入参数:
优先级为从上到下递减
URL参数:https://api.dreamofice.cn/hoyorandom/img?c=ys&f=jsonURL路径:路径与参数的对应关系依次为:
/endpoint/${category}/${tag}/${format}/${encoding}/${seletor}>https://api.dreamofice.cn/hoyorandom/img/ys/all/jsonPOST负载(支持application/json和application/x-www-form-urlencoded):{ "category": "ys", "format": "json" }
Media
| 参数名 | 简写 | 默认值 | 合法值 | 描述 | 备注 |
|---|---|---|---|---|---|
| category | c | all |
all & 有效的类型值(ys,bh3)或其组成的数组 |
资源类型,all代指所有 |
|
| tag | t | all |
all & 有效的标签或其组成的数组 |
资源的标签(tag)(开发中) | 输入多个值时随机返回符合任意一个条件的资源 |
| format | f | raw |
raw,json |
返回的格式 | 具体示例参见接口-图片一节的返回示例部分 |
| encoding | e | utf-8 |
任意支持的字符编码 | format=json时,返回文本的编码 |
Hitokoto
| 参数名 | 简写 | 默认值 | 合法值 | 描述 | 备注 |
|---|---|---|---|---|---|
| category | c | all |
all或有效的类型字符串(ys,bh3)或其组成的数组 |
资源类型,all代指所有 |
|
| tag | t | all |
all或有效的标签或其组成的数组 (开发中) |
一言的标签(tag) | 输入多个值时随机返回符合任意一个条件的资源 |
| format | f | json |
js,json,text |
返回的格式 | 具体示例参见接口-一言的返回示例部分部分 |
| encoding | e | utf-8 |
任意支持的字符编码 | 返回文本的编码 | |
| seletor | s | #hitokoto |
format=js时,要插入一言的元素的CSS 选择器 |
常见问题(FAQ)
- 分类(category)和标签(tag)有什么区别?
category是从某一个方面对所有资源进行归类(例如所属的游戏),而tag是一个资源包含的种种特征(例如:是风景画或人物画?是否包含某个角色?是官方还是同人?...).换言之,一个对象只能属于一个分类,但可以拥有多个标签. - 你说的这么好,那标签功能什么时候实装?
在做了,在做了 o((>ω< ))o
License
MIT