TerminalからMastodonでトゥートするPythonアプリを作りました
/ 4 min read
Table of Contents
はじめに
Terminalから離れたくない!でもトゥートしたい!というトゥート廃?のためにMastodonをコマンドラインから操作できるPythonアプリケーション「mastodon-cli」を作ってみました。
リポジトリURL: https://github.com/barorin/mastodon-cli
主な機能
mastodon-cliには、マストドンの基本的な機能がコマンドライン形式で実装されています。
- タイムラインの表示: ホーム、ローカル、パブリックなど、各種タイムラインを簡単に閲覧できます
- ハッシュタグタイムラインの表示: 特定のハッシュタグを指定して、関連するトゥートを表示できます
- トゥートの投稿: テキストはもちろん、メディア添付、公開範囲設定、CW(コンテンツ警告)などの機能も利用可能です
- プロフィール表示: 自分や他のユーザーのプロフィール情報を表示できます
動作環境
- Ubuntu 24.04 LTS
- Python 3.12
インストール方法
インストールはとても簡単です。Pythonと依存パッケージをインストールするだけで使えます。
# リポジトリをクローンgit clone https://github.com/barorin/mastodon-cli.gitcd mastodon-cli
# 依存パッケージをインストールpip install -r requirements.txt
必要な依存パッケージはMastodon.py
とpython-dotenv
だけなので、とても軽量です。
初期設定
初回実行時には.env
ファイルの作成が必要です。リポジトリに含まれる.env.example
ファイルをコピーして必要な情報を設定してください。
アクセストークンなどの認証情報は、Mastodonの設定ページから取得できます。
cp .env.example .env# その後、.envファイルを編集
使用例
ちなみに私は入力が面倒なので、alias toot='python main.py post --text'
とかを設定しています。
トゥートの投稿
# 基本的な投稿python main.py post --text "こんにちは、マストドン!"
# 公開範囲を指定して投稿python main.py post --text "非公開投稿" --visibility private
# メディア付き投稿python main.py post --text "写真付き投稿" --media photo.jpg
# コンテンツ警告付き投稿python main.py post --text "長い内容..." --spoiler "長文注意"
タイムラインの表示
# ホームタイムラインを表示python main.py timeline
# ローカルタイムラインを表示python main.py timeline --type local
# 表示件数を指定python main.py timeline --count 15
ハッシュタグの検索
# 「python」タグのトゥートを表示python main.py tag python
技術的な詳細
mastodon-cliは以下のファイル構成になっています。
main.py
- エントリポイントとなるスクリプトmastodon_api.py
- Mastodon APIとの連携を担当config.py
- 設定ファイル管理utils.py
- トゥート表示などのユーティリティ関数
特にutils.py
のdisplay_toots
関数をカスタマイズすることで、トゥートの表示方法を自分好みに変更できるようになっています。
トゥートの表示では、HTMLタグの除去、日時のフォーマット、リブースト情報の表示、メディア添付の表示など、見やすさを重視した設計にしています。
# トゥート表示の例(utils.pyから)print(f"\n[{display_num}] {account} (@{username}) - {formatted_time}")print("-" * 40)print(clean_content)
おわりに
mastodon-cliは、Mastodonをより効率的に使いたいコマンドライン愛好家のために開発しました。シンプルな設計ながらも必要な機能は揃えていますので、ぜひ試してみてください。
リポジトリURL: https://github.com/barorin/mastodon-cli