Back
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是一个数组对象;否则为错误信息。

示例请求:

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

示例返回:

{
    "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;不指定为随机获取

示例请求:

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

示例返回:

...
HTTP/1.1 302 Found
Location: https://p.pstatp.com/origin/1384d00016e9a0aa34dae
...

示例请求:

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

示例返回:

...
HTTP/1.1 302 Found
Location: https://p.pstatp.com/origin/1384e00040d776e8f2486
...

在VPS上部署本项目

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

cd /path/to/your/www/

2.拉取本项目:

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

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

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

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

Licensed under CC BY-NC-SA 4.0
-1