Cloudflare WorkersでRSS Feedを読み込む方法
Cloudflare WorkersはNode.jsそのものではありません。(2023/04時点) そのため、fsなど一部のAPIが利用できず、npmに公開されているライブラリにもWorkersで動かないものがあります。 […]
広告ここから
広告ここまで
目次
Cloudflare WorkersはNode.jsそのものではありません。(2023/04時点)
そのため、fs
など一部のAPIが利用できず、npmに公開されているライブラリにもWorkersで動かないものがあります。
RSSフィードを読む場合は、htmlparser2
が使えそう
RSSフィードを読む場合、fetch
で取得してからhtmlparser2
でパースする方法が良さそうです。
import { parseFeed } from "htmlparser2";
export default {
async fetch(
controller: ScheduledController,
env: Env,
ctx: ExecutionContext
) {
const response = await fetch('https://qiita.com/motchi0214/feed.atom')
if (!response.ok) {
return new Response(JSON.stringify([]))
}
const htmlString = await response.text()
const feed = parseFeed(htmlString)
if (!feed) {
return new Response(JSON.stringify([]))
}
const items = feed.items.map((data: any) => {
return {
title: data.title,
description: data.content,
datetime: data.isoDate,
href: data.link,
}
})
return new Response(JSON.stringify(items))
},
};
関連: Discordなどに通知する方法について
取得した内容から、新着情報だけDiscordやSlackに通知するケースを下の記事で紹介しています。
https://wp-kyoto.net/create-a-new-discord-bot-to-share-the-connpass-event-information-on-cloudflare/
この場合、「KVを利用して通知ずみの記事データを管理する」「DiscordのWebhook APIを利用して投稿を行う」の2点を追加で実装しましょう。