# 如何使用Telegram订阅Pixiv画师新图 **Published by:** [tadaye](https://paragraph.com/@tadaye/) **Published on:** 2025-01-16 **URL:** https://paragraph.com/@tadaye/telegram-pixiv ## Content 作为一名艺术爱好者,时刻跟进Pixiv画师的最新作品已成为我的日常习惯。然而,每天手动检查更新既费时又麻烦,是否有更高效的方式来推送喜欢的图片,让每一张作品都能及时展示其精彩呢?解决方案:通过Telegram订阅Pixiv新图我回想起常见的资讯订阅方式:RSS。恰巧在RSSHub的文档中找到了一个订阅接口,可以实现Pixiv关注画师的新图推送。不过,单独使用RSS订阅仍然需要一个专门的阅读器,因此我决定将这些信息直接推送到通讯工具中。我曾尝试使用基于IFTTT的方案,将RSSHub生成的内容推送至Telegram频道。然而,IFTTT的使用策略调整使得非付费用户仅能创建三个小程序,这让我决定放弃。 作为开发者,我不想受限于商业平台的限制,便决定自己编写一个类似的处理工具,这不仅能提升我的编程技能,还能增强可定制性。于是,我开始调研各种API接口,计划将RSS获取的数据,通过Bot的API接口,推送至Telegram频道。步骤一:RSS采集首先,我们需要进行RSS的采集工作。为了避免手动解析XML文件的繁琐,我使用了一个现成的组件:rss-parser。这个组件可以轻松获取RSS内容,并将其转换为一个对象,方便后续的处理。npm i rss-parser --save 安装后,传参调用也非常简洁:const Parser = require('rss-parser'); const parser = new Parser(); async function fetchRSS() { const feed = await parser.parseURL('YOUR_RSS_FEED_URL'); console.log(feed); } 测试时,我们可以输出获取的feed信息,结果是一个对象数组。通过这些信息,我们可以提取所需的内容。步骤二:数据处理由于RSSHub是为了方便阅读而设计的,它的内容格式比较适合展示信息,并且采用了pixiv.cat的图片传输接口。获取到的数据中包含了我们所需的所有信息,我们可以通过正则表达式提取出图片的链接。 例如,我们可以使用以下正则表达式来匹配Pixiv的ArtworkID:const picIdReg = /https:\/\/pixiv\.cat\/(\d+)-?(\d+)?\.(jpg|png|gif)/gi; 通过这个正则表达式,我们能够匹配到单张图片和多图内容的链接:const artworks = [...item.content.matchAll(picIdReg)]; 对于单图内容,返回的数据如下:[ "https://pixiv.cat/*ArtworkID*-1.jpg", "*ArtworkID*", "1", "jpg", "https://pixiv.cat/*ArtworkID*-2.jpg", "*ArtworkID*", "2", "jpg"] 接着,我们可以根据这些链接生成预览图和下载地址。步骤三:消息发送为了避免IFTTT方案中图片大小超过限制等问题,我决定为Telegram推送加入请求缓冲队列,并使用预览图来解决大图无法发送的问题。 这次,我选择使用got来直接发送HTTP请求,而不是使用Telegraf框架。根据Telegram的Bot API文档,发送图片的请求如下: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 }] ] } } }); 我们直接调用Telegram的sendPhoto接口,并且为每张图片提供了“原始链接”和“下载链接”的按钮,方便用户直接访问。 为了避免重复发送相同的内容,我还加入了时间戳标记,每次查询时只推送更新的内容。相关工具与项目为了进一步提高使用便捷性,我在Github上发布了完整的代码,项目名为PhanDream,您可以使用pm2等工具进行运行:pm2 start bot.js --name phandream 一旦设置完成,您就能在Telegram频道中看到新的Pixiv作品推送了! ☞ WildCard | 一分钟注册,轻松订阅海外线上服务 使用门槛极低,微信支付宝均可开通使用。支持开通各类海外平台:ChatGPT、Claude、Google Play、Apple Store、OpenAI、X、Patreon、MidJourney、Amazon、POE、Microsoft、Facebook、GitHub、Telegram、PayPal等各类海淘订阅平台。使用邀请码:ACCPAY,立享消费0手续费,减免开卡费用。 https://bit.ly/bewildcard ## Publication Information - [tadaye](https://paragraph.com/@tadaye/): Publication homepage - [All Posts](https://paragraph.com/@tadaye/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@tadaye): Subscribe to updates