見出し画像

TypeScriptでrss-parserを使ってnoteの記事取得

実現したいこと

noteから記事を取得して、JavaScriptのオブジェクトに変換する

実現方法

rss-parserというnpmのライブラリを使用して
noteのRSSから記事を取得し
JavaScriptのオブジェクトに変換する。

では早速やっていきます。

まずはnoteのRSSの中身を確認すると以下のようになっています。

たくさん項目がありますが、取得したい項目は4つです。

title(アカウント名):kamimi01
item.title(記事タイトル):2022/05第1週(5/2-5/8)ふりかえり
item.link(記事のリンク):https://note.com/kamimi01/n/n0d573d5be060
item.description(記事の詳細):<![CDATA[ <h2 name="274101b9-b5a1-4c86-8944-f0b31c4327cc">やったこと</h2><p name="b889f3a6-85bf-4a23-aef6-16a96e90cfb1" id="b889f3a6-85bf-4a23-aef6-16a96e90cfb1">やろうと意識していること、やって嬉しかったことを書きます。</p><br/><a href='https://note.com/kamimi01/n/n0d573d5be060'>続きをみる</a> ]]>

まずこのコードで取得してみます。

実行してみるとわかると思いますが、これだと一部取得できない項目があります。今回の場合、item.descriptionは取得できておらず、undefined となってしまいます。

rss-parserではデフォルトでサポートしているタグとしていないタグがあり、descritionに関してはサポートしていないので、カスタムフィールドとして自分で定義する必要があります。

そのためにコードを以下のように修正します。

ちなみにおそらくデフォルトで定義されていないのは、fields.jsに定義されていないタグだと思われます。

これでめでたく取得したい項目全てを取得することができました!🙌🏻

kamimi01
2022/051週(5/2-5/8)ふりかえり
https://note.com/kamimi01/n/n0d573d5be060
<h2 name="274101b9-b5a1-4c86-8944-f0b31c4327cc">やったこと</h2><p name="b889f3a6-85bf-4a23-aef6-16a96e90cfb1" id="b889f3a6-85bf-4a23-aef6-16a96e90cfb1">やろうと意識していること、やって嬉しかったことを書きます。</p><br/><a href='https://note.com/kamimi01/n/n0d573d5be060'>続きをみる</a>

以上になります。

コード全体はこちら👇🏻に上がっています。

※git周りやるとき間違えちゃって変な構造になってしまいました…気が向いたら直します。

参考

コードを書く上で調べた記事を記録しておきます。

RSSの仕様

今回使用したnoteのRSSは、version2.0のRSSになります。

以下の記事を参考にしました。

いくつか必須の要素というのが存在するみたいですね。👀

おわりに

なぜこれをやろうと思ったかというと、今noteやその他の記事を取得して返すAPIを実装しているからです。

だいぶ前から進めていたのですが、
以前「noteのAPIは個人開発での使用NG(2022/01/09時点)と 分かって悲しくなった話😢」の記事でも書いたように
noteには公式に開発者に提供されているAPIがないので、noteの記事取得方法で詰まってしまってました。

最近不意に「そういえばRSSあるじゃん」と気づいて、今回実践してみた次第です。

これで個人開発がまた進みそうで嬉しいです😊

この記事が気に入ったらサポートをしてみませんか?