RSSフィードの絞り込みをやりたくて自作しました。

成果物

maeda577/RESTfulFeedFilter: RSS/Atom feed filtering API using XPath

  • 機能
    • RSS/Atomフィードを読み込み、指定された要素を除外したフィードを生成するAPI
  • デモサイト

発端

  • ニュースサイトのRSSを購読したい
  • 大手ニュースサイトでは「ニュース全て」と「カテゴリ別」のRSSが用意されているが、中堅ぐらいのサイトだと「全て」しかない事がある
    • たとえばYahoo!ニュースではカテゴリ別のRSS一覧があるが、全てのニュースサイトがこうとは限らない
  • 「全て」では多すぎるので絞り込みたい
  • RSSはXMLなんだからXPath使えるじゃんと思いつく

事前調査

似たようなサービスは既にある

実装する環境の選定

  • Inoreaderを普段使いしているのでグローバルからアクセス出来ることが必須
  • 最近のクラウドサービスは無償プランが結構気前良いので無課金で作る
  • 最初Cloudflare Workersで作ろうとしたがDOM周りの関数が無いようなので手を出さなかった
  • 結局慣れているAzure App Serviceと.netで作ることにした
    • 最終的にDockerコンテナに固めたのでAzureである必要は無くなった

実装

  • コード周り
  • デプロイ周り
    • DockerコンテナをAzureAppServiceにデプロイする場合、80番か8080番で待ち受ける前提になっている
      • ASP.NETのWebAPIテンプレートだとHTTPSに強制リダイレクトされるようになっているので切っておく
    • AzureAppServiceではデフォルトで WEBSITES_ENABLE_APP_SERVICE_STORAGE がfalseになっていて静的ファイルの公開が出来ないので忘れずtrueにする

既知の不具合

  • FeedlyでRSS1.0フィードの絞り込みをかけた場合認識しない
    • Feedly側でエラーメッセージが出ないので何もわからない

終わりに

XPathのnamespace周りでハマり倒したので辛さあった