Hatena::Grouptwitter

かえるさんのめも

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

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-04

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

| 09:16

Javaは後回しにしてしまったけどそのうち触ることになると思うのでリンク先だけサルベージ

最低限必要なもの

  • JDK 6 Update 17
  • Eclipse IDE for Java EE Developers
  • Google App Engine for Java
  • GAEのアカウント
  • Twitter4J
インストールまで
GAEでTwitterのbotを作る のまとめページ ど初心者でもわかる設定のしかた(Java版)
入れた順番はJDK 6 Update 17→Eclipse IDE for Java EE Developers(展開してみたら3.4系だった)→ Pleiades 1.3.1(iniは3.4x系のもの)→JStyle(Eclipse 3.4.2 用)→Google App Engine for Java
Javaのおべんきょう
とほほのJava入門
最終更新が2005年なので1.4とかの頃かも。
【改訂版】Eclipseではじめるプログラミング
JRE6+Eclipse3.4での解説、bot作成環境に一番近い初心者向け解説かもしれない
実際に作る
陽昇れども地の底に光届かず 「GAE + Twitter4J + Java」 によるbotの作り方
非常に詳しい。
その他
@IT キーワードINDEX
読み物として

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-30

PHPで自動follow/unfollow

| 19:15

手動でやる気力はきっと無いのと勉強を兼ねて調べている。現状PHPで動くソースを借りてきている状態なので、参考になるのは下記のサイトあたり。

でも本当は1から自分できちんと打ちたい。せっかくGAEがJavaもPythonも入ってる状態なので(どっちもcron回すために入れてしまった)、2010年は勉強してbot作れる程度にはモノにしたいなと思う所存。が、HTMLしかやったことが無いのでどう手をつけていいか分からない。

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を見ているとたまに失敗していますが、そこそこ安定して回してくれてるみたいです。

2009-12-26

帝国兵Bot(スタップさん)仕様書

| 06:57

@Staaaaaapp_bot 帝国兵Bot(スタップさん)

The Elder Scrolls IV : OBLIVION(オブリビオン)の名物NPCであるImperial Guard(通称スターップ)のBotです。Google App Engine forJava上で動作する「charactorbot」で動いています。(以前はプログラミングができなくても作れるTwitter botの作り方で配布されているPHPファイルを利用して、Google App Engine for Pythonのcronで回していました)

PC版では自己責任になりますが日本語化も可能ですし、コンシューマ版もGOTY版が出ていますので、是非元ネタのゲームも遊んでいただけたらと思います。

中身

通常post約120分おき、reply間隔約3分
postは通常post 250種前後、reply 100種前後。OBLIVION本編・Shivering Isles・Knights of the Nineに関するネタバレを含みます。

台詞はOblivion 日本語化 Wikiのダイアログ日本語訳の一部と、以前ネタを募ったものを利用させていただいています(下品ネタもいただいたものです)。
日本語化 Wikiではダイアログの和訳はHTMLで閲覧できるようになっているため、ingameでの台詞の調査は行っていません。そのため一部それはGuardと関係ないだろうというものが含まれている可能性があります。

PS3版・Xbox360版と台詞・雰囲気等が異なるとのご指摘をいただきますが、仕様です(PC版の日本語訳は有志が行ったものですが、PS3・360版はスパイクが日本語化を行っているため)。ご了承ください。

 

replyについて

  • RT・QTを含むreplyには返信を行いません
  • replyでお名前を呼ぶことがあります
  • API上限に引っかかったりcronが失敗すると、黙ったり返事がなかったりします。cronが失敗すると(仕様上)確実に取りこぼします
  • twitter高負荷時(年末年始や世界的なイベント時など)にはAPI鯖に接続できずpostもreplyもできなくなる場合があります
  • Google App Engineの高負荷時にもpost・replyができなくなる場合があります
  • 同一IDへのreplyは2~3回で止まるようです。replyが止まったと思ったら間を空けてみてください(別IDの方へreplyするまでreplyは再開されません)
  • botスクリプトを変更したため、bot自身がフォローしていないアカウントへの返答は出来なくなりました
    • フォローバックは24時間ごとに行う設定になっています
    • 個人的にはfriends_timelineではなく、mentionに反応させたい(botにあまりフォローさせたくない)のですが、ソース変更箇所を探す時間も無いので仕方なく…というのが現状です

