Mastodon v3.3.0から、ブックマークのインポート・エクスポートに対応しています。 もしあなたのサーバがv3.1.0以降、v3.3.0未満の場合は、APIで取得して、自力で書き出してしまいましょう。
bookmark_exporterの作成
何で書こうかと思いましたが、まぁPythonが簡単そうなので、それでいきましょう。 python3が実行できる環境を用意してください。Linux環境やmacOSでは最初から使えると思います。Windowsの方は調べて下さい……。
Python 2.xとPython 3.xが両方使える環境ではpython3
やpip3
で、3.xしか入っていない環境ではpython
やpip
で実行する感じです。
詳細は省略します。
まずMastodon.pyという便利なモジュールをインストールしておきます。MastodonのAPIを、Pythonから簡単に扱えるようにするプログラム部品です。
pip3 install Mastodon.py
次の内容のファイル(bookmark_exporter.py)を作成してください。
(なお、前半の'class MastodonEx`の定義はMastodon.pyのbookmark取得のコードを修正するパッチです。そのうち必要なくなるハズ……。ぽぷんじゃさんに助けて頂きました。ありがとう!)
import csv from mastodon import Mastodon class MastodonEx(Mastodon): def bookmarks(self, max_id=None, min_id=None, since_id=None, limit=None): if max_id != None: max_id = super()._Mastodon__unpack_id(max_id) if min_id != None: min_id = super()._Mastodon__unpack_id(min_id) if since_id != None: since_id = super()._Mastodon__unpack_id(since_id) params = super()._Mastodon__generate_params(locals()) return super()._Mastodon__api_request('GET', '/api/v1/bookmarks', params) mastodon = MastodonEx( access_token = 'hCz9gtDZ8TTN2bI_hcXi_pMuQWNQdyUgs5pxkHZHlLQ', api_base_url = 'https://nemushee.net/' ) toots = [] result = mastodon.bookmarks(limit = 40) toots += result while hasattr(result[-1], '_pagination_next'): result = mastodon.bookmarks(limit = 40, max_id = result[-1]._pagination_next['max_id']) toots += result with open('bookmark.csv', 'w') as f: writer = csv.DictWriter(f, ['uri'], extrasaction='ignore') writer.writerows(toots)
このうち、access_tokenとapi_base_urlはあなたの利用しているサーバのものに書き換えます。
まず、あなたのアカウントで、設定画面を開き、『開発』から『新規アプリ』ボタンでアプリケーションを追加します。
アプリケーションの名前だけつけて、画面下の方で決定しちゃってください。本来はここで、アプリケーションに許可する権限を設定して、不必要なアクセスができないように制限します。
一覧画面に戻ったら、出来上がったアプリケーションがリストされるので、それを選んで下さい。この中から、アプリケーショントークンをコピーして、先程のプログラムのaccess_token
の箇所にペーストしてください。
api_base_url
は、例えば社畜丼であればapi_base_url = 'https://mstdn-workers.com'
と設定します。
bookmark_exporterの実行
python3 bookmark_exporter.py
実行するとbookmark.csv
というファイルが作成されます。エラーが出なければ!
後始末
先程作成したアプリケーションは、もう使わないならさっさと削除しておきましょう。長く使う場合は、アクセストークンを漏らさないようにすること、与える権限(今回の例ではread:bookmarksだけあれば良い)をきちんとしらべて、安全に配慮してください。
インポート
Mastodon v3.3.0以降のサーバであれば、インポートが可能です。さきほど作成したbookmark.csv
を指定してください。
ブックマークは、そのサーバがキャッシュしていなかった投稿でもインポートの際に新規に取得してくれる、かなり強力な機能です。状況によってはかなり負荷がかかるので、大量にブックマークをインポートする場合は、管理者に一報を入れた方がいいかもしれません(管理者の方針次第です)。
また、フォロワー限定の投稿などは、インポートするアカウントが対象アカウントをフォローしてからでないと取得できません。フォローインポートや、手動での再フォローなどを実行して、落ち着いた状態で実行することをオススメします。