##はじめに
(19日に投稿予定でしたが、14日が空いたので早めに投稿してみました。)
普段はpythonを使ってエンジニアしたり、PHPでWeb系のお仕事したりと広く浅くプログラミングやってます。
pythonでこんなことできるよみたいな紹介ができればと思います。
スクレイピングとかも面白いかなと思ったのですが、そのあたりの記事はたくさんあるしなぁとか悩んだ結果、せっかくだしQiitaAPIを触って何かしてみようと思いました。
なので今回は、QiitaAPIを使ってQiitaに自分が投稿した記事を自分のサイト(WordPress)にも投稿できるよというのを紹介したいと思います。
python始めた方向けにpythonこんなことできるよという雰囲気を味わってもらえたらいいなと思っているので、細かい部分は省きながら説明していきます。
##準備が必要なもの
今回の自動化で事前に準備が必要なのは、
1、QiitaAPIのアクセストークン
2、自分のWordPressのAPI用アカウント情報
それぞれの準備については今回の目的から外れますので参考になるサイトをそれぞれ張っておきます。
##サンプルコード
今回は解説ではなくてこんなことできるよの紹介記事になるのでサンプルコードと実際にこの記事を自分のサイトに自動投稿してみた結果をご紹介します。
import requests
import json
def main():
qiita_token = "QiitaAPIのアクセストークン"
headers = {
'Content-Type': 'application/json',
'Charset': 'utf-8',
'Authorization': 'Bearer {}'.format(qiita_token)
}
pf = PostFunctions()
r_get = requests.get("https://qiita.com/api/v2/users/QiitaのユーザーID/items/", headers=headers)
results = r_get.json()
for result in results:
article_id = result["id"]
if pf.postcheck(article_id):
pass
else:
title = result["title"]
content = result["rendered_body"]
pf.postadd(article_id)
Article2WP(title, content)
class PostFunctions():
# 既にWPに投稿されているか確認
def postcheck(self, article_id):
with open("article_id.txt", "r", encoding="utf8") as f:
id_list = [s.strip() for s in f.readlines()]
if article_id in id_list:
return True
else:
return False
# WPに投稿した記事IDを追加
def postadd(self, article_id):
with open("article_id.txt", "a", encoding="utf8") as f:
print(article_id, file=f)
def Article2WP(title, content):
user_id = "WP投稿用アカウントID"
password = "WP投稿用アカウントパスワード"
end_point_url ="https://自分のサイトドメイン/wp-json/wp/v2/posts/"
payload = {
'title': title,
'content': content,
'status': "draft",
'comment_status': 'closed',
'featured_media': アイキャッチ画像ID,
'categories': カテゴリーID,
}
headers = {'content-type': "Application/json"}
r = requests.post(end_point_url, data=json.dumps(
payload), headers=headers, auth=(user_id, password))
基本的なコードはこれだけです。
定期実行するように作ってありますので既に自動投稿した記事をテキストファイルにメモしておくようにしていますが、そのあたり不要な方は削ってしまってもきちんと動きます。
##最後に
個人的にはもう少し時間かかるかなと思ったのですが、かなり便利なAPIが双方に用意されていたのでただAPI叩いただけになってしまいました。
この記事を実際に自分のサイトに自動投稿してみましたのでどんな感じに投稿されたか気になる方は見てみてください。
Qiitaと自分のサイトに投稿したい需要があるのか分からないですが、誰かの参考になったら嬉しいです。