LoginSignup
5
6

More than 5 years have passed since last update.

CLIからTwitterを投稿できる様にしたい

Posted at

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最高
5
6
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
5
6