2~3 年前くらいに twitter を始めましたが、とくに呟くことがないので qiita の記事をテキトーに投稿する bot 化させることにしました。
手始めにまずは、qiita の投稿からランダム1件記事を取得して twitter に投稿するスクリプトを python で書いてみます。
qiita から記事を取得
まずは qiita へ投稿した記事の中からランダムに 1 件取得するスクリプトです。投稿を取得する処理は以前に記事にしたことがあるので、そちらを参考にして作っていきます。
https://qiita.com/kiyo27/items/e444c257ce7026c4572b
import urllib.request
import json
import os
import random
API = 'https://qiita.com/api/v2'
def send_request(url):
req = urllib.request.Request(url)
req.headers = {
'Authorization': 'Bearer ' + os.environ['TOKEN']
}
with urllib.request.urlopen(req) as response:
return json.loads(response.read().decode('utf-8'))
def get_article_ids(user, page=1, per_page=20):
url = f'{API}/users/{user}/items?page={page}&per_page={per_page}'
decode = send_request(url)
ids = []
for s in range(len(decode)):
ids.append(decode[s]['id'])
return ids
def get_article(id):
url = f'{API}/items/{id}'
decode = send_request(url)
return decode
def get_random_article(user):
ids = get_article_ids(user)
l = len(ids)
i = random.randint(0, l - 1)
article = get_article(ids[i])
return article
if __name__ == "__main__":
get_random_article()
ランダムに 1 件取得する処理ですが、全投稿の中からではなく今のところ per_page
で記事数を限定した中で取得しているので、ここが今後の課題です。ひとまずはこれで進めます。
tweepy インストール
python でツイートするために便利な sdk を利用します。こちらのページで sdk とか tool が紹介されています。今回は tweepyを使用してみます。
pip install tweepy
twitter に投稿
sdk をインストールしたら、qiita から取得した記事をツイートする処理を書いていきます。 Twitter API を使用するにあたっては、 consumer key
や access token
などが必要になってきます。各キーの取得はTwitter Application Managementから行えます。
import tweepy
import qiita
import os
consumer_key = os.environ['CONSUMER_KEY']
consumer_secret = os.environ['CONSUMER_SECRET']
access_token = os.environ['ACCESS_TOKEN']
access_token_secret = os.environ['ACCESS_TOKEN_SECRET']
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
user = 'kiyo27'
article = qiita.get_random_article(user)
message = article['title'] + "\n" + article['url']
api.update_status(message)