0
1

More than 3 years have passed since last update.

qiita の投稿からランダムで1記事選んで twitter に自動で投稿する

Posted at

2~3 年前くらいに twitter を始めましたが、とくに呟くことがないので qiita の記事をテキトーに投稿する bot 化させることにしました。
手始めにまずは、qiita の投稿からランダム1件記事を取得して twitter に投稿するスクリプトを python で書いてみます。

qiita から記事を取得

まずは qiita へ投稿した記事の中からランダムに 1 件取得するスクリプトです。投稿を取得する処理は以前に記事にしたことがあるので、そちらを参考にして作っていきます。
https://qiita.com/kiyo27/items/e444c257ce7026c4572b

qiita.py
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 keyaccess token などが必要になってきます。各キーの取得はTwitter Application Managementから行えます。

tweet.py
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)

スクリプトが用意できたら、ターミナルから python tweet.py と入力してツイートできていれば完成です。
tweet.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1