5

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

 3 years ago
source link: https://blog.skyju.cc/post/mobile-acg/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
分享

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

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

Jan 20, 2021   By  居正

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可用性。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK