CLIからTwitterを投稿できる様にしたい
開発背景
- CLI(Command Line Interface)でTwitterを使えないかな?
- Twitter API というものがあるぞ、試そう
CLIでTwitterできれば、サーバーにアクセスしながらTwitterライフが送れる
実行環境
- OS
何でもOK. 私はMacとCentOSです - python version >= 3.7
Python実行環境を準備してください。 - Twitter API のアクセストークン
Twitter API を利用します。こちらを参考に、Developer登録してアクセストークンを取得してください。
外部ライブラリ
git に requirement.txt を用意しますが、一応記載
- tweepy
# pip install tweepy
pip はPython3ではインストールすると基本的にインストールされるはずです。
ソースコード
そのうちGitに公開用のコードを上げます。
config.py
TwitterAPI のアクセストークンを置いておきます。
以下のコードは各自のアクセストークンと置換する必要があります。
config.py
# Twitter APIを使用するためのConsumerキー、アクセストークン設定
# ツイッターの文字数制限の変更に対応させるため変数として定義
MAX_TWEET_LENGTH = 140
CONSUMER_KEY = 'XXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXXX'
post_tweet.py
コマンドラインで実行すると、プロンプトでツイートする内容の入力を求められます。
ツイートする内容が確定したら、 "EOF"(End Of File)と入力して入力を終了し、ツイートの可否を質問されますので、回答すればツイートできます。
post_tweet.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json, config
from requests_oauthlib import OAuth1Session
import sys
def post_tweet(arg_post_text):
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS)
url = "https://api.twitter.com/1.1/statuses/update.json"
tweet = arg_post_text
params = {"status" : tweet}
res = twitter.post(url, params=params)
if res.status_code == 200:
print("Tweet Success.")
else:
print("Failed. : %d" % res.status_code)
if __name__ == '__main__':
print("内容を入力してください。'EOF'と入力するまで入力を続けます。")
post_text = '\n'.join(iter(input, 'EOF'))
print('*******************************************')
if len(post_text) > config.MAX_TWEET_LENGTH:
print("【警告】入力文字数が上限値を超えています。ツイートをキャンセルします。")
sys.exit()
while True:
inp = input('本当に投稿する? yes/no >>')
if inp == 'yes' or inp == 'y' or inp == 'Yes' or inp == 'Y':
break
if inp == 'no':
print('ツイートをキャンセル')
sys.exit()
post_tweet(post_text)
今思うと、エラー処理try文にすべきだった
動かしてみる
centos7 で動かしてみる。
[root@centos twitter_app_cli]# python3.6 post_tweet.py
内容を入力してください。'EOF'と入力するまで入力を続けます。
test
tweet
desu
EOF
*******************************************
本当に投稿する? yes/no >>yes
Tweet Success.
[root@centos twitter_app_cli]#
ツイートできてる。
纏めると
- tweepy のライブラリ使ってみたかっただけ
- タイムライン表示、ふぁぼのスクリプトも作ってあるので別途紹介します
- Twitter最高