Skip to content

一个基于Github仓库和Cloudflare Workers简单快捷的纯白嫖随机图片接口实现

License

Notifications You must be signed in to change notification settings

Cheshire-Nya/easy-random-image-api

Repository files navigation

easy-random-img-api

简介

一个基于Github仓库和Cloudflare Workers的简单快捷可分类图片的全免费纯白嫖随机图片接口实现

(写着玩,屎山,别喷我,叠甲,叠甲,叠甲,叠甲,叠甲)

演示

https://demo2.randomimg.sfacg.ltd主页

https://demo2.randomimg.sfacg.ltd/api

https://demo2.randomimg.sfacg.ltd/api?cat=示例图

https://demo2.randomimg.sfacg.ltd/api?cat=demoimg&id=8没有对应资源返回状态码404和404.html

https://demo2.randomimg.sfacg.ltd/api?cat=demoimg&cat=示例图多分类抽取

https://demo2.randomimg.sfacg.ltd/api?cat=demoimg&id=4查看demoimg下的4.jpg

https://demo2.randomimg.sfacg.ltd/api?type=json默认分类抽取并返回json

https://demo2.randomimg.sfacg.ltd/api?cat=demoimg&id=2&type=json指定demoimg下的2.jpg返回json

https://demo2.randomimg.sfacg.ltd/api?cat=demoimg&type=302以302返回跳转到随机一张图的准确地址,供网页使用

PS:cloudflare提供的workers.dev域名在大陆无法正常解析,所以演示站是添加的自定义域名

部署和使用

Github随便新建个公开仓库,图片按1.jpg,2.jpg,3.jpg这样重命名后分类存到文件夹里,不分文件夹就只能设置默认文件夹抽取

Cloudflare Worker首页:https://workers.cloudflare.com

注册,登陆,start building,取一个worker子域名,创建服务,保持默认的即可。

进入编辑后复制 worker.js 到左侧代码框,按照代码中的注释和自己的需求修改代码保存并部署

需要修改的变量

必选

  • urlIndex:主页模板的地址

  • url404:404页模板的地址

  • imgHost:图片仓库的地址,通常为此格式https://raw.githubusercontent.com/<github用户名>/<仓库名>/<分支名>

  • defaultPath:当访问的url为https://example.com/api时抽取图片的文件夹,你可以当成默认分类

  • maxValues:用来抽图的文件夹名称和对应的图片数,以键值对形式存储,格式为'<名称>': <数量>defaultPath以及对应数量应写为/<名称>: <数量>

可选

  • redirectProxy:返回类型为302时图片使用的代理,默认为2

    0不使用代理(返回github原地址)

    1(不推荐)使用worker本身代理(返回https://example.com/api?id=1这样的链接)

    2(推荐)使用ghproxy代理(返回ghproxy.com代理的链接)

    PS:如果302返回使用的是worker代理,那么相当于调用一次请求了worker两次,故不推荐

  • ghproxyUrl:github加速站的链接,ghproxy.com能正常使用就不需要改,更换地址通常按照此格式填写"https://example.com/"(不能漏掉结尾的/

调用参数

可用参数 说明
cat 图片分类
(文件夹名)
在该分类中抽取图片(没有该参数时从默认文件夹抽取)
type 302 通过302返回直接跳转到图片对应的准确地址,可用作随机网页背景等
json 以json格式返回
id <数值> 返回名称为<数值>的指定图片(存在id时不允许type=302)
不使用参数 简简单单抽张图
PS:
  • 从多个分类中抽取应按此格式https://example.com/api?cat=value1&cat=value2

  • json返回包含:分类cat,图片idid,图片github原链接githubUrl,worker代理链接workerUrl,ghproxy代理链接proxyUrl

{
  "category": "示例图",
  "id": 2,
  "githubUrl": "https://raw.githubusercontent.com/Cheshire-Nya/easy-random-image-api/main/示例图/2.jpg",
  "workerUrl": "https://demo2.randomimg.sfacg.ltd/api?id=2&cat=示例图",
  "proxyUrl": "https://ghproxy.com/https://raw.githubusercontent.com/Cheshire-Nya/easy-random-image-api/main/示例图/2.jpg"
}

PS

  • 不知道还有啥问题,如果遇到了可以提issue
  1. cloudflare workers每个账户的免费额度是每天十万次请求,并且有每分钟1000次请求的限制,超出后请求会返回错误。如果不够用,可升级到 $5 的高级版本,每月可用 1000 万次请求(超出部分 $0.5/百万次请求)

  2. cloudflare注册没有花里胡哨的各种认证,门槛极低,有邮箱就能注册。

  3. 理论上可以无限白嫖,多注册几个账号,其他服务调用随机图时多写个逻辑返回错误请求另外的接口即可。唯一的成本无非就是大陆访问需要绑自定义域名,但是域名无论是白嫖免费域名或是一年十几二十块的便宜域名,四舍五入就是没花钱欸嘿。添加自定义域在Cloudflare控制台网站里按指引操作,选择free计划即可。

  4. 错误返回偷懒没完善

  5. 主页和404页没啥卵用,建议用的时候删了

TODO(咕咕咕)

  • 1.支持查看指定图片

  • 2.支持返回json

  • 3.添加一个主页模板

  • 4.添加404模板

  • 5.解决/api?/api/?无法使用

  • 6.解决/api/1.jpg无法使用

  • 7.解决/api/demoimg?无法使用

  • 8.支持返回302到通过ghproxy或worker代理的图片地址,方便web使用不受浏览器缓存影响

  • 9.弃用旧方案改为从url查询参数中获取分类以方便实现多个分类抽取