メニュー
このサイトの運営者
\ Amazonタイムセール祭!最大12%ポイント還元 /

Mastodonで始めるPythonプログラミング!腕試しテスト50本ノック(初級編)

eyecatch_python_for_mastodon

この記事は最終更新日から3年以上が経過しています。

匠は、2017年にMastodonで遊びたくて、苦手なプログラミングを克服して、Pythonを習得しました。

この経験から Mastodon の API を使って練習するのは、下記の理由でプログラミング学習に有効だと感じました。

  • Mastodonでやりたいことを自動化できるので実用的で、モチベーションが上がりやすい
  • REST APIなので扱いやすい
  • TwitterなどのSNSと比べて、API利用の制約が緩い
  • PythonはMastodon向けラッパーモジュールもある
  • それなりに扱い方にクセはあるので勉強になる

これらの条件を踏まえ、Python初心者が Mastodonを楽しめるように、簡単な練習問題を50問ほど作ってみました。

初級Pythonistaの皆様の腕試しにお役立ちできれば幸いです。ぜひチャレンジしてみて下さい。

なお、回答はこちらに掲載していますので、解答できたらご覧ください。

前提条件

これから紹介する練習問題について、下記を前提とします。

  • あらかじめMastodonアカウントは保持していること
  • 特に指定しない限り「インスタンス」とは「保持しているアカウントのあるMastodonインスタンス」を指す
  • 表示しなさい = 標準出力すること
  • ファイルに保存しなさい = 任意のテキストファイルに書き込み保存すること
  • 回答は Python 3系にて記載しますが、Python 2系でも作れます。
  • APIへのアクセスは下記のいずれかで行うこと
    • requestsモジュールを使ってREST APIへリクエストする
    • Mastodon.py
  • もちろん IDLE や Python のコマンドラインで回答を作るのもアリです。

ちなみに、Python以外でも練習問題はこなせると思います。匠は答えを用意しませんが、ぜひ楽しんでいたのみればと思います。

練習1.APIの操作準備

まずはトゥートする準備ができるかを確認する問題です。

  1. インスタンスへ疎通確認してください。
    (ヒント:HTTPSポートへ何らか通信できればOK)
  2. インスタンスへのREST APIへの疎通確認してください。
    (対象APIやレスポンス値は問わない)
  3. インスタンスへクライアント「Python_Exercise」を登録して、Client ID と Client Secret を取得してください。
  4. インスタンスからアクセストークンを取得して、ファイル「access_token.txt」に保存してください。
  5. 上記で保存したアクセストークンを表示してください

練習2. トゥート投稿

Pythonを使って様々なトゥートができるかを確認する問題です。

  1. 「はじめてのトゥート #Python練習」とトゥート(投稿)してください。
  2. 「2回目のトゥート #Python練習」というテキストと何か画像1つを添付してトゥート(投稿)してください。
  3. 「3回目のトゥート #Python練習」というテキストと何か画像4つを添付してトゥート(投稿)してください。
  4. 「4回目のトゥート #Python練習」というテキストに、「CWの練習」という警告(CW)を付けて、トゥート(投稿)してください。
  5. 「5回目のトゥート #Python練習」というテキストに、何か画像1つを添付して、NSFWで隠してトゥート(投稿)してください。
  6. 「はじめての非掲載トゥート #Python練習」というテキストを、公開範囲「非掲載」に設定してトゥート(投稿)してください。
  7. 「はじめての非公開トゥート #Python練習」というテキストを、公開範囲「非公開」に設定してトゥート(投稿)してください。
  8. 「@test@itumonotakumi.m.to はじめてのダイレクトトゥート #Python練習」というテキストを、公開範囲「ダイレクト」に設定してトゥート(投稿)してください。
  9. 「@test@itumonotakumi.m.to トゥート練習中 #Python練習」というテキストを下記の設定でトゥート(投稿)してください。
    • CW / 警告文「CW練習中」を付与すること
    • 何らか画像を1つ添付 / NSFWを付与すること
    • 公開範囲は「非公開」
  10. test@itumonotakumi.m.toに「メンション練習中 #Python練習」というテキストでメンションを送ってください。

練習3. トゥート操作

