ラベル 卒プロBOT の投稿を表示しています。 すべての投稿を表示
ラベル 卒プロBOT の投稿を表示しています。 すべての投稿を表示

2011年11月27日日曜日

twitterBOTの作成③

タイムゾーンを東京(GMT+09:00)に直す。

datetime.datetime.now()はタイムゾーンを引数にとれるみたい。でも引数がちょっと面倒。

以下を参考にさせていただきました。

Pythonでタイムゾーンを扱うメモ « taichino.com
http://taichino.com/programming/1876

タイムゾーンが設定できたところでdatetime.datetime(2012,1,21) - datetime.datetime.now(JST())をすると今度はnaiveがどーたらこーたら。

今度は以下を参考にdatetime.datetime(2012,1,21)の引数にtzinfo=JST()を加える。

あるエンジニアの不定期勉強記録
http://abalone.ununu.org/archives/705



できました。この画像からはよくわかりませんが…。

現在のsotsuprobot.py

[sourcecode language="python"]
# -*- coding: utf-8 -*-
import twitter
import datetime

api = twitter.Api(
cache = None,
consumer_key = '****',
consumer_secret = '****',
access_token_key = '****',
access_token_secret = '****')

# タイムゾーンの設定
class JST(datetime.tzinfo):
def utcoffset(self, dt):
return datetime.timedelta(hours=9)
def dst(self, dt):
return datetime.timedelta(0)
def tzname(self, dt):
return 'JST'

# 残り時間の算出
teisyutsubi = datetime.datetime(2012,1,21,23,59,tzinfo=JST())
ima = datetime.datetime.now(JST())
nokorijikan = teisyutsubi - ima

# tweet
text = u"現在時刻"+ str(ima) + u" 卒プロ成果登録締め切りまで あと" + str(nokorijikan.days) + u"日 #sfc_sotsupro"

api.PostUpdate(status=text)
[/sourcecode]

cron.yaml

[sourcecode language="text"]
cron:
- description: tweet
url: /sotsuprobot
schedule: every 3 hours
timezone: Asia/Tokyo
[/sourcecode]

[twitter-follow screen_name='sotsupro2012' show_count='no']

twitterBOTの作成②

今日はBOT用アカウントを作成してアプリを刺してGoogleAppEngineで自動的に実行させる。

まずBOT用アカウントを作成。これは一般登録と同じ。同じメールアドレスは使えないんだね。昨年のBOT名を参考にしたら卒論じゃなくて卒プロでした。

次にBOT用アカウントにログインした状態で前回oauth2認証に使ったPythonを実行する。すると別のAccess tokenとAccess token secretが取得できる。

GoogleAppEngineに載せる。

以下を参考にさせて頂きました。

ほげおメモ: Python Twitter API python-twitter の使い方 (Part4): Google App Engine
http://blog.hogeo.jp/2011/06/python-twitter-api-python-twitter-part4.html

twitter.pyやhttplib2/やoauth2/は/Library/Python/2.7/site-packagesからコピーしたりPython-twitterをインストールする際にダウンロードしたフォルダからコピーしたり。

cron.yamlはとりあえず2分毎にツイートするように設定。これらを同じフォルダに格納。

GoogleAppEngineLauncherを起動してメインメニュー>「File」>「Add Existing Application」でフォルダを追加。あとhttps://appengine.google.com/で保存?するアプリケーション?を作成。「Deploy」



いろいろあったけどとりあえずこれで2分おきに発言するBOTができました。

Deploy中にいろいろいじるとDeployされなくなってしまうので、そのときはDeployしてる上のフォルダにいってrollbackする。

アプリをappcfgでrollbackせよ - CaMiL
http://d.hatena.ne.jp/beso/20110521/rollback

appcfg.py rollback /フォルダ名 でよかったはず。

結果がこちら。



タイムゾーンがおかしくなってる…。GoogleAppEngineは米国のサービスだからか。

つづく

2011年11月26日土曜日

twitterBOTの作成

そうだ、卒業論文提出日までの日数を自動で発言するtwitterBOTをPythonで作成すれば勉強になるんじゃないかと思って。

Pythonでtwitterを扱うPython-twitterのインストールは以下。

Python Twitter のインストール
http://www.yukun.info/blog/2011/03/python-twitter-install.html

コードの作成はほとんど以下を参考にさせていただきました。

ほげおメモ: How to make Twitter Bot by Python (Part 1) python-twitter
http://blog.hogeo.jp/2011/05/how-to-make-twitter-bot-python-twitter.html

part1~5まであります。part1はなぜか英語なのでTwitter API ポケットリファレンス (POCKET REFERENCE)も参考にしました。

[sourcecode language="python"]
# -*- coding: utf-8 -*-
import twitter
import datetime

api = twitter.Api(
consumer_key = '****',
consumer_secret = '****',
access_token_key = '****',
access_token_secret = '****')

teisyutsubi = datetime.date(2012,1,21)
kyou = datetime.date.today()
nokorijikan = teisyutsubi - kyou
text = u"卒業論文提出日まで あと" + str(nokorijikan.days) + u"日"

api.PostUpdate(status=text)
[/sourcecode]