たいやばなな

20代後半SE?SI?な自称エンジニアの日々の気づきや、試したことを種種雑多に雑記します。

trelloにAPIでUdemyのレクチャーをカード化してみた

f:id:tire-banana:20210207231136j:plain:w450

自分の個人タスク管理にも半年くらいTrelloを使っております。いわゆる「かんばん(kanban)ボード」ツールですが

これが結構良くて、タスクを見える化 → タスク消化 の流れをつくる事ができてます。

f:id:tire-banana:20210207231849p:plain:w300
trelloはこんな感じ

trelloの運用方法についても、今度書いておこうかな。

それはそうと、最近、Udemyで動画学習を始めまして(「これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)」)、

「この学習もtrelloで見える化して学習意欲あげたいな」と思ったわけです。

しかし、このAWSの講座レクチャーが300近くありまして、、、

「これは、、、コピペでtrelloカード化ですか!!!???」と森で祈っていたところ

f:id:tire-banana:20210214184617j:plain:w300
祈りはこんな感じ

否!!!!!「trelloにはAPIがあるのじゃ!!!!!」

が教えてくれましたので、

ということで今回はpython3(py-trello)を使ってUdemyのレクチャーをtrelloのカード化してみたメモです。

素人の所業ですのでご参考程度にどうぞ。

1. Trello API_key, token, api_secretの取得

api_key

まずは、Trello apiキーの取得です

https://trello.com/1/appKey/generate

にアクセスすると、「開発者向けAPIキー」という画面に遷移しますので apiキーをメモしておきます

f:id:tire-banana:20210214184903p:plain:w500
「開発者向けAPIキー」

token

次にtokenです

上記で取得したAPIキーを利用して下記URLへアクセスしアカウントへのアクセスを許可することで取得できます

これもメモしておきます

https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name=Server%20Token&key={上記で取得したAPIキー}

api_secret

https://trello.com/1/appKey/generate の「OAuth」もメモしておきます

f:id:tire-banana:20210214185032p:plain:w500
「秘密」

2. ターゲットTrelloボードを調べる

今回はpy-trelloを使っていきます

まずは、py-trelloをpipインストールします

pip install py-trello
py-trello                          0.17.1

がインストールされました。

早速、ボードのリストを取得してみます

from trello import TrelloClient

### Key Token Secret
client = TrelloClient(
    api_key="{取得したapi_key}",
    api_secret="{取得したapi_secret}",
    token="{取得したtoken}"
)

print("ボード一覧→",client.list_boards())

を実行すると

ボード一覧→ [<Board 仕事用 Kanban Board>, <Board プライベート_kanban>]

こんな感じのボードリストが帰ってきます

3. ボード内のリストを取得

ボードリストが取得できたので、ターゲットにしたいボードをボードリストから選んで、ボード内のリストを取得します

target_board = client.list_boards()[1] #ターゲットボードは「プライベート_kanban」
print("リスト一覧→",target_board.list_lists())

結果はこんな感じ、これもリストが帰ってきます

リスト一覧→ [<List Done 1/25>, <List 作業中>, <List 今日>, <List 明日>, <List 今週>, <List 今月>, <List Done 1/11>, <List Dane 1/4>]

4. リストにカードを追加する

タイトルをつけて、カード追加

trello_card = target_board.list_lists()[1].add_card("カードのタイル")

説明欄の追加

作ったカードに説明を追加します

trello_card.set_description("カードの説明")

チェックリストの追加

作ったカードにチェックリストを追加します

created_checklist = trello_card.add_checklist("チェックリスト名",["チェック1", "チェック2", "チェック3"])

5. udemyのレクチャーリストをtrelloのカードにする

(ここからはほぼ、蛇足です)

udemyのレクチャーリストをtrelloのカードにしていきます

こんな感じのレクチャー一覧をUdemyからコピペで作りました

