🖥
#Github issue を作成すると #Medium #API で新規ポストする自動連携の例。Zapierを利用。
#Github issue を作成すると #Medium #API で新規ポストする自動連携の例。Zapierを利用。
結果の例
タグも指定できている
なんと画像は自動的にコンバートされて、Mediumにホスティングしてくれている、すげえ、画像をポストするAPIを別途叩く必要がないみたいだ
Medium API の取得
Mediumユーザーの設定ページから
項目がなければサポートに連絡して有効化してもらう
Github issue の作成がトリガー
Code by Zapier の python 実行をアクションにする
title
content
url
にそれぞれ Github issue のデータを入れる
token には直接 Medium API Application トークンを入れる
Script
なんと format を指定すると、markdownのままポスト出来る
最初は Zapier の Formatter で Markdown to HTML 変換をしようと思ったが、必要なかった
タイトルのハッシュタグをパースして、Mediumのタグとして扱っている
# -*- coding: utf-8 -*-
import requests
import re
# Get me author id
me_api_url = 'https://api.medium.com/v1/me'
me_api_headers = {
'Authorization': 'Bearer {}'.format(input['token'])
}
me_api_res = requests.get(me_api_url, headers=me_api_headers)
author_id = me_api_res.json()['data']['id']
# Post Story
# https://github.com/Medium/medium-api-docs#33-posts
url = 'https://api.medium.com/v1/users/{author_id}/posts'.format(author_id=author_id)
headers = {
'Authorization': 'Bearer {}'.format(input['token']),
'Content-Type': 'application/json',
}
# タイトルからハッシュタグを抽出してQiita API 用に整形
title_hashtags = re.findall(r'#([^\s]+)', input['title'])
medium_tags = []
for title_hashtag in title_hashtags:
medium_tags.append(title_hashtag)
# タイトルでハッシュタグが見つからなかった時
if not medium_tags:
medium_tags = []
json = {
"title": input['title'],
"contentFormat": "markdown",
"content": input['content'],
"canonicalUrl": input['url'],
"tags": medium_tags,
"publishStatus": "public"
}
res = requests.post(url, headers=headers, json=json)
output = res.json()
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2019-02-10
Discussion