#daiizメモ

Scrapboxに夢中

cygwin から tweet してみた

メモ形式で失礼します。

Cygwin とは

Cygwin(シグウィン)は、Windowsオペレーティングシステム上で動作するUNIXライクな環境の一つである。 フリーソフトウェアである。(Wikipediaより)

これをWindows PCにインストールしておくと、Mac OSなどに付いている黒い画面で高機能なターミナルに似たものを使えるようになります。今回の目的を達成するために、これに Python をインストールしておきます。

pip をインストールする

以下のコマンドを実行して、Cygwinpython用のパッケージを管理するためのpipをインストールします。

easy_install pip

1分ほどでインストールが完了します。

requests-oauthlib をインストールする

requests-oauthlib は、TwitterOauth認証周りをこなしてくれるとてもありがたいライブラリです。pipを使ってこれをインストールします。以下のコマンドを実行すればOKです。

pip install requests requests_oauthlib

つぶやくための鍵をもらう

プログラムから Twitter につぶやきを投稿するときは、基本4種類のキーが必要です。所有している適当なツイッターアカウントでログインして https://apps.twitter.com/ にアクセスします。ページの指示に従ってアプリ登録をして、Consumer KeyConsumer SecretAccess TokenAccesss Token Secert をそれぞれコピーして控えておきます。(外部に漏らさないように注意して管理します)

Pythonスクリプトを書く

以下の Pythonスクリプトを書いて、例えばpiyo.pyのような名前で保存します。プログラム中の4種類のキーの部分には、先ほど取得した適切な値を与えてください。

# -*- coding: utf-8 -*-
# piyo.py

from requests_oauthlib import OAuth1Session
import sys

ConsumerKey = ''
ConsumerSecret = ''
AccessToken = ''
AccesssTokenSecert = ''

# ツイートを投稿するためのURL
url = "https://api.twitter.com/1.1/statuses/update.json"

# ツイートの本文
argvs = sys.argv
reply = ""
txt = argvs[1]
if len(argvs) == 3:
    reply = "@{}".format(argvs[2])

tweet = "{} {}".format(reply, txt)
q = {"status": tweet}

# OAuth認証で POST method で投稿
twitter = OAuth1Session(ConsumerKey, 
                        ConsumerSecret, 
                        AccessToken, 
                        AccesssTokenSecert)
req = twitter.post(url, params = q)

# レスポンスを確認
if req.status_code == 200:
    print ("Congratulations!")

つぶやく

リプライを付けないで普通につぶやくためには、

python piyo.py "Hello, world!"

のようにします。リプライを付ける場合は次のようなコマンドになります。

python piyo.py Hey! ユーザー名

「ユーザー名」は半角で書き、「@」を含めないことに注意してください。

実際につぶやいてみたときの写真です。

f:id:daiiz:20150126021233p:plain


投稿が完了するまでの時間が結構長いので、残念ながら、日常で使うには少し辛いかもしれません。改良を加えながら用途はこれから考えようと思います。

参考ページ