From 698e035fb14ecbc868cbff20ae14c29822b3d50d Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Fri, 7 Mar 2025 16:51:21 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20=E9=9A=8F=E6=9C=BA=E5=9B=BEAPI=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=8C=87=E5=AE=9A=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++-- functions/random.js | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9ebe8da9..cdb23667 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,9 @@ Add Features: - **目录功能上线啦(感谢[fantasy-ke](https://github.com/fantasy-ke)协助)**,当前支持: - 上传到指定目录 - 整目录删除 - - 文件位置移动 + - 文件位置移动( Telegraph 和旧版 Telegram 渠道不支持移动) - 按目录读取文件 +- 随机图API支持按目录读取 Fix Bugs: @@ -101,6 +102,7 @@ Add Features: - 整目录删除 - 文件位置移动( Telegraph 和旧版 Telegram 渠道不支持移动) - 按目录读取文件 +- 随机图API支持按目录读取 Fix Bugs: @@ -870,7 +872,7 @@ Web端在登录页面输入你的**认证码**即可登录使用;API端需要 | **接口功能** | 从图床中随机返回一张图片的链接(注意会消耗列出次数) | | **前置条件** | 设置`AllowRandom`环境变量,值为`true` | | **请求方法** | GET | -| **请求参数** | **Query参数**:
`content`:返回的文件类型,可选值有`[image, video]`,多个使用`,`分隔,默认为`image`
`type`: 设为`img`时直接返回图片(此时form不生效);设为`url`时返回完整url链接;默认返回随机图的文件路径。
`form`: 设为`text`时直接返回文本,默认返回json格式内容。 | +| **请求参数** | **Query参数**:
`content`:返回的文件类型,可选值有`[image, video]`,多个使用`,`分隔,默认为`image`
`type`: 设为`img`时直接返回图片(此时form不生效);设为`url`时返回完整url链接;默认返回随机图的文件路径。
`form`: 设为`text`时直接返回文本,默认返回json格式内容。
`dir`: 读取目录,使用相对路径,例如`img/test`会返回该目录以及所有子目录下的文件。 | | **响应格式** | 1、当`type`为`img`时:
返回格式为`image/jpeg`
2、当`type`为其他值时:
当`form`不是`text`时,返回JSON格式内容,`data.url`为返回的链接/文件路径。
否则,直接返回链接/文件路径。 | > **请求示例**: diff --git a/functions/random.js b/functions/random.js index 3bebd28b..dd00386b 100644 --- a/functions/random.js +++ b/functions/random.js @@ -37,8 +37,12 @@ export async function onRequest(context) { fileType = fileType.split(','); } + // 读取指定文件夹 + const paramDir = requestUrl.searchParams.get('dir') || ''; + const dir = paramDir.replace(/^\/+/, '').replace(/\/{2,}/g, '/').replace(/\/$/, ''); + // 调用randomFileList接口,读取KV数据库中的所有记录 - let allRecords = await getRandomFileList(env, requestUrl); + let allRecords = await getRandomFileList(env, requestUrl, dir); // 筛选出符合fileType要求的记录 allRecords = allRecords.filter(item => { return fileType.some(type => item.FileType.includes(type)) }); @@ -82,7 +86,7 @@ export async function onRequest(context) { } } -async function getRandomFileList(env, url) { +async function getRandomFileList(env, url, dir) { // 检查缓存中是否有记录,有则直接返回 const cache = caches.default; const cacheRes = await cache.match(`${url.origin}/api/randomFileList`); @@ -95,6 +99,7 @@ async function getRandomFileList(env, url) { do { const records = await env.img_url.list({ + prefix: dir, limit: 1000, cursor, });