Open3

buku と連携するGUIを作りたい

はじめに

スクラップを作るに至った背景たち。

bukuとは

https://github.com/jarun/buku

ブックマークコレクター界隈では有名なもののようで、
自分もとりあえず突っ込みまくっている。
ブックマーク数万ぐらい入っていて、もう何が何だか。
読める気配はないし、もう読む気もない。
だが、さらに増えていく。これはもう病的。

いつかキーワードで検索して使う日が来るかも。。。

どこが便利

CLIで愚直にブックマークの管理ができることは前提として、
追加するときにページタイトルを取得してくれるのがありがたい。
検索するときにすごいやりやすくなる。

やりたいこと

bukuは基本的にCLIでの利用を想定したもので、docsもCLI向けのもののみ。
APIを通して外からゴリゴリいじることは想定されてないっぽい。
だが、同梱のbukuserverはflaskでREST API 連携ができるようなので、調べながらいい感じのGUIで見れるようになりたい。

bukuserver の API 拝見

bukuserver で flask routes してみた。

 03:51:07  ❯ FLASK_APP=server.py flask routes
Endpoint               Methods            Rule
---------------------  -----------------  ------------------------------------------------
admin.index            GET                /
admin.search           POST               /
admin.static           GET                /static/admin/<path:filename>
bookmark.action_view   POST               /bookmark/action/
bookmark.ajax_lookup   GET                /bookmark/ajax/lookup/
bookmark.ajax_update   POST               /bookmark/ajax/update/
bookmark.create_view   GET, POST          /bookmark/new/
bookmark.delete_view   POST               /bookmark/delete/
bookmark.details_view  GET                /bookmark/details/
bookmark.edit_view     GET, POST          /bookmark/edit/
bookmark.export        GET                /bookmark/export/<export_type>/
bookmark.index_view    GET                /bookmark/
bookmark_api           DELETE, GET, POST  /api/bookmarks
bookmark_api           DELETE, GET, PUT   /api/bookmarks/<int:rec_id>
bookmark_range_api     DELETE, GET, PUT   /api/bookmarks/<int:starting_id>/<int:ending_id>
bookmark_search_api    DELETE, GET        /api/bookmarks/search
bookmarklet            GET                /bookmarklet
bootstrap.static       GET                /static/bootstrap/<path:filename>
flask-api.static       GET                /flask-api/static/<path:filename>
get_tiny_url           GET                /api/bookmarks/<int:rec_id>/tiny
network_handle         POST               /api/network_handle
refresh_bookmark       POST               /api/bookmarks/refresh
refresh_bookmark       POST               /api/bookmarks/<int:rec_id>/refresh
static                 GET                /static/<path:filename>
statistic.index        GET, POST          /statistic/
tag.action_view        POST               /tag/action/
tag.ajax_lookup        GET                /tag/ajax/lookup/
tag.ajax_update        POST               /tag/ajax/update/
tag.create_view        GET, POST          /tag/new/
tag.delete_view        POST               /tag/delete/
tag.details_view       GET                /tag/details/
tag.edit_view          GET, POST          /tag/edit/
tag.export             GET                /tag/export/<export_type>/
tag.index_view         GET                /tag/
tag_api                GET                /api/tags
tag_api                GET, PUT           /api/tags/<tag>

手始めに、add するところから始めたい。
手元に未追加の2000ほどのブックマークがある(白目

まず重要なのは、/api/bookmarks/ の POSTだろうな。

bukuに REST API で add する

例のごとく、bukuserverを経由させる。

 curl -X POST -skSL http://localhost:5001/api/bookmarks -d "title=test" -d "url=url"

なんのこたぁなかった。
通常のREST APIの通り、data として渡してあげるだけで通った。
やりやすそうだ。

 curl -X POST -skSL http://localhost:5001/api/bookmarks -d "url=https://google.co.jp"

urlのみでも通るし、その場合タイトルは解決してくれる。

やってほしい動きをやってくれていると感じる。

作成者以外のコメントは許可されていません