Featured image of post 开源 PHP HTTP API 随机获取 Telegram 频道上的竖屏 ACG 图片

开源 PHP HTTP API 随机获取 Telegram 频道上的竖屏 ACG 图片

一个 PHP 开发的 HTTP API,随机获取一张或多张来自 Telegram 频道 t.me/MikuArt 的适合竖屏移动设备查看的二次元图片,并上传到今日头条的图床,支持 JSON 获取地址或直接跳转

Telegram 的频道原以为是只能通过客户端访问,或者经由 RSSHub 调用的,但发现其实是可以直接用 HTTP 协议调用的。于是就有了这个 API,访问 Telegram 频道 https://t.me/MikuArt 获取图片 URL 后,上传到今日头条的图床,把地址导入 sqlite 数据库文件,再进行后续调用。

之前在网络上也看见过很多类似的 API,都有些缺点:

  • 不开源,服务稳定性未知
  • 图片较少,很多基本不再更新
  • 不对我胃口

所以就自己写了一个,由于调用的是 Telegram 地址,并且可以自行部署,服务稳定性有保障。另外 Telegram 频道@MikuArt 这个频道存在时间很长了,每天都维持着一个很高的更新频率。

其实也不一定要用这个频道的,你可以改代码改成监控另一个 TG 频道,原理都差不多。

本项目在 github 开源:https://github.com/juzeon/mobile-acg/

下面是发表这篇文章时 README.md 的内容,还是点上面的链接到 github 上看最新的 README 吧

使用 API

我提供的 API:https://api.skyju.cc/mobile-acg/api.php

所有图片均为 jpg 格式。

你也可以自己搭建(见下文)。

以 JSON 格式随机获取一张或多张图片的地址

GET 参数 值类型 是否可选 说明
method “json”: String 本接口规定的 method 值
count Int 1-1000 的整数,指定返回图片的个数;不指定则为 1

当请求成功时,返回 JSON 中的data是一个数组对象;否则为错误信息。

示例请求:

1
curl "https://api.skyju.cc/mobile-acg/api.php?method=json&count=2"

示例返回:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "status": true,
    "data": [
        {
            "id": 8152,
            "url": "https://p.pstatp.com/origin/1377b000109dcb474c743"
        },
        {
            "id": 7216,
            "url": "https://p.pstatp.com/origin/1380800010f4d9fd7f254"
        }
    ]
}

随机或指定 ID 获取一张图片并跳转到地址

GET 参数 值类型 是否可选 说明
method “get”: String 本接口规定的 method 值
id Int 图片的 ID;不指定为随机获取

示例请求:

1
curl -v "https://api.skyju.cc/mobile-acg/api.php?method=get"

示例返回:

1
2
3
4
...
HTTP/1.1 302 Found
Location: https://p.pstatp.com/origin/1384d00016e9a0aa34dae
...

示例请求:

1
curl -v "https://api.skyju.cc/mobile-acg/api.php?method=get&id=9876"

示例返回:

1
2
3
4
...
HTTP/1.1 302 Found
Location: https://p.pstatp.com/origin/1384e00040d776e8f2486
...

在 VPS 上部署本项目

1.切换到你的站点目录:

1
cd /path/to/your/www/

2.拉取本项目:

1
git clone https://github.com/juzeon/mobile-acg.git mobile-acg

3.添加 cron 任务每日从 Telegram 更新图片,上传并存储到数据库:

1
0 1 * * * php /path/to/your/www/mobile-acg/update-cli.php # 每日凌晨一点更新

4.访问你的网站相应地址,检查 API 可用性。

Licensed under CC BY-NC-SA 4.0