Backlog APIを使って Wiki 一覧(リンク付き)を取得する Python製 CLIを作ってみる

2021.11.08

はじめに

『Backlog Wiki で今まで作ってきたページ一覧をさくっと取得したいな…』 とふと思い作ってみました。

以下のような利用イメージです。

▼ 実行コマンド

python get-backlog-wikis.py ${APIKEY} ${SPACE} ${PROJECT} --syntax md

▼ 取得できるテキスト例

img

▼ 取得できるテキスト例 (Markdown プレビュー)

img

事前準備

Python Fire 導入

GitHub - google/python-fire

Python Fire は Python製 CLIを簡単に作ることができるツールです。 今回はこれを使います。

弊社ブログに紹介ブログがあるので詳しくは以下を参照ください。

私は Mac 環境なので 以下コマンドで Python Fire をインストールしました。

pip install fire

Backlog APIキー 取得

APIキーを取得しておきましょう。 Backlog の [個人設定 > API] から取得できます。

img

スクリプトを書いてみる

以下 Pythonスクリプトを作成しました。

以下にある Backlog API を使っています。

試してみる

使い方の表示 (--help)

python get-backlog-wikis.py --help でヘルプが出てきます。 特別な設定無しで、このような help 出力を作ってくれる Python Fire、素晴らしいです。

# python get-backlog-wikis.py --help
INFO: Showing help with the command 'get-backlog-wikis.py -- --help'.

NAME
    get-backlog-wikis.py - wiki一覧の情報を取得して、テキスト(リスト形式)に出力します

SYNOPSIS
    get-backlog-wikis.py KEY SPACE PROJECT <flags>

DESCRIPTION
    wiki一覧の情報を取得して、テキスト(リスト形式)に出力します

POSITIONAL ARGUMENTS
    KEY
        Backlog APIキー
    SPACE
        Backlog スペースID
    PROJECT
        Backlog プロジェクトID もしくは プロジェクトキー

FLAGS
    --syntax=SYNTAX
        Default: 'md'
        シンタックス(Markdown `md` or Backlog `bl` or Org-mode `org`)

NOTES
    You can also use flags syntax for POSITIONAL ARGUMENTS

Wiki 一覧の取得

事前に必要なパラメータを準備しておきます。

# Backlog API キー
KEY=KrGHymzEXAMPLE7748

# スペースID (参考: https://[スペースID].backlog.jp)
SPACE=[スペースID]

# プロジェクトID
PROJECT=HOGE_PRJ

以下コマンドで Wiki 一覧を取得しましょう。

python get-backlog-wikis.py ${KEY} ${SPACE} ${PROJECT}
# -  [Home](https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX)
# - Kawahara
#     -  [0_キックオフ](https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX)
#     - 1_アカウント
#         -  [AWS Organizations](https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX)
#             -  [Control Tower](https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX)
#         -  [アカウント戦略](https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX)
#     (略)

他フォーマットで出力

--syntax オプションで他フォーマットで出力します。

▼ Backlog 記法

python get-backlog-wikis.py ${KEY} ${SPACE} ${PROJECT} --syntax bl
# - [[Home>https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX]]
# - Kawahara
# -- [[0_キックオフ>https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX]]
# -- 1_アカウント
# --- [[AWS Organizations>https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX]]
# ---- [[Control Tower>https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX]]
# --- [[アカウント戦略>https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX]]
# (略)

▼ Org-mode 記法

python get-backlog-wikis.py ${KEY} ${SPACE} ${PROJECT} --syntax org
# - [[https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX][Home]]
# - Kawahara
#   - [[https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX][0_キックオフ]]
#   - 1_アカウント
#     - [[https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX][AWS Organizations]]
#       - [[https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX][Control Tower]]
#     - [[https://${SPACE}.backlog.jp/alias/wiki/10752XXXXX][アカウント戦略]]
#   (略)

おわりに

Backlog API を試してみました。更新系の作業も API を使って色々と効率化できそうですね。

あと Python Fire はとても便利です。Pythonで自作CLI作っていきたいと 思っている方がいたら是非試してみてください。

参考

実行環境

sw_vers
# ProductName:	macOS
# ProductVersion:	11.6
# BuildVersion:	20G165

python --version
# Python 3.7.3

pip list | grep fire
# fire                  0.4.0