Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
21
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@itsumonotakumi

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

はじめての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の操作準備

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

  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 に関する公式情報はこちらです。

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

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

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


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

問い合わせ先

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

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

元の記事

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
21
Help us understand the problem. What is going on with this article?