定形返答を返すキー単語
  • 逮捕に抵抗する
  • 服役する、牢獄に入る、牢屋に入る
  • 罰金を支払う、罰金を払う
  • 逃走する、脱走する
  • いいこいいこ、いい子いい子
  • たすけて、助けて
  • Gray Fox、グレイ・フォックス、グレイフォックス
  • たまねぎ、タマネギ
  • 泊まる場所(泊まれる場所)を聞く(きく、聞きたい、ききたい)
  • 店の場所を聞く(きく、聞きたい、ききたい)
  • ギルドの場所を(きく、聞きたい、ききたい)
  • 街(町、都市、この場所)について聞く(きく、聞きたい、ききたい)
  • 噂話をする(聞く、きく、聞きたい、ききたい)
  • ここ(ココ、此処)はどこ(ドコ、何処)
  • 今(いま)何時(なんじ) ※時刻を返しますが鯖に設定されている時刻なので正確ではないかもしれません
  • 俺の下でAGAKE ※非常に下品な言葉を発する場合があります

 

リムーブ時のお願い

  • ブロック→ブロック解除でBotからのフォローを外すことができますので、Botに飽きてフォロー解除する際にはBotからのフォローを外す作業も併せてお願いいたします

 

企業アカウント・ショップアカウント・TESシリーズとは関係のないbot等に対する対応について

 基本的にキャラクター系のネタbotは個人でお楽しみいただくもの・お仕事中用のアカウントでのキャラクターbotフォローはあまり望ましくないものだと考えておりますので、それに則った対応をさせて頂いています。ご理解ください。

 TESシリーズ以外のbotに関しても、リプライ暴走などが懸念されるため一律ブロックしています。

  • アフィ垢(宣伝行為・売名行為を目的としてのフォロー)は確認出来次第spam報告しています
  • 企業垢やショップ垢(ID・bio・ユーザー名に店名や会社名が入っているアカウント)はブロックしています(宣伝・売名目的でないとしても判断が付きにくいため)。申し訳ありませんが、会社やショップに関することが記載されていない個人用のアカウントをご用意ください(難しい場合は、replyで遊べなくはなりますが非公開リスト(自分以外には見えないリスト)のご利用をお勧めします)
  • リプ暴走を防ぐためTESシリーズ以外のbotもブロックしております。中の人がいるアカウントで遊んでください
  • post0で大量フォローをしているアカウントにつきましてはアカウント売買用である場合が多いとのことですので、フォロー中一覧を確認した上で判断させて頂きます

 

その他

  • 今後のpost語句拡張についてはあまり期待をしないで下さい
  • 最低限のメンテナンスは行いますが、迅速な対応は出来ない可能性が高いです。ご了承ください
    • 宣伝行為・売名行為を目的としてのフォローへのSPAM報告についてはこの限りではありません
  • 311クラスの大災害時などは極力それに沿った対応はしますが、中の人が無事ではない場合などは必ずしも対応ができない場合があります。ご理解ください

 

中の人

中の人にご用がありましたら下記のいずれかへ

twitter(@Frosch_Badger)宛にご連絡いただくのが一番確実です。非公式RTはミュートしておりますので、通常のリプライ(「@Frosch_Badger」で始まる書式)でお願いします。
その他は極力1~3ヶ月に1回位は確認するようにしておりますが、中の人の目には入らない可能性が高いです。
なお、すたっぷさん宛に直接reply・RTされても対応はできませんのでご了承ください。