はじめてのQiita記事です。
2017年にMastodonで遊びたくて、苦手なプログラミングを克服して、Pythonを習得しました。
この経験から 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の操作準備
まずはトゥートする準備ができるかを確認する問題です。
- インスタンスへ疎通確認してください。
(ヒント:HTTPSポートへ何らか通信できればOK) - インスタンスへのREST APIへの疎通確認してください。
(対象APIやレスポンス値は問わない) - インスタンスへクライアント「Python_Exercise」を登録して、Client ID と Client Secret を取得してください。
- インスタンスからアクセストークンを取得して、ファイル「access_token.txt」に保存してください。
- 上記で保存したアクセストークンを表示してください
この問題が解けないと先に進めないので、まったく分からない方は下記を参考にさせて貰って下さい。
MastodonにTootするまで(Python)
https://qiita.com/ignis_fatuus/items/f4b7213ad887af2cf71c
PythonのrequestsでmastodonのAPIを叩く
https://qiita.com/kk6/items/5ecfa1a8a6bd282c1d61
練習2. トゥート投稿
Pythonを使って様々なトゥートができるかを確認する問題です。
- 下記のテキストをトゥート(投稿)してください。
はじめてのトゥート #Python練習
- 下記のテキストと何か画像1つを添付してトゥート(投稿)してください。
2回目のトゥート #Python練習
- 下記のテキストと何か画像4つを添付してトゥート(投稿)してください。
3回目のトゥート #Python練習
- 下記のテキストに、「CWの練習」という警告(CW)を付けて、トゥート(投稿)してください。
4回目のトゥート #Python練習
- 下記のテキストに、何か画像1つを添付して、NSFWで隠してトゥート(投稿)してください。
5回目のトゥート #Python練習
- 下記のテキストを、公開範囲「非掲載」に設定してトゥート(投稿)してください。
はじめての非掲載トゥート #Python練習
- 下記のテキストを、公開範囲「非公開」に設定してトゥート(投稿)してください。
はじめての非公開トゥート #Python練習
- 下記のテキストを、公開範囲「ダイレクト」に設定してトゥート(投稿)してください。
@test@itumonotakumi.m.to はじめてのダイレクトトゥート #Python練習
- 下記のテキストを下記の設定でトゥート(投稿)してください。
@test@itumonotakumi.m.to< トゥート練習中 #Python練習
- CW / 警告文「CW練習中」を付与すること
- 何らか画像を1つ添付 / NSFWを付与すること
- 公開範囲は「非公開」
- 下記のテキストでメンションを送ってください。
@test@itumonotakumi.m.to メンション練習中 #Python練習
練習3. トゥート操作
Pythonを使って、トゥートに関する様々な操作ができるかを確認する問題です。
- 練習2-1で投稿したトゥートにお気に入りを付けてください。
- 上記で付けたお気に入りをトゥートから解除してください。
- 練習2-1で投稿したトゥートをブーストしてください。
- 上記でブーストしたトゥートの、ブーストを解除してください。
- 練習2-1で投稿したトゥートを削除してください。
練習4. 自分のアカウント情報の取得
- アカウント情報を取得して、JSON形式で表示しなさい。
- 自分のアカウント名(アカウント名@インスタンス名)のみ表示しなさい。
- 自分の表示名のみ表示しなさい。
- 自分のプロフィールの内容のみ表示しなさい。
- 自分のフォロー数のみ表示しなさい。
- 自分のフォロワー数のみ表示しなさい。
- 自分のお気に入り数のみ表示しなさい。
- 自分の最新トゥート10件をJSON形式で表示しなさい。
- 自分の最新トゥート1件の時間と内容のみ表示しなさい。
- 自分の最新トゥート1件のアプリ名のみ表示しなさい。
練習5. 他人のアカウント情報の取得
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」を検索して、その結果をJSON形式で表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の表示名を表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のプロフィール内容のみ表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のフォロー数のみ表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のフォロワー数のみ表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」のお気に入り数のみ表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート10件をJSON形式で表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件の投稿時間と内容を表示しなさ。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件のアプリ名のみ表示しなさい。
- アカウント「いつもの匠(itsumonotakumi@pawoo.net)」の最新トゥート1件のお気に入りがついているか、ついているならお気に入り数を表示しなさい。
練習6. タイムライン表示
- インスタンスのホスト名(FQDN)を表示しなさい。
- インスタンスの説明のみ表示しなさい。
- インスタンスのMastodonのバージョンのみ表示しなさい。
- インスタンスのローカルタイムラインのトゥートを10件表示しなさい。
- インスタンスの連合タイムラインのトゥートを10件表示しなさい。
- ハッシュタグ「#」のついたトゥートを最新10件のみ表示しなさい。
- 自分が所属するインスタンスのローカルタイムラインのトゥートを100件表示しなさい。
- 自分が所属するインスタンスの連合タイムラインのトゥートを100件表示しなさい。
- ハッシュタグ「#」のついたトゥートを最新100件のみ表示しなさい。
- 自分が所属するインスタンスのローカルタイムラインのトゥート200件表示しなさい。
表示形式: 時間/アカウント名/トゥート内容
以上で終了です。いかがでしたでしょうか?
参考
Mastodon の API に関する公式情報はこちらです。
Python向けのモジュールが提供されています。今のところ頻繁に更新されています。
シェルスクリプト(というよりcurlコマンド)でAPIを使うための初歩的な方法を紹介されています。非常に分かり易くて参考になりました。
匠がPythonを習得するキッカケになった書籍です。第一部と第二部の8章と10章さえ読めば、今回の問題は解けます。
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
問い合わせ先
ご意見・ご感想はもちろん、内容の誤りや不足などあれば、遠慮なくこちらまでご連絡ください。
Twitter: @itsumonotakumi
Mastodon: @itsumonotakumi@pawoo.net
元の記事
Mastodonで始めるPythonプログラミング!腕試しテスト50本ノック(初級編) | いつもの匠
https://takulog.info/exercise-python-for-mastodon-1/