月別アーカイブ: 2015年9月

さくらのレンタルサーバーをTwitter botにしてみたよ

やったこと

さくらのレンタルサーバー(スタンダードプラン)で自分が書いたPythonのプログラムを用意し、決まった時間に実行することでつぶやくTwitterbotをつくってみました。

ちなみに、自分のTwitter用のPythonプログラムが無いよっていう方はこちらを見てもらうといいかも。簡単につぶやけます。デベロッパー登録についてとかもメモ書きしてあります。http://frontier-of-curiosity.org/wordpress/2015/08/29/twythonで遊ぼう%E3%80%80その1/

 

ここからはターミナルを使ってサーバーにSSH接続して作業します。

Twythonをサーバーにインストールする。

サーバー上でPythonを実行する環境は整っているんですが、外部のライブラリを使うための準備が必要となります。ということでPythonように便利なTwitterライブラリのTwythonの力を借ります。手持ちのパソコンだとeasy_installですぐインストールできてしまうのですがレンタルサーバーだと勝手が違うようです。ということで頼れるサイトはこちらです。

http://emptypage.jp/notes/sakura-python.html

1 ライブラリ用のディレクトリを作成する

最初にターミナルから下記のように自分のローカル環境用にライブラリを置く場所を用意してあげます。ターミナルから以下のコマンドを叩きます。

mkdir -p ~/.local/lib/python2.7

することこんな感じになります。

/home/自分のオリジナルドメイン/.local/lib/python2.7/site-packages/(※このディレクトリにライブラリのパッケージがいろいろインストールされる。)

 

2 easy_installのための設定ファイルを用意

.pydistutils.cfg という名前をホームディレクトリに用意することでeasy_installにどこにライブラリをインストールすればいいかを教えてあげます。これはviかemacsで作ってあげれば大丈夫です。

[install]
user=1

 

3twythonをインストールする。

さくらのレンタルサーバーではsudoが使えないみたいなので以下のようにしてインストールします。面倒なことはすべてパッケージ管理ソフトがやってくれます。

easy_install twython

 

インストールがうまくいけば、ターミナルからの作業は終了です。

 

ここから先は、さくらのコントロールパネルでの作業です。

サーバーにCRONの設定を教えてあげる。

http://shantiworks.info/2012/07/15/さくらインターネットレンタルサーバでcron設定を/

1自分の作ったプログラムのディレクトリを控える。

/home/自分のドメイン/~自分のプログラムが置いてある場所

 

2レンタルサーバーのコントロールパネルにアクセスしてCRON設定を開く

実行コマンドのところにパスをいれます。自分の場合はpythonなので以下のようになりました。

cd /home/自分のドメイン/~自分のプログラムが置いてある場所 ; /usr/local/bin/python 自分のプログラム.py

 

3実行の時間を指定してやる

CRON設定は日時やタイマーを細かく設定できるのでbotを発動したい時間とかを設定してあげればいいと思います。

 

 

僕は、Yahoo.comから天気予報を使って毎朝つぶやくbotを作りました。毎朝Twitterのチェックと天気のチェックが両方できてしまうので結構重宝しています。

アイデア次第でいろいろな用途がものができると思いますのでさくらのレンタルサーバーやっている皆さんも是非試してみてください!


Twythonで遊ぼう その2

前回の投稿に引き続き今度はTwythonのDocumentを見ながら検索してみたり、タイムラインの情報を取得してみようと思います。

導入編のTwythonで遊ぼう その1はこちら

そしてTwythonからTwitterのApiをいじいじする練習をしてみます。

TwythonのDocumentationはこちらにあります。

https://twython.readthedocs.org/en/latest/api.html#core-interface

 

1 search(**params)をやってみる。

ということで検索のAPIをやってみたいと思います。

TwythonのDocumentationをクリックするとTwitterのAPIのページに飛びます。search(**params)のから飛ぶのはこちら

リンク先で確認するべきはPrametersの項目です。

例えば、qを見るとrequiredと書かれています。これはAPIを使うときに必ず必要になるよ。という意味です。Example Valuesを見るとどうやら検索したい単語を入れるみたいです。

今回は、countの項目も使ってみようと思います。これは検索して返って来る結果の個数を指定できます。デフォルトの場合は15個まで結果を返してくれます。

というわけでTwythonのexampleを書き換えてみましょう。

こちらがオリジナル。

from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
    search_results = twitter.search(q='WebsDotCom', count=50)
except TwythonError as e:
    print e

for tweet in search_results['statuses']:
    print 'Tweet from @%s Date: %s' % (tweet['user']['screen_nam\
                                       e'].encode('utf-8'),
                                       tweet['created_at'])
    print tweet['text'].encode('utf-8'), '\n'

自分が勉強用に書き換えたのはこちら。

#coding: UTF-8
from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1

APP_KEY=''
APP_SECRET=' '
OAUTH_TOKEN=''
OAUTH_TOKEN_SECRET=''

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
    search_results = twitter.search(q='ドラゲナイ', count=100)
except TwythonError as e:
    print e

statuses_list = search_results['statuses']

for num in range(0, len(statuses_list)):
    text_in_tweet = statuses_list[num]
    print text_in_tweet['text']

qのところに自分の調べたい単語を入れて実行するといろいろと楽しめるんじゃないかとおもいますので是非試してみてください。

 

2 get_home_timeline(**params)をやってみる。

さてAPIいじりの練習をもう一度やってみましょう。今度は自分のタイムラインを表示してみましょう。コメントには私のメモ書きが入っています。

#coding: UTF-8
from twython import Twython, TwythonError
import json

APP_KEY=''
APP_SECRET=''
OAUTH_TOKEN=''
OAUTH_TOKEN_SECRET=''

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    #自分の画面に表示されるタイムラインを取得する。
    #countには取得するTweetの上限数を決めることができる。パラメータ設定しない場合は、デフォルトで20個が返ってくる。
    #最大で指定できるのは200まで
    #返ってくるリストを格納
    user_timeline = twitter.get_home_timeline(count = 200, exclude_replies = 'true')
except TwythonError as e:
    print e

#取得してきたツイートの数をカウントする。
print len(user_timeline)

#帰ってきたリストの最初から最後までの数を発生させる。
for num in range(0, len(user_timeline)):
    #リストの中から一つずつ要素を取り出す。
    text_of_tweet = user_timeline[num]
    #要素からテキストの部分を取り出して表示する。
    print text_of_tweet['text']

 

3 まとめ

Twythonの扱い方としては、まずDocumentationで自分の扱ってみたい関数を調べて、twitterのAPIに飛びます。

そして、使いたい関数が必要とするParametersを調べて適切なvalueを与えてやることで自分の必要とする結果を得ることができます。