セクション1:まずは知ってみる
1. はじめに 7 
小テスト1: アソシエイト試験お試しテストによるゴール確認 
2. AWSのアカウント登録 5 
3. AWSでサーバーを構築してみる① 10 
4. AWSでサーバーを構築してみる② 2 
5. 【Windows用】AWSでサーバーを構築してみる③ 2 
6. 【MAC用】AWSでサーバーを構築してみる③ 5 
7. EC2の削除 3 
8. AWSを利用するためのツール① 3 
9. AWSを利用するためのツール② 6 
10. 【お願い】AWSの画面更新について 1 
セクション2:Day1対応の実施
11. Day1対応の実施① 2 
12. Day1対応の実施② 4 
13. Day1対応の実施③ 2 
14. Day1対応の実施④ 1 
15. Day1対応の実施⑤ 7 
16. Day1対応の実施⑥ 4 
17. Day1対応の実施⑦ 2 
18. Day1対応の実施⑧ 9 
19. Day1対応の実施⑨ 1 
20. Day1対応の実施⑩ 6 
21. Day1対応の実施⑪ 9 
22. S3バケットの削除について 1 
セクション3:AWSとアソシエイト試験の概要 
23. AWSの資格体系 10 
24. アソシエイト試験概要 12 
25. AWSのグローバルインフラ構成 20 
26. AWSの全体像① 10 
27. AWSの全体像② 8 
28. AWSの全体像③ 11 
29. 仮想化を理解する 9 
30. クラウド基礎 15 
31. AWSの意義 5
・
・
・
続く

含まれてる情報が

セクションタイトル、レクチャータイトル、レクチャーの時間(単位:分)

という感じ

レクチャーの時間が含まれてたのでtrelloのカードにするにあたって 以下のようなルールにしました。

  • カードタイトルはセクション名にする
  • チェックリストにレクチャー名を入れる
  • 1つのカードに含まれるレクチャーの時間は25分とする

で、以下のようなcard_list 作りました

caed_list = [{'title': 'セクション1:まずは知ってみる 0', 
'content_list': [{'c_title': '1. はじめに', 'r_time': '7'}, {'c_title': '小テスト1:', 'r_time': 'アソシエイト試験お試しテストによるゴール確認'}, {'c_title': '2. AWSのアカウント登録', 'r_time': '5'}, {'c_title': '3. AWSでサーバーを構築してみる①', 'r_time': '10'}, {'c_title': '4. AWSでサーバーを構築してみる②', 'r_time': '2'}, {'c_title': '5. 【Windows用】AWSでサーバーを構築してみる③', 'r_time': '2'}]
}, 
{'title': 'セクション1:まず は知ってみる 1', 
'content_list': [{'c_title': '6. 【MAC用】AWSでサーバーを構築してみる③', 'r_time': '5'}, {'c_title': '7. EC2の削除', 'r_time': '3'}, {'c_title': '8. AWSを利用するためのツール①', 'r_time': '3'}, {'c_title': '9. AWSを利用するためのツール②', 'r_time': '6'}, {'c_title': '10. 【お願い】AWSの画面更新について', 'r_time': '1'}]}, 
{'title': 'セク ション2:Day1対応の実施 0', 
'content_list': [{'c_title': '11. Day1対応の実施①', 'r_time': '2'}, {'c_title': '12. Day1対 応の実施②', 'r_time': '4'}, {'c_title': '13. Day1対応の実施③', 'r_time': '2'}, {'c_title': '14. Day1対応の実施④', 'r_time': '1'}, {'c_title': '15. Day1対応の実施⑤', 'r_time': '7'}, {'c_title': '16. Day1対応の実施⑥', 'r_time': '4'}, {'c_title': '17. Day1対応の実施⑦', 'r_time': '2'}, {'c_title': '18. Day1対応の実施⑧', 'r_time': '9'}]}, 
・
・
・
つづく
]

カードリストができたので、以下のようにして「今月」というリストに udemyレクチャカードをぶち込みます

### List   上記で調べたボードIDから調べたリスト
listid_today = target_board.list_lists()[5] # 今日
listid_week = target_board.list_lists()[6] # 今週
listid_month =  target_board.list_lists()[7]# 今月※今回のターゲット
for card in card_list:
    # Card Name
    cardname = card["title"]
    desc = 'Udemyで動画学習をしよう!'
    trello_card = listid_month.add_card(cardname)
    trello_card.set_description(desc)
    print(trello_card)
    print(cardname)
    checklist = []
    for c in card["content_list"]:
        checklist.append(c['c_title'])    
    print(checklist)
    created_checklist = trello_card.add_checklist("APIで作ったチェックリスト",checklist)

結果はこんな感じです

f:id:tire-banana:20210214185323p:plain:w500
結果①

f:id:tire-banana:20210214185345p:plain:w500
結果②

以上です!!

これで、勉強頑張れるかなー

がんばるしかないのだー

Pikisuperstar - jp.freepik.com によって作成された time ベクトル Jcomp - jp.freepik.com によって作成された people 写真