Hatena::Grouptwitter

かえるさんのめも

行儀の悪いRSSクローラー対策ですべて「続きを読む」以降に記載しています
twitter [@Frosch_Badger]

2010-01-11

Getting started ほぼ機械翻訳

| 09:05

英語のままではさっぱりわからなかったので機械翻訳を通してみました。中の人は英語偏差値が30台とかだった上にPythonどころかプログラミング未経験な人なので、正直訳文は当てになりません。

なんとなく中の人がわかればいいや。

はじめに

あなたがTweepyをはじめて触る際にまず読むべき場所です。Tweepyとセットアップし、プログラムに取り掛かれることを目標とします。ここでは基本中の基本事項についてはあまり詳細に立ち入りません。

こんにちはTweepy

import tweepy

public_tweets = tweepy.api.public_timeline()
for tweet in public_tweets:
    print tweet.text

この例ではtwitterのPublic Timelineをダウンロードして、それらのテキストのそれぞれをコンソールに表示します。上記のコード断片のtweepy.apiはtweepy APIクラスのうち、認証を必要としない例です。クラスがすべてのメソッドを含むAPIはTwitter APIにアクセスします。 このインスタンス(たぶんtwitterのPublic Timeline)にアクセスするために認証は必要ありません。それで、あなたはこのインスタンスで認証をせずにAPI呼び出しができるだけです。 例えば、したの例では失敗するでしょう:

tweepy.api.update_status('will not work!')

では、認証チュートリアルの認証についての詳細に入ります。

API

このAPIは、クラス全体のtwitterのRESTful APIメソッドへのアクセスを提供します。各メソッドには、さまざまなパラメータと戻り値の応答を受け付けることができます。これらのメソッドの詳細についてはAPIリファレンスを参照して下さい。

Model

我々がAPI方法を呼び出すとき、我々に返される大部分の時間はTweepyモデル実例です。これは、我々がそれから我々のアプリケーションの中に使うことができるTwitterから返されるデータを含みます。たとえば、以下のコードは、我々にUserモデルを返します:

# Get the User object for twitter...
user = tweepy.api.get_user('twitter')

モデルコンテナは、いくつかのヘルパーメソッドのデータとして使用できる:

print user.screen_name
print user.followers_count
for friend in user.friends():
   print friend.screen_name

詳細についてはModelsReferenceを参照してください。

2010-01-10

tweepyをいれてみた

| 09:05

今の環境は Python2.5.4 + GAE + simplejson + twython なのですが、twythonはOAuth認証ができないらしいというのを検索でちらほら見かけてしまって、たしかBasic認証って6月だか7月だかに廃止だよなあとか思い出してどうしようと。

検索をかけてたらtweepyがどうも対応してるらしいよ、というのを見かけたので導入してみた。easy installが入ってるなら下記コマンドでOKみたいです。

easy_install tweepy

後は必死にtweepy使ってbot作ってる人を検索する作業が待ってます。

2010-01-05

環境整備

| 10:18

PHPの借り物スクリプトからJavaかPythonでcronと同じ鯖で動かそう、と思って暫く悩んだのですが現状Pythonのcronが回ってるのでPythonで作ろう!と思った。ということでPythonを1から勉強することに。プログラミング自体をしたことがないので四則計算から入る感じ。

cronのためにGoogle App Engine Pythonは導入済みなので(GAEでTwitterのbotを作る のまとめページを参考に導入)、開発環境として激重のeclipseではなくpyscripterを導入。いれてるのが2.5.4なのでインストーラーが使えない(2.6系か3.0系じゃないと途中で止まる?)ので、zip版を手動インストール。Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)は事前に導入済みでした。

追加で導入-ColorConsole 元々MOONGIFT » コマンドプロンプトを便利に「ColorConsole」で見たときに1.5.1を導入していたけど、ふと思い立って公式を覗いたら1.7.1が来ていた。1.5.1の頃はcmd.exeかGAE純正アプリじゃないとローカル鯖が立ち上がってくれなかった(ColorConsoleではダメだった)ので、1.7.1でどうなってるか確認したい→1.7.1でもエラーはいてだめでした。cmd.exe使うしかないぽい

今日読むぞと思ったサイト

どちらもプログラミング経験のない学生向けの記述なので「チュートリアルを読む前段階」として頭に入れる。これが理解できてないとチュートリアルを見てもさっぱり分からない状態になると思う。

2010-01-03

Google App Engine for Pythonでbotを作る際の参考リンク

| 09:45

勉強するよ!ということでリンク先だけサルベージ

じゅんび

