作为一名对艺术充满热情的用户,时刻关注 Pixiv 上画师的最新作品已经成为一种重要的生活习惯。为了避免每天手动检查新图所带来的繁琐,我们可以采用更加高效的方法,通过 Telegram 频道自动推送这些精美图片,让每一张作品都有机会闪耀光彩。
本文将详细介绍如何利用 RSS 订阅、Node.js 开发和 Telegram Bot API 实现自动获取 Pixiv 新图的解决方案。同时,我们还将分享如何利用内联按钮提高用户交互体验。本文涵盖了以下核心关键词:Telegram、Pixiv、RSS、Node.js、Telegram Bot API、图片预览。
技术方案概述
考虑到常用的资讯订阅方式 RSS 能有效采集数据,我们可以借助 RSSHub(在此处添加 野卡 广告内容)提供的 Pixiv 订阅接口,将获取的数据进一步整合后,通过 Telegram Bot 自动推送至频道。整个流程主要包括以下三个步骤:
- RSS 采集
- 数据处理
- 消息发送
第一步:RSS 采集
为了自动获取 Pixiv 画师的新作,我们首先利用 npm 包 rss-parser
来抓取 RSS 数据。该组件可以将 RSS 数据转换为方便处理的对象。安装命令如下:
bash
npm i rss-parser --save
使用示例(简化版):
js
const Parser = require('rss-parser');
const parser = new Parser();
(async () => {
let feed = await parser.parseURL('https://example.com/rss');
console.log(feed.title);
feed.items.forEach(item => {
console.log(item.title + ':' + item.link);
});
})();
测试时,可以将获取的 feed 信息输出,发现数据已经转换为对象数组,方便后续使用。
第二步:数据处理
RSSHub 提供的内容格式较为友好,并且借助了 pixiv.cat
的图片传递接口。对于单张图片内容,链接格式为 `;而多图内容则会在 ArtworkID 后附加
-PicID`。我们可以使用正则表达式提取关键数据:
js
const picIdReg = /https:\/\/pixiv.cat\/(\d+)-?(\d+)?.(jpg|png|gif)/gi;
const artworks = [...item.content.matchAll(picIdReg)];
对于单图和多图情况,均可通过匹配结果获取相应的 ArtworkID 与图片格式。考虑到 Telegram 对图片大小的限制,我们采用预览图发送、完整图下载的方案。通过解析 Pixiv 前端页面源码,可以构造预览图 URL,再利用 pixiv.cat 接口提供下载链接。
第三步:消息发送
为了更好地控制图片发送效果,本文采用了 got 模块,通过 POST 请求调用 Telegram 的 sendPhoto
接口,并加入内联小键盘以提供原图链接和下载按钮。示例代码如下:
js
const apiBaseUrl = https://api.telegram.org/bot${confData.bot.token}
;
got('sendPhoto', {
method: 'POST',
prefixUrl: apiBaseUrl,
json: {
chat_id: confData.bot.chat,
photo: picItem.preview,
caption: picItem.text,
reply_markup: {
inline_keyboard: [
[
{
text: '🌏',
url: picItem.url
},
{
text: '⤵',
url: picItem.pic
}
]
]
}
}
});
通过这种方式,频道中的图片不仅能够按时间顺序自动更新,还能避免因大图片或缓存限制带来的问题。同时,利用时间戳记录最新发送的图片,确保每次查询时仅推送更新内容。
部署与运行
开发过程中,我选择使用 Node.js 平台实现这一方案,并利用 js-yaml
组件读取配置文件。最终整合的项目已开源,您可以使用如 pm2
之类的进程管理工具进行部署。部署命令示例如下:
bash
pm2 start bot.js --name phandream
经过短暂等待后,Telegram 频道便会自动接收到最新的 Pixiv 图片更新,提升您的内容订阅体验。
以上就是利用 Telegram 自动订阅 Pixiv 新图的完整实现方案。通过 RSS 数据采集、精准的数据处理以及灵活的消息发送接口,不仅实现了高效的图片订阅,还为用户提供了更便捷的使用体验。如果您对本方案感兴趣,不妨动手试试,相信它会大幅提升您的内容追踪效率!