この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
サーモン大好き横山です。
今回は、markdownで情報共有出来るサービスの esa にPython3を使って、記事を投稿する小ネタをご紹介します。
Tokenの準備
APIを利用するためのTokenを取得します。
1.右上の自アイコンをクリック
2.Applicationsのタブをクリック
3.「Personal Access Token」の「Generate new token」をクリック
4.「Token Description」に適当な名称をいれ、Select scopeでRead/Write両方にチェックをいれて作成
5.Tokenが作成されるので、忘れずメモします。忘れた場合は再度作成から始めます。
esaに記事をPOSTする
公式サイトのv1 #noexpand を参考に作成していきます。 Tokenの使用方法は RequestのHeaderに入れる方法とURLにQuery Stringを使ってリクエストする方法2種類ありますが、今回はRequestのHeaderに入れる方法を紹介します。
venv環境を準備
venvの環境を作成し、 requests
をインストールします。
$ python3 -m venv venv
$ . venv/bin/activate
$ pip install requests
コード
TOKENには先程取得したTokenを設定します。また、TEAM_NAMEは投稿したいチーム名を記入してください。
main.py
#!/usr/bin/env python
TOKEN = '11decxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd790'
TEAM_NAME = 'チーム名'
import requests
from requests.auth import AuthBase
import json
class AuthEsa(AuthBase):
def __call__(self, r):
r.headers['Authorization'] = 'Bearer {}'.format(TOKEN)
return r
# requests instance
session = requests.session()
session.auth = AuthEsa()
session.headers['Content-Type'] = 'application/json'
api_endpoint = 'https://api.esa.io'
# md
md = """名前|食べたいもの
--------|----------
横山| サーモン
横山| かつお
横山| プリン
"""
# post body
body = dict(post=dict(name="投稿テスト",
body_md=md,
category='hoge/fuga',
wip=False))
# post
resp = session.post('{}/v1/teams/{}/posts'.format(api_endpoint, TEAM_NAME),
data=json.dumps(body).encode('utf-8'))
print('response status: {}'.format(resp.status_code))
実行
$ python main.py
response status: 201
まとめ
API経由でesaに投稿するスクリプトが簡単に作成することができました。
これを利用して日次、週次のエビデンスをesaに貼り付けるということも簡単にできそうです。