ど初心者でもわかる設定のしかた(Python版)
Vistaも同じように入れてOKだったが、UACの関係でprogram fles以下のフォルダにはインストールしない方がいいと思う。PythonとGAE両方にパスを通すのを忘れないこと
Google App Engineでエラーが
dev_appserver.pyを起動した際にsimplejson関連のエラーを吐いた時の対処法
Pythonのおべんきょう
プログラミング言語 Python の紹介
紹介。どんなものかまず知らないといけない気がした
プログラム言語Python
名古屋大学の物理化学研究室のサイト。講義でPythonを使ってる模様。講義を追っていく感じで文書を読み進めることができるのでプログラミング未経験者にもわかりやすい。
地球環境情報学研究室 - 専門情報処理演習(2009)
高知大学・菊地時夫教授による講義ログ。第7回以降がPythonだがこちらもプログラミング未経験者向けの講義のため、非常にありがたい。
初心者のための pygame ガイド
読んだほうがいいってどっかで見た、でもいまはまだ読んでもちんぷんかんぷん。
Python チュートリアル 日本語訳
オライリー本そのままらしいので読んでみる。まだ本買ってまで頑張るところまでいってないのでチュートリアルから。
Python チュートリアル メモ1 5章まで
Python チュートリアル メモ2 6章~最後
pythonチュートリアルを呼んだときのメモ
上記チュートリアルのさらにメモ、他の人が詰まってる=自分も確実に詰まるので補足に感謝しつつあわせて読む
プログラミング工房 > Pythonの部屋
サンプルソースコードとか、のちのちのために
つくる
Google App Engineを使ったTwitterBotの作り方
一番単純な垂れ流しのサンプル
TwitterBot on GAEにReplyさせる(その1)
replyのサンプル
TwitterBot on GAEのTwitterからのデータ取得をXMLからJSONにする
JSONでAPIを利用する方法
setを使って、twitterの片思い、片思われ、両思いを取得する
follow・followerの取得方法
GAEでTwitter botを作った
実際に稼働してるbotのサンプル・ソース
twython / examples
twythonのサンプル・ソース
その他
@IT キーワードINDEX
読み物として

2009-12-28

Google App Engine Python + PHPでbotを動かす

| 00:35

本当はJavaかpythonで動かしてやる!とか意気込んでたんですが基礎知識の無い人には無理でした。暇なときに勉強するといいんでしょうけど知人に勢いで作ると言ってしまった手前、できることなら年があける前に設置だけでもという状況だったので出来合いのものを設置することにしました。

bot本体

PHPが動く無料鯖をたまたま借りていたので、PHPで作られたものを設置して外部からcronで呼び出すことに。設置したのは下記サイトさんのモノ

phpが644でも動く鯖だったので、UTF-8N(UTF-8 BOM無し)+CRLFで保存し(LFでもいいかもしれない)、asciiでアップしてパーミッションをPHPを644・データファイルを604にしました。

replyするタイプと垂れ流すタイプを併用する場合はそれぞれのPHPを設置した上で両方を適切な時間間隔でcronで回せばいいようです。わたしはcronはGAE Pythonで回してますが、垂れ流し(60分おき)は1~2日に1回・reply(5分おき)は2~3時間に1回程度失敗しつつなんとかぎりぎり稼働してる感じです。

cronの設定に関しては前日の日記参照

2009-12-27

GAE Pythonのcron設定メモ

| 23:55

cronとかって1つのファイルに2つ以上設定をかけるらしい=GAEapp1つで結構ややこしいBotの運用もできるかもしれないということで調べてやってみた

他のサイトに有った記述を参考にしてるメモなので質問は受け付け(られ)ません。googleで「Google App Engine Python app.yaml cron.yaml」で検索すると幸せになれると思います。

参考サイト

突撃して先方にご迷惑をかけるなどはしないで下さい。わたしはgoogle検索だけで設定できましたから、わからないところは検索して調べましょう。

あとyamlでcron回す頻度とかスケジュールを決めるんですが、書き方を工夫すれば結構細かく設定できるみたいです。中の人はまだ理解が非常に浅いので、詳しくはぐぐってください。

実際の設定

下記のようにしましたよ、という忘備録

PHPを呼び出すためのpyファイル(らしい)
#!/usr/bin/env python

import urllib2
req = urllib2.Request("「botのPHPファイル」")
f = urllib2.urlopen(req)

という.pyファイルを垂れ流し/replyそれぞれ1つづつ作って、cronで垂れ流し1時間・relpy5分で回しています。


app.yaml

ここから

application: ******(GAEのアプリ名)
version: 1
runtime: python
api_version: 1

handlers:
- url: /cron/post
 script: ****.py
  login: admin

- url: /cron/reply
  script: *****.py
  login: admin

ここまで

1つ目が1時間おきに垂れ流し、2つ目がreplyに反応する方


cron.yaml

ここから

cron:
- description: post_random
  url: /cron/post
  schedule: every 1 hours
- description: reply_pattern
  url: /cron/reply
  schedule: every 5 minutes

ここまで

1つ目が1時間おきに垂れ流し、2つ目がreplyに反応する方

jobを見ているとたまに失敗していますが、そこそこ安定して回してくれてるみたいです。