プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

fediversesearchの検索条件にサーバーのソフトウェア種別を追加しました

DBに格納されているURIに対してクロールを実行し終わり、有効なURIのうちサーバーのソフトウェア種別が取得できるものはある程度種類を絞り込んだうえでDBに保存しました。

ソフトウェア種別に関してはどう取得したらいいか悩んでいたのですが、分散SNSのフォロワーから「/.well-known/nodeinfo経由でとれないかな?」とのコメントがあり、試したところほぼこれで取得できるため実装しています。

あるサーバーの「/.well-known/nodeinfo」にアクセスすると、有効ならば以下のような形式のjsonデータが取得できます。

f:id:kaias1jp:20210301143930p:plain

このうち、「href」に設定されているURIにアクセスすると、実際のデータがjson形式で取得できます。

f:id:kaias1jp:20210301144047p:plain

今回は、softwareのnameの値を見ています。
この値は色々なものが返ってくると思われますが、今回は以下のサイトに掲載されている「Projects」の上位10個ぐらいを実際にfediversesearchで検索してみて実際に取得できるものに絞り込みました。

the-federation.info

なお、「/.well-known/nodeinfo」のデータは1つとは限りませんので注意が必要です。

f:id:kaias1jp:20210301144640p:plain

さて、実際に検索できるようにするためにUIとsearch APIを改造しました。
UIには「サーバー種別」をselectで選べるようにしています。

f:id:kaias1jp:20210301144931p:plain

f:id:kaias1jp:20210301144945p:plain

サーバー種別を指定して検索することが出来ます。

f:id:kaias1jp:20210301145045p:plain

もちろん、キーワードとの組み合わせも可能です。

f:id:kaias1jp:20210301145118p:plain

サーバー種別を指定しないケースは「-- すべて --」にしています。この場合、キーワードを指定しないと0件になります。

search APIですが、いままではキーワードを指定しない場合は0件で返していましたが、今回からキーワードが空文字列でもサーバー種別が指定されていたら検索できるようにしています。
パラメータは「software」で指定します。なお、keywordパラメータは省略できません。

モバイル画面も同じような改造をしています。

ひとまず、検索についてはひと段落です。次はオプトアウトの仕組みを実装していく予定です。

www.fediversesearch.com