FileMaker に RSS フィードを取り込む

FileMaker で RSS フィードの情報を取り込んでみることにした。これが実現すれば RSS リーダーのようなものが作れたり、データをあれこれ加工して面白いものが作れそうだ。

環境:
・VMware vSphere Hypervisor 7.0U3g(英語環境)、VMware Photon OS 5.0 の Docker で FileMaker Server 19.6.3.302
・作業マシン:macOS Ventura 13.5(英語環境)

FileMaker に RSS フィードを直接取り込むことはできない。そこで rss2json というサービスを利用し、RSS フィードを JSON データに変換する。JSON データなら FileMaker で扱えるからだ。

RSS to JSON Converter online - rss2json.com
https://rss2json.com/

Available plans - rss2json.com
https://rss2json.com/plans

rss2json は API を使って最新の 10 件のみを JSON に変換するなら会員登録をせず無料で利用できる。ただし無料会員に登録した場合同様、RSS フィードのアップデートは1時間間隔となる。だから1時間に 10 投稿以上があれば取りこぼすことになる。それに実際はアップデートは1時間以上かかっている気がする。登録したほうがちゃんと1時間ごとのアップデートになるのかもしれない。

以降、例として本 note の RSS フィードを取り扱うものとする。本 note の RSS フィードは以下の URL となっている。

https://note.com/hitoshiarakawa/rss

では試しに Mac の Terminal で以下のコマンドを実行してみよう。RSS フィードが JSON に変換できたはずだ。

$ curl -X POST https://api.rss2json.com/v1/api.json?rss_url=https://note.com/hitoshiarakawa/rss

jq コマンドを使えばもっと見やすくなる。

$ curl -X POST https://api.rss2json.com/v1/api.json?rss_url=https://note.com/hitoshiarakawa/rss | jq

会員登録して API key を使う場合は以下のようになる。

$ curl -X POST -d api_key={API KEY} -d rss_url=https://note.com/hitoshiarakawa/rss https://api.rss2json.com/v1/api.json | jq

jq コマンドについては以下を参考にしていただきたい。

さて、変換した JSON データのうち僕は title、pubDate、link、content のデータがほしい。そういうわけで、FileMaker で title、pubDate、link、content というフィールドを作成する。

そして以下のようなスクリプトを作成すれば、最新 10 件のフィードを FileMaker に取り込める。

pubDate で + 32400 としているのは、note の RSS フィードでは投稿時刻が UTC+0 となってしまうため、9時間(=96060=32400 秒)進める必要があるからだ。

定期的にスクリプトを動かせば RSS フィードのデータを取得できる。

重複データの削除は別途、重複削除用スクリプトを動かせばいい。すなわち、今回の場合 link フィールド(=note の個別記事の URL)に対して自己リレーションをを作成し、テーブルオカレンス名を duplicate2_self とした。link 重複チェック用のフィールド duluplicate という計算フィールドを作成。Case ( Count ( duplicate2_self::link ) > 1 ; 1 ; 0 ) という計算式を設定する。そのうえで、以下のスクリプトを実行すればいい。

参考:
curlコマンドでPOSTする, 様々な形式別メモ |
https://weblabo.oscasierra.net/curl-post/

RSSをJSONに変換してくれるWebサービス「rss2json」の紹介 - Qiita
https://qiita.com/920oj/items/9203c8ade378ec3b8eb7

『rss to json』 というサービスを使って RSS フィードを JSON として取得して表示してみよう
https://zenn.dev/rabee/articles/js-fetch-rss-feed-as-json

ID自己リレーションカウントによる重複削除について:Nature and FileMaker:SSブログ
https://kinda.blog.ss-blog.jp/2011-05-17-1

reactjs - rss2json API: feed is not updated in real time - Stack Overflow
https://stackoverflow.com/questions/75814956/rss2json-api-feed-is-not-updated-in-real-time


いいなと思ったら応援しよう!