🖼️ Random Media API

轻量级随机图片和视频服务,支持分类管理、批量获取、热重载,零数据库设计

✨ Go + Gin | 高性能 | 跨域支持
🎬 在线预览页面
💡 数据存储于 ./data/{type}/{size}/{category}.txt 文件(如 ./data/images/pc/nature.txt),每行一个 URL
GET /preview

可视化在线预览界面,支持图片和视频的快速浏览与测试

功能 说明
资源类型切换 支持图片和视频两种类型
分类选择 动态加载并选择分类
随机加载 一键获取随机资源
键盘快捷键 空格/R/N/→ 快速加载新资源
访问地址: http://your-domain.com/preview

使用场景:

  • 快速测试 API 功能
  • 在线浏览图片/视频库
  • 向他人展示服务效果
  • 验证新添加的资源链接

获取随机图片信息,支持指定分类、尺寸和批量获取

参数 类型 说明
category 可选 分类名,留空或 "all" 随机分类
size 可选 尺寸类型(如 pc、phone、square),留空或 "all" 随机尺寸
count 可选 数量 1-20,默认 1
GET /api/random/image?category=wallpaper&size=pc&count=2

响应示例:

{ "success": true, "count": 2, "images": [ { "url": "https://example.com/wallpaper1.jpg", "category": "wallpaper", "size": "pc" }, { "url": "https://example.com/wallpaper2.jpg", "category": "wallpaper", "size": "pc" } ] }
GET /img

302 重定向到随机图片 URL,可直接嵌入 <img> 标签

参数 类型 说明
category 可选 分类名
size 可选 尺寸类型
<img src="/img?category=cat&size=phone" alt="随机图片">

响应:

HTTP/1.1 302 Found Location: https://example.com/cat123.jpg

获取所有已加载的图片分类列表

GET /api/categories/image

响应示例:

{ "categories": [ "cat", "wallpaper", "anime" ], "count": 3 }

获取所有已加载的图片尺寸类型列表

GET /api/sizes/image

响应示例:

{ "sizes": [ "pc", "phone", "square" ], "count": 3 }

获取随机视频信息,支持指定分类、尺寸和批量获取

参数 类型 说明
category 可选 分类名,留空或 "all" 随机分类
size 可选 尺寸类型(如 pc、phone),留空或 "all" 随机尺寸
count 可选 数量 1-20,默认 1
GET /api/random/video?category=movie&size=pc&count=2

响应示例:

{ "success": true, "count": 2, "videos": [ { "url": "https://example.com/video/movie1.mp4", "category": "movie", "size": "pc" }, { "url": "https://example.com/video/movie2.mp4", "category": "movie", "size": "pc" } ] }
GET /video

302 重定向到随机视频 URL,可直接嵌入 <video> 标签

参数 类型 说明
category 可选 分类名
size 可选 尺寸类型
<video src="/video?category=movie&size=phone" controls></video>

响应:

HTTP/1.1 302 Found Location: https://example.com/video/movie123.mp4

获取所有已加载的视频分类列表

GET /api/categories/video

响应示例:

{ "categories": [ "movie", "music", "funny" ], "count": 3 }

获取所有已加载的视频尺寸类型列表

GET /api/sizes/video

响应示例:

{ "sizes": [ "pc", "phone" ], "count": 2 }

获取图片库统计信息,包括分类数量和图片总数

GET /api/stats

响应示例:

{ "success": true, "images": { "categories": 3, "sizes": 2, "total": 250, "details": { "cat": { "pc": 50, "phone": 50 }, "wallpaper": { "pc": 120 }, "anime": { "pc": 30 } } }, "videos": { "categories": 2, "sizes": 1, "total": 50, "details": { "movie": { "pc": 30 }, "music": { "pc": 20 } } } }
GET /health

服务健康检查端点,用于监控和负载均衡

GET /health

响应示例:

{ "status": "ok", "timestamp": "2024-01-01T12:00:00Z" }
POST GET /admin/reload 🔐 需认证

重新加载 data/images 和 data/videos 目录下的数据,无需重启服务。支持 POST 和 GET 两种方式

认证方式 说明
X-Admin-Token 请求头 管理员认证 Token,默认为 your-secret-admin-token
token URL 参数 也可通过 URL 参数传递 Token
# 方式 1: POST 请求 + 请求头 curl -X POST -H "X-Admin-Token: your-secret-admin-token" /admin/reload # 方式 2: GET 请求 + URL 参数 curl /admin/reload?token=your-secret-admin-token

响应示例:

{ "success": true, "message": "图片和视频库已重新加载" }