みずぴー日記

人間の再起動ボタンはハワイのビーチにある

RSS

RSSリーダーの利用を再開した。RSSフィードを提供していないサイトも多いので、AWS Lambdaでスクレイピングした上で生成している。

f:id:mzp:20201204192744p:plain

AWS Lambdaによるスクレイピング

RSSリーダーが取得しに来たときに、対象サイトのサイトをスクレイピングRSSフィードの生成をすればいいので、AWS Lambdaを利用している。そのままでは辛かったので、Serverless Frameworkを使っている。

おおまかにいって

  1. node-fetchで対象サイトを取得
  2. jsdomでコンテンツを取得
  3. rssRSSフィードを生成

という流れになる。

まとめるとこんな感じ。

import fetch from 'node-fetch'
import { JSDOM } from 'jsdom'
import RSS from 'rss'

export default async (event, _context) => {
    const feed = new RSS({
        title: 'ジャンプ+読切シリーズ',
        site_url: 'https://shonenjumpplus.com/series/oneshot',
    })

    const response = await fetch('https://shonenjumpplus.com/series/oneshot')
    const body = await response.text()
    const dom = new JSDOM(body)

    const items = Array.from(
        dom.window.document.querySelectorAll('.series-list-item'),
        (item) => {
            const url = item.querySelector('a[href]').attributes['href'].value
            const title = item.querySelector('.series-list-title').textContent
            return {
                url,
                title,
                description: item.innerHTML,
            }
        }
    ).forEach((item) => feed.item(item))

    return {
        headers: { 'Content-Type': 'application/rss+xml' },
        statusCode: 200,
        body: feed.xml(),
    }
}

生成しているRSSフィード

作成中の様子

Plaggerのことを思い出している。

Pixiv Fanboxきびしい。

新着チェックができるようになると、アニメも見る気持ちにもなる。