Skip to content

DreamOfIce/randomAPI

Repository files navigation

RandomAPI

GitHub commit activity GitHub Repo stars GitHub forks

一个使用 node.js 编写的随机 API:

  • 开箱即用,同时拥有丰富的选项
  • 独立资源存储库,从 Github 自动拉取更新
  • 支持自部署,轻松自定义你自己的资源(图片、视频、一言)
  • 模块化架构,易于扩展

默认的资源(HoYoRandom)包括原神&崩坏 3 精选图片、音乐、视频以及一言.
喜欢的话麻烦点个Star吧ヾ(≧▽≦\*)o 欢迎贡献!

Links

DEMO: 点击进入 默认资源HoYoRandom DreamOfIce/HoYoRandomResources
详细文档位于 DreamOfIce/randomAPI-docs
使用 PHP 编写的旧版本 HoYoRandom-php(不再更新)

TODO

  • 一言接口
  • 媒体文件接口
  • 自部署文档
  • 开发文档
  • 标签(tag)支持
  • 统计系统
  • TypeScript重写(v2.x)

资源存储库

参数

目前支持三种方式传入参数:

优先级为从上到下递减

  • URL参数,如: https://api.dreamofice.cn/hoyorandom/img?c=ys&f=json

  • URL路径:

    路径与参数的对应关系依次为:/endpoint/${category}/${tag}/${format}/${encoding}/${seletor} 如: https://api.dreamofice.cn/hoyorandom/img/ys/all/json

  • POST负载(支持application/jsonapplication/x-www-form-urlencoded):

    { "category": "ys", "format": "json" }

Media 类型

参数名 简写 默认值 合法值 描述 备注
category c all all或有效的类型或其组成的数组 资源类型,all代指所有
tag t all all或有效的标签或其组成的数组 资源的标签(tag)(开发中) 输入多个值时随机返回符合任意一个条件的资源
format f raw raw,json 返回的格式 具体示例参见返回格式-Media
encoding e utf-8 任意支持的字符编码 format=json时,返回文本的编码

Hitokoto 类型

参数名 简写 默认值 合法值 描述 备注
category c all all或有效的类型或其组成的数组 资源类型,all代指所有
tag t all all或有效的标签或其组成的数组 (开发中) 一言的标签(tag) 输入多个值时随机返回符合任意一个条件的资源
format f json js,json,text 返回的格式 具体示例参见返回格式-Hitokoto
encoding e utf-8 任意支持的字符编码 返回文本的编码
seletor s #hitokoto format=js时,要插入一言的元素的CSS 选择器

返回格式

Media

  • raw 直接 302 重定向到对应的资源: raw格式
  • json返回一个 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"
    }

Hitokoto

  • text直接返回文本
    烟花易逝,人情长存
    
  • json 返回一个 JSON:
    {
      "hitokoto": "愿风神忽悠你",
      "category": "ys"
    }
  • js
document.querySeletor('#hitokoto').innerText('你不明白「牺牲是无法避免的」意味着什么,真正可怕的,并不是这个世界夺走了多少人的性命,而是它让多少人对失去生命这件事,习以为常');

HoYoRandom

API 端点

我提供的公共 HoYoRandom API,目前没有速率限制:

此域名已启用HSTS,并加入HSTS Preload List,故仅支持 https 调用 https://api.dreamofice.cn/hoyorandom/

文档

敬请期待

常见问题(FAQ)

  1. 分类(category)和标签(tag)有什么区别?

    category是从某一个方面对所有资源进行归类(例如所属的游戏),而tag是一个资源包含的种种特征(例如:是风景画或人物画?是否包含某个角色?是官方还是同人?...).换言之,一个对象只能属于一个分类,但可以拥有多个标签.

  2. 你说的这么好,那标签功能什么时候实装?

    在做了,在做了 o((>ω< ))o

License

MIT