RSSフィードをFUSEでマウントできるようにした話

RSSフィードをコンソール上でファイルのように操作するために、FUSEを使用してマウントできるようにしました。
タブ補完が使用できたり、catで表示した記事をPIPEで繋ぐ事ができるようになるメリットがあります。

rss-mounter

RSSフィードとは

更新情報を配信するための仕組みで、主にXMLを使用して提供されています。
例として、本ブログのRSSフィードは こちら からアクセスできます。

FUSEとは

FUSEとはFilesystem in Userspaceの略称で、権限を持たないユーザがユーザスペース上でカーネルを修正する事なくファイルシステムを作成する事ができます。

使用方法

インストール

パッケージ管理に poetry を使用しているので、poetryをインストールし依存パッケージをインストールします。

git clone https://github.com/fealone/rss-mounter
cd rss-mounter
pip install poetry
poetry install

設定ファイルの作成

YAMLを使用して設定ファイルを作成します。
サンプルとしてBigQueryのRSSフィードが設定されているので、それを参考に以下のフォーマットに従い修正します。

  • rss_config.yaml
{Name}: {URL}

マウント元とマウントポイントを作成

マウント元になるディレクトリと、マウントポイントを作成します。

mkdir rss
mkdir base

実行

プログラムを実行します。
第一引数にマウント元のディレクトリ、第二引数にマウントポイントを入力します。
デーモンとして動作させる場合、第三引数に false を入力します。

poetry run python main.py base rss false

RSSフィードのディレクトリ構造

マウントしたRSSフィードは以下のディレクトリ構造でマウントポイントにマウントされます。

{Mountpoint}/
 ├ {FeedName}/
 │ └ {Document}
 │ └ {Document}
 └ {FeedName}/
   └ {Document}
   └ {Document}

おわりに

本プログラムはGitHubにてGPL-3.0ライセンスで公開しています。
興味のある方は参照ください。
https://github.com/fealone/rss-mounter