Python
mastodon

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

はじめてのQiita記事です。

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

https://takulog.info/howto-programming-for-poor-people/

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

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

これらの条件を踏まえ、簡単な練習問題を50問ほど作ってみました。

初級Pythonistaの皆様の腕試しにお役立ちできれば幸いです。

なお、回答はこちらに掲載しました。

解答編
https://qiita.com/itsumonotakumi/items/1f9273a07f1f7189921f

前提条件

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

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

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

Mastodon API のリファレンスページ(「参考」参照)を見ながら試すことを推奨します。

練習1.APIの操作準備

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

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

この問題が解けないと先に進めないので、まったく分からない方は下記を参考にさせて貰って下さい。

MastodonにTootするまで(Python)
https://qiita.com/ignis_fatuus/items/f4b7213ad887af2cf71c

PythonのrequestsでmastodonのAPIを叩く
https://qiita.com/kk6/items/5ecfa1a8a6bd282c1d61

練習2. トゥート投稿

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

  1. 下記のテキストをトゥート(投稿)してください。
    はじめてのトゥート #Python練習
  2. 下記のテキストと何か画像1つを添付してトゥート(投稿)してください。
    2回目のトゥート #Python練習
  3. 下記のテキストと何か画像4つを添付してトゥート(投稿)してください。
    3回目のトゥート #Python練習
  4. 下記のテキストに、「CWの練習」という警告(CW)を付けて、トゥート(投稿)してください。
    4回目のトゥート #Python練習
  5. 下記のテキストに、何か画像1つを添付して、NSFWで隠してトゥート(投稿)してください。
    5回目のトゥート #Python練習
  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 に関する公式情報はこちらです。

https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md

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

https://github.com/halcy/Mastodon.py

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

https://gist.github.com/okapies/eab5c6fc217e914ed0cac6c944384e4d

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


退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

問い合わせ先

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

Twitter: @itsumonotakumi
Mastodon: @itsumonotakumi@pawoo.net

元の記事

Mastodonで始めるPythonプログラミング!腕試しテスト50本ノック(初級編) | いつもの匠
https://takulog.info/exercise-python-for-mastodon-1/