pythonでtwitterのbotを作る

目次

  1. コードを置いておくフォルダを作る
  2. 書いて、試す
  3. 定期的に実行する
  4. 遊び方無限大

コードを置いておくフォルダを作る

面倒なのでC直下にコード置き場を作る。(あんまりいいことじゃない)
コマンドプロンプトで以下のコマンドを実行する。

mkdir c:\python

作ったフォルダに移動しておく。

cd c:\python

このコマンドプロンプトは後で使うのでとっておく。

書いて、試す

まずは基本的なコードを書いてみる。
先ほど作ったc:\pythonの下にtest.pyというファイルを作成して以下のコードを書く。
usernameとpasswordの部分はtwitterアカウントのユーザidとパスワードを入れます。

import twitter
api = twitter.Api("username","password")
api.PostUpdate("I am giiku")

保存したら、先ほどのコマンドプロンプトで以下のコマンドを実行。

python test.py

twitterを確認して、恥ずかしいポストがされていれば成功です。
恥ずかしいポストをしたくないかたは、PostUpdate("I am giiku")の「I am giiku」のところを好きな言葉にしておいてください。ただし半角英数に限る。
日本語を扱う方法は後で。

複数ある発言候補から一つ選んでポストする。

test.pyを変更する。

import twitter
import random
list = [
	"naitomea"
	,"daakunaito"
	,"rusifaa"
	,"jiendo"
]
post = random.choice(list)
api = twitter.Api("username","password")
api.PostUpdate(post)

こんな感じ。"naitomea"の前にある空白はTabなので、Tabキーを一回押して入れる。pythonはTabが意味を持つのだが、詳しい話は他で調べてください。
やっぱり保存してコマンドプロンプトに以下を打ち込む。

python test.py

また恥ずかしいポストがされていたら成功。調子に乗って何回も実行すると、お前のタイムラインの闇の力が濃くなって最強になる。連続して実行しても反映されないときがあるが、それはtwitterの仕様で「同じ文面のポストは連続して投稿できない」というのにひっかかっている。listの中からランダムでポスト内容を選んでいるため、同じ文面が続けて出てしまう可能性があるからである。回避する方法はある。面倒だから書かないけど。

定期的に実行する

さて、とりあえず「用意した発言内容リストからランダムで選んでポストする」プログラムが出来た。しかし、このままでは手動で実行しない限り動かない。手動botである。それではbot作成者の方は一日中PCに張り付いて定期的にプログラムを実行しているのだろうか?当然違う。自動で定期的に実行してくれるツールがある。
unix/linux等ならcronというものがあるし、windowsにもatというものがあるが、ここは一つpycronを使ってみようと思う。
pycron
メニューの「Item」から「New」を選ぶと新しい予定作成画面が出る。
f:id:Number6:20090816005825p:image
ここに実行させるプログラムと実行させる時間を設定すればいい。
pythonをインストールした場所:C:\python26
自分で書いたコードの場所:C:\python\test.py
実行させたい時間:1分毎
だとすると以下の感じで良い。
f:id:Number6:20090817164114p:image
ここで入力内容が正しいか確かめるために「Test executior」をクリック。
一瞬DOS窓が出て以下のダイアログが出ればオッケー。何も出ない場合は間違っているので見直そう。
f:id:Number6:20090817164115p:image
これでOKを押すとタスク(実行予定)が出来る。次にこれを設定ファイルとして書き出す。
メニューの「File」から「Save」を選ぶ。おめでとう!これで貴方のタイムラインは一分ごとに暗黒の力に包まれます!

と、とりあえずここまで。

twitterbotに必要な要素。「適当なことを自動でつぶやく」が完成しました。次回は「やらせたいことを実現させるにはどうしたらいいか」をちょっとずつやっていきます。

遊び方無限大

参考資料 - python-twitterのドキュメント
Python: module twitter
やりたいことが出てきたら読めばいいので、今は読まなくてもいい。