Pythonを使って、トゥートに関する様々な操作ができるかを確認する問題です。

  1. 練習2-1で投稿したトゥートにお気に入りを付けてください。
  2. 上記で付けたお気に入りをトゥートから解除してください。
  3. 練習2-1で投稿したトゥートをブーストしてください。
  4. 上記でブーストしたトゥートの、ブーストを解除してください。
  5. 練習2-1で投稿したトゥートを削除してください。

練習4. 自分のアカウント情報の取得

  1. アカウント情報を取得して、JSON形式で表示しなさい。
  2. 自分のアカウント名(アカウント名@インスタンス名)のみ表示しなさい。
  3. 自分の表示名のみ表示しなさい。
  4. 自分のプロフィールの内容のみ表示しなさい。
  5. 自分のフォロー数のみ表示しなさい。
  6. 自分のフォロワー数のみ表示しなさい。
  7. 自分のお気に入り数のみ表示しなさい。
  8. 自分の最新トゥート10件をJSON形式で表示しなさい。
  9. 自分の最新トゥート1件の時間と内容のみ表示しなさい。
  10. 自分の最新トゥート1件のアプリ名のみ表示しなさい。

練習5. 他人のアカウント情報の取得

  1. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」を検索して、その結果をJSON形式で表示しなさい。
  2. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の表示名を表示しなさい。
  3. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のプロフィール内容のみ表示しなさい。
  4. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のフォロー数のみ表示しなさい。
  5. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のフォロワー数のみ表示しなさい。
  6. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のお気に入り数のみ表示しなさい。
  7. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート10件をJSON形式で表示しなさい。
  8. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件の投稿時間と内容を表示しなさ。
  9. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件のアプリ名のみ表示しなさい。
  10. アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件のお気に入りがついているか、ついているならお気に入り数を表示しなさい。

練習6. タイムライン表示

  1. インスタンスのホスト名(FQDN)を表示しなさい。
  2. インスタンスの説明のみ表示しなさい。
  3. インスタンスのMastodonのバージョンのみ表示しなさい。
  4. インスタンスのローカルタイムラインのトゥートを10件表示しなさい。
  5. インスタンスの連合タイムラインのトゥートを10件表示しなさい。
  6. ハッシュタグ「#」のついたトゥートを最新10件のみ表示しなさい。
  7. 自分が所属するインスタンスのローカルタイムラインのトゥートを100件表示しなさい。
  8. 自分が所属するインスタンスの連合タイムラインのトゥートを100件表示しなさい。
  9. ハッシュタグ「#」のついたトゥートを最新100件のみ表示しなさい。
  10. 自分が所属するインスタンスのローカルタイムラインのトゥート200件表示しなさい。
    表示形式: 時間/アカウント名/トゥート内容

以上で終了です。いかがでしたでしょうか?

参考

Mastodon の API に関する公式情報はこちらです。

GitHub
Build software better, together GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 330 million projects.

Python向けのモジュールが提供されています。今のところ頻繁に更新されています。

GitHub
GitHub - halcy/Mastodon.py: Python wrapper for the Mastodon ( https://github.com/mastodon/mastodon/ ... Python wrapper for the Mastodon ( https://github.com/mastodon/mastodon/ ) API. - GitHub - halcy/Mastodon.py: Python wrapper for the Mastodon ( https://github.co...

シェルスクリプト(というよりcurlコマンド)でAPIを使うための初歩的な方法を紹介されています。非常に分かり易くて参考になりました。

Gist
Mastodon API の叩き方 Mastodon API の叩き方. GitHub Gist: instantly share code, notes, and snippets.

匠がPythonを習得するキッカケになった書籍です。第一部と第二部の8章と10章さえ読めば、今回の問題は解けます。

\ Amazonタイムセール祭!最大12%ポイント還元/
Amazonで探す ▶
\最大10% 楽天ポイント還元!/
楽天市場で探す ▶

問い合わせ先

ご意見・ご感想はもちろん、内容の誤りや不足などあれば、遠慮なくこちらまでご連絡ください。

著:大喜多 利哉
¥1,760 (2023/05/25 15:06時点 | Amazon調べ)
\ Amazonタイムセール祭!最大12%ポイント還元/
Amazonで探す ▶
\最大10% 楽天ポイント還元!/
楽天市場で探す ▶

この記事の著者はこちら