トップページ⇒php
982コメント309KB

【Twitter】 BOT製作支援スレ part2

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/01/18(月) 23:18:42ID:wnXKZf+j
前スレ
http://pc11.2ch.net/test/read.cgi/php/1254028559/
0653nobodyさん2010/08/04(水) 01:21:07ID:???
spamにフォローされてブロックする理由が分からん。
ほって置いても害ないだろ
0654nobodyさん2010/08/04(水) 01:27:17ID:???
荒れたbotと判断されてしまうことがあったりする
0655nobodyさん2010/08/04(水) 04:00:59ID:???
>>653 TL上の語句に反応させてるからそのbotの主旨を理解してるフォロワーに返信出来る可能生が下がる
0656nobodyさん2010/08/04(水) 19:07:08ID:???
しゅうまい型だとすごく邪魔
0657nobodyさん2010/08/05(木) 04:18:30ID:???
すみません、EasyBotterのことで質問させてください。
使用しているバージョンと環境などは以下の通りです。

【バージョン】EasyBotter2.04beta
【設置鯖名】@pages
【PHPのバージョン】PHP5
【実行】GAEcron

普通の投稿は手動でも、cornを使った自動でもできるのですが、reply_pattern.php
がうまく作動しません。reply_pattern.phpファイルの中身を編集していない状態で
サーバーにファイルをUPし、おはよう、こんにちは などと入れて@で送ると、手動
及び時々自動でリプライされます。
しかしreply_pattern.phpの中身を編集し(お疲れさま、ただいまなど)の語彙を増やし
それに対するリプライの文章を入力すると、ほぼ決まってエラーが出ます。
おそらく編集のさい、何らかの間違いをしていると思うのですが、EasyBotterのサイト
の説明を読み、気をつけて編集しているつもりなのですが半日以上やっても改善できす
悩んでおります。
reply_pattern.phpを編集する際は、こういうエディットソフトを使ったほうが良い
とか、この点が初心者は間違いやすい、などアドバイスを頂けたら有り難いです。
よろしくお願いいたします。
0658nobodyさん2010/08/05(木) 09:41:54ID:???
>>657
似た症状の人がいて、その人は保存のときの文字コードを
UTF-8→UTF-8Nにしたら直ったけど、エディタによっては
UTF-8Nがないものもあるんで、まあ一例として。
0659nobodyさん2010/08/05(木) 20:51:02ID:???
>>658
回答ありがとうございました。本当に困っていたので助かります!
教えて頂いたとおり、UTF-8Nのあるエディットフリーソフトをダウンロードして、
UTF-8→UTF-8Nに変えたら以前より明らかにエラーが少なくなりました。
まだ完全にエラーが出なくなったわけではないですが、自分で編集したリプライ
文章が手動で返ってくる状態にまで改善されました。
時々でるエラーは、多分、自分の記入の仕方に問題があるのだと思うので
少しずつ修正しつつ、自動リプライ目指してねばってみます。
ご回答ありがとうございました。大変助かりました。
0660nobodyさん2010/08/06(金) 11:16:32ID:???
リプライをGAEで回してるんだけど、今日やたらと多重リプライとばすようになった
GAEのダッシュボードのとこ(グラフ)みたら数時間前からいつもの倍くらいに
跳ね上がってるんだけど…ウチだけか?;;
0661nobodyさん2010/08/06(金) 14:37:17ID:???
たしかに今日やけに多重リプしてるbotが目につく
うちのはGAEだが今のところ無事
0662nobodyさん2010/08/06(金) 16:02:24ID:???
多重リプライもだが、普通のつぶやきも同時に2回とか3回ポストするときがある…
0663nobodyさん2010/08/06(金) 16:03:31ID:???
ウチは3、4時間前ぐらいに多重リプライ現象が起きたけど今は直ってる。
0664nobodyさん2010/08/06(金) 18:38:32ID:???
Twitterのご利用にあたり、「フォロワー増加」などのために
自動ツールを使用することはルール違反となり、アカウントが凍結となります。
使用されないようご注意ください。以下ご参照ください。「フォローのルール」 http://bit.ly/b0Mdqx
http://twitter.com/twj/status/20453308312

自動フォロー返しはセーフかね?
0665nobodyさん2010/08/06(金) 19:09:38ID:???
セーフじゃない?
0666nobodyさん2010/08/07(土) 01:04:16ID:???
8月に入ってもまだアイコン直らないのか
0667nobodyさん2010/08/07(土) 03:43:52ID:???
>>660
うちのbotのログを見たら、cronが同時に2つ実行されてた
0668nobodyさん2010/08/07(土) 08:30:29ID:???
pyyhonで作ったbotをGAEで動かそうと思うのですが、まずは
↓ここを参考に、というかほぼそのまま動かそうとしています。 
http://blog.mudaimemo.com/2010/03/google-app-engine-twitteroauth.html

キーやトークンの設定はうまく行って、cron jobsで見る限りon time Successに
なっています。また、logsでは200が返ってきています。ここで見る限り上手く
動いているようなのですが、何故か一切ツイートされません。
文字エンコードもUTF-8で行っています。情報が少ないかも知れませんが、
解決法、もしくは確かめるべきことなど教えて頂けないでしょうか。
なお、pythonは2.6、App Engine SDKは1.3.5です。よろしくお願いします 。
0669nobodyさん2010/08/07(土) 11:52:18ID:???
>>668
application = webapp.WSGIApplication([('/tweet', TweetHandler)], debug=DEBUG)
ここでdebugモードにしちゃってるから、例外がフレームワークに捕捉されてるんじゃないの?
cronに設定したアドレスをブラウザで開いてみれば、どこでエラーが出ているのか
ログが見れると思う。
0670nobodyさん2010/08/07(土) 15:08:52ID:???
>>669
返答ありがとうございます。なるほど、debugモードになっているんですね。
http://(application-id).com/tweetをチェックしましたが、何もログは出ていないようです。
この場合、通常モードにするにはどう指定すればいいでしょうか。debug=falseではダメなようでした。

ちなみに、以下のアドレスのものも試してみました。
http://yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html

http://(application-id).com/cron/updateを見ると、debug=trueでは検索した内容が
表示されますが、debug=falseでは常にThere are no tweets recently tweeted, so tweet the oldest tweet.
と表示されるだけでやはりツイートされないようです。

実は他の言語は少しは分かるんですが、webプログラミングは全く分からないので
要点を抑えきれていないかも知れませんが、よろしくお願いします。
0671nobodyさん2010/08/07(土) 17:48:15ID:???
>>670
client.make_requestの戻り値でGAEのurlfetchのResponse Objectが返されるはずだから
それでエラー返ってないか確認する。

軽くコードを追ってみたけど、このライブラリだとtwitterのレスポンスは確認してないね。
そのライブラリに拘りがなければ、tweepyとか使った方がいいと思う。
0672nobodyさん2010/08/07(土) 19:14:03ID:???
>>671
すみません、実際のところソースの中で何が起こってるか半分も
理解していないのでclient.make_requestの戻り値の取得の仕方を具体的に
教えてもらっていいでしょうか…ソース中のclient.make_requestの後にprint文
仕込むとかそういう感じですか?それともGAEのダッシュボードから確認出来ますか?
0673nobodyさん2010/08/07(土) 20:37:05ID:???
>>672
printすると、ブラウザ向けの出力になるので、ダッシュボードから確認するには
import loggingしておいて、

result = client.make_request(省略)
logging.debug(result)
0674nobodyさん2010/08/08(日) 05:45:13ID:???
>>673
やってみました。
<google.appengine.api.urlfetch._URLFetchResult object at 0x8fc5dc3372a08600>
となっています… twitterのレスポンスを返すライブラリに変更した上で、ということでしたか?
頼り切りで申し訳ありません。
0675nobodyさん2010/08/08(日) 17:05:36ID:???
>>674
それだと分からないので
logging.debug(result.status_code)
logging.debug(result.headers)
logging.debug(result.content)
このあたりで。

正直、こんなことするくらいなら、tweepyとか使った方がいいよ。
0676nobodyさん2010/08/08(日) 18:41:29ID:???
うーん… 先に言ったようにほとんどブラックボックスで扱って
python勉強せずにbotつくろうと思ってたので…ライブラリ変えたら
結構いじらないとだめですよね?

おっしゃったとおり追加すると、401が返ってきてました。

{'status': '401 Unauthorized', 'x-google-cache-control': 'remote-fetch', 'set-cookie'以下略
{"request":"/statuses/update.json","error":"Could not authenticate with OAuth."}

結局このへんのトラブルを解決するのにpythonそのものの知識が必要そうなので
少し勉強したらおすすめしてもらったライブラリに変えるのを検討してみます…
06776762010/08/08(日) 23:59:47ID:???
すみません…上のエラーを受けてキーやトークンの設定を見なおしてみたところ、
何故か以前取った時と変わっていました。リフレッシュなど押していないはずなのですが…
キーやトークンの設定はうまくいった、というの自体が200が返ってきていることを
見ての勘違いでした。ここをミスっていても200が返ってくるのですね。
お騒がせしました。本当に申し訳ありません、ありがとうございました。
0678nobodyさん2010/08/09(月) 23:30:44ID:???
GAE、今日も二重に起動してる…不安定だなぁ
0679nobodyさん2010/08/21(土) 01:04:03ID:???
最近どう?
0680nobodyさん2010/08/21(土) 01:39:33ID:???
まず自分の近況から話せよ
0681nobodyさん2010/08/22(日) 00:59:08ID:???
そういやそろそろBasic認証終わりなんだよな。
0682nobodyさん2010/08/24(火) 18:30:55ID:???
つい最近作ったばかりというBOTでクライアントがAPIになっていると
中の人認証切れること知らないのかなと心配してしまう…
0683nobodyさん2010/08/24(火) 21:49:28ID:???
夏休みの宿題の期限が迫る

たしかBASIC認証には回数制限がどんどんきつくなって入っている段階じゃないか?
0684nobodyさん2010/08/25(水) 00:40:15ID:???
そう。
だから頻繁にアクセスするBasic認証のbotはすでに処理落ちみたいになってるはず。
0685nobodyさん2010/08/28(土) 15:12:54ID:???
APIのURLが新しくなってたらしいが これから必ず変えておくべき?
今のところ問題なく動いてるけど新URLにしたら反応しなくなったから元に戻した
反応しなかったのはたまたまかもしれんが…
参考:http://twbot.blogspot.com/2010/08/apiurl.html
0686nobodyさん2010/08/28(土) 16:28:58ID:???
ホスト名だけ変えて /1 忘れたとかではないの?
0687nobodyさん2010/08/28(土) 22:18:10ID:???
botはxAuthで作ったほうが楽かな?
0688nobodyさん2010/08/29(日) 00:32:46ID:???
一から作るならそーかもしんないけどいずれなくなるものを前提にするよりは
oAuth対応しといたほうがいいとは思うけどな。
0689nobodyさん2010/08/29(日) 00:40:02ID:???
botにxAuthは申請却下されそうな気がする。
0690nobodyさん2010/08/31(火) 23:42:10ID:???
さて、あと20分でBasic認証終わりか。
まあ時差はあんだろうけど。
0691nobodyさん2010/09/01(水) 01:12:13ID:???
Basic認証が廃止になるというのを先程知りました。。。。
明日急いでWebアプリケーションをOAuthに切り替えようと考えていますが、
ネットでざっと見たところ、APIを使うたびにリクエストトークン取りに行ってる実装が多いようでした。

私の現状のアプリでは、Basic認証を使い、ユーザのIDとパスを最初に登録してもらって
あとはユーザがアカウント設定を変えない限りはいつでもアクセスできるようになっています。

OAuthではユーザーの情報を何も持たないのが一般的なやり方なのでしょうか?
あるいはリクエストトークン?を保持しておいて、それ以降使いまわすというやり方も可能ですか?
また、Basic認証→OAuthを実装するにはどのぐらい時間がかかるものでしょうか?

パニくってて文章雑ですがすいませんが宜しくお願いします。
0692nobodyさん2010/09/01(水) 01:14:57ID:???
がんがれw
0693nobodyさん2010/09/01(水) 01:55:18ID:???
リクエストトークンは一回pin取得っていうかコールしたら消滅すっから保持する意味はなし。
保持すんならアクセストークンでいいんじゃないの。
アプリのスレはこっちじゃないけどまあクラアイントスレはユーザ側の話だし話すならこっちか。
0694nobodyさん2010/09/01(水) 09:27:20ID:zNa253MH
Net::Twitter::Liteの認証が全然通らなくなってる・・・
401: Unauthorizedが出る
皆さんはどうですか?
06956872010/09/01(水) 10:24:44ID:???
>>688-689
確かに申請却下されそうなのでやめました。
てかoAuthでもtoken/token secretの期限って無限みたいだから、
それ保存して毎回渡せばいいだけだと気づいた。
ブラウザでログインやるのをはしょりたかっただけです。
0696nobodyさん2010/09/01(水) 10:26:38ID:???
>>691
サーバーサイドの言語は何かな?
たいていはオプソのライブラリそろってるよ。
自分はPHPだけど、これ使ってます
http://twitteroauth.labs.poseurtech.com/connect.php
0697nobodyさん2010/09/02(木) 00:12:23ID:???
BASICで取得は出来ないようだけど、
投稿は出来るみたい。
中途半端過ぎる…
0698nobodyさん2010/09/03(金) 13:00:50ID:???
ウェブサイトでOAuthに対応した場合、
どうやってtwitterユーザーを判別すればいいのですか?
例えば、twitterユーザー名を表示するだけでも、
ウェブアプリ側でそのユーザー名を保持しないといけないわけですが
OAuthでは無理ですよね。
ついっぷるはOAuthのようですが、どうやって実装しているのでしょうか?
0699nobodyさん2010/09/03(金) 13:46:21ID:???
oAuthは大概ライブラリあるし、さがそうぜ
メジャーな言語ならoAuth込みのTwitter関連ライブラリあると思うけど、結構一から自作している人いるのか
0700nobodyさん2010/09/03(金) 17:33:09ID:???
フォームでアカウント&パスワード登録させるとかベタなことやろうとしてるならそりゃ無理だよ。
0701nobodyさん2010/09/03(金) 21:19:25ID:???
>>698
user_timelineを取得してその中のユーザ名を見てる
0702nobodyさん2010/09/04(土) 00:57:16ID:???
横からだが同じことで迷ってた。
API一回消費するけどそれで自分の最新ユーザ情報得られるし初回実行時にやっとくかな。
0703nobodyさん2010/09/04(土) 01:16:22ID:???
users/show が引数なしなら自分出せばいい話なのにめんどくさい話だな。
0704nobodyさん2010/09/04(土) 11:57:15ID:???
oAuthはさすがにライブラリだけどAPI部分は自作
BASIC認証使ってた頃はHTTPから自作だったけど
0705nobodyさん2010/09/04(土) 12:56:42ID:???
Basic認証のライブラリって意味あるのか?w
header文字列作ってくれるだけ?
0706nobodyさん2010/09/05(日) 10:22:42ID:???
「楽ボッツ」って使ってる人いる?どうなん?
ttp://rakubots.kissa.jp/
0707nobodyさん2010/09/05(日) 12:17:53ID:???
ここは製作スレなんでサービスの利用はクラスレの方じゃないかね
0708nobodyさん2010/09/05(日) 12:22:50ID:???
黙れ小僧
0709nobodyさん2010/09/05(日) 13:04:08ID:???
アイコンなおんねーなと思ったら、URLが変更になってたんだな。
アイコン以外は古いURLでも問題ないのに、問題の修正は新しいURLでしか行われなかったのね。
0710nobodyさん2010/09/05(日) 13:49:59ID:AGQD/Sbe
馬鹿には無理
0711nobodyさん2010/09/05(日) 15:45:01ID:???
>>709
公式からの情報くらいチェックしとけよ
0712nobodyさん2010/09/05(日) 16:38:16ID:???
いや、そうなんだけどさ、切り替えてすぐ使えなくなったら、気づくんだろうけど、
古いURLも使える状態から半年近くもたって障害が起こってそのまま古いほうだけ放置とか、わからんよ。

復旧の際に古いのだけ使えなくなったことが書いてあれば、すぐわかったんだろうけど、アレじゃ、わかんないよ。
アイコン以外は今もそのまま使えてるんだから。
0713nobodyさん2010/09/05(日) 18:11:39ID:???
oAuthを使う際にアプリケーションのURLを指定しますが、
このアプリケーションURLとは異なるドメインからtwitterに投稿させたいのですが、
何か方法はありますでしょうか?

具体的には、
mysite.com(登録したアプリケーションURL)と
mysite2.comというドメインがあり、

mysite.comでリクエストトークン取得したり、コールバックURLもこちらのドメイン内のものを指定します。
ただし、twitterに投稿する際には、mysite2ドメインのサーバでの処理が必須になっているため、
mysite2から投稿用のtwitterAPIを利用したいのです。

少し面倒なことをやろうとすると一つのドメイン内で全て処理が完結しない場合もあるかと思いますが
一般的にはどのように対処するのでしょうか。
0714nobodyさん2010/09/05(日) 18:28:21ID:???
半年近くも放置とか、わからんよ。
切り替えてすぐ使えなくなったら、文句垂れるくせに。
0715nobodyさん2010/09/05(日) 19:04:43ID:???
新しいURLでもアイコンエラー出るようになったw
0716nobodyさん2010/09/05(日) 20:18:51ID:???
>>713
トークン、共有するだけでいいんじゃねーの?
07177132010/09/05(日) 20:55:55ID:???
>>716

実際その方法を使っています。

�@mysite.comで取得したトークンをDBに入れる
�Amysite2.comでDBからトークン取り出してAPI実行

こうしてしまうと�Aの段階で、
twitterにアプリケーションを登録した際に登録したアプリケーションURLやコールバックURLのドメインと
異なるドメインからAPI実行することになってしまい、上手くいかないんです。
0718nobodyさん2010/09/05(日) 22:46:02ID:???
登録したときのURLって関係あるの?
0719nobodyさん2010/09/06(月) 02:15:04ID:???
application urlとcallback urlのドメインが違うとコールバック出来なかったはず。
0720nobodyさん2010/09/06(月) 04:28:14ID:???
ある条件を満たすとクロスドメイン出来るってどっかに書いてあった
0721nobodyさん2010/09/07(火) 19:55:49ID:???
投稿もブラウザ上からやってんの?
0722nobodyさん2010/09/11(土) 08:24:11ID:???
今週の木曜日、botジェネレータの鯖がダウンしていましたね。
0723nobodyさん2010/09/12(日) 15:25:13ID:???
Zend_Service_TwitterでOAuth認証させたいのですが、リダイレクト無しで実行させる方法はないでしょうか?
殆どのサンプルがリダイレクトさせてからパラメータ類を渡しています。

アプリケーションをクライアント型にしてPINを入力させる方法にすれば行けそうなのですが、サンプルがないので実装がわかりません。
どなたかご存じの方お願いします。
0724nobodyさん2010/09/13(月) 02:53:36ID:???
callback urlにoob
verifyにpinコード入力
0725nobodyさん2010/09/15(水) 17:25:53ID:yaiLgIne
phpではじめてServices/Twitterをつかってスクリプトを書いてみましたが
uncaughtってエラーが出ます

これってツイッターでは普通?
0726nobodyさん2010/09/15(水) 19:43:51ID:???
PHPのエラーじゃね
0727nobodyさん2010/09/16(木) 17:31:54ID:FSSYYQuQ
ぜんぜんPHPのAPI動かないなぁ
0728nobodyさん2010/09/16(木) 18:40:12ID:???
http://www.sdn-project.net/labo/oauth.html
この通りやっとけ
APIのURL古いままだけど
0729nobodyさん2010/09/16(木) 22:05:04ID:???
python-twitterをOAuth対応にするにはどのライブラリ使えばいいんだろ?
0730nobodyさん2010/09/16(木) 23:22:32ID:???
すこし前のレスも読めんのか
0731nobodyさん2010/09/16(木) 23:52:01ID:???
>>730
少し前ってのは>>668あたりのこと?
それpython-twitterじゃないよ
0732nobodyさん2010/09/17(金) 00:04:23ID:???
>>705
今時、GETやPOSTしゃべるのにheader出力もラップするライブラリばかりだから、
Basic認証部分もラップされてるだろ
あえて、Basic認証のライブラリ化を驚く以前にLLなら大概標準でついてないのか?
0733nobodyさん2010/09/17(金) 01:46:33ID:???
>>731
wgetですらリンクのリンク先を見る機能が付いているというのに
07347272010/09/17(金) 09:27:15ID:5afHtIbm
>>728
thx

設置する場所がPHP4なんでまんまは使えませんが
とりあえず現状で動くスクリプトとして参考にさせてもらいます。

動かなくなったスクリプトが大量にネットにありすぎ
0735nobodyさん2010/09/17(金) 10:30:53ID:???
未だにPHP4って・・・
0736nobodyさん2010/09/17(金) 11:08:05ID:???
>>735
レンタルサーバ屋に言ってくれ
0737nobodyさん2010/09/17(金) 11:08:52ID:???
botが@xxxxでダイレクトメッセージもらったときって、
どういう風に調べるの?

1分ごとにダイレクトメッセージ取得して新着があるか
チェックするとか、めんどくさいんですが。

ダイレクトメッセージもらった瞬間に、特定のURL叩いてくれるとうれしいんだけど。
0738nobodyさん2010/09/17(金) 12:01:25ID:???
そもそもxamppのPHPでAPIをテストしてるのって無理ですか?
0739nobodyさん2010/09/17(金) 17:36:36ID:???
>>736
そんなとこ借りてるお前が問題
0740nobodyさん2010/09/17(金) 19:59:43ID:???
それほどでも
0741nobodyさん2010/09/20(月) 02:56:09ID:???
全ツイートを捕獲してるサービスってどうやってんのかな
APIの制限からそんなに頻繁にはquery投げられないはずなんだけど
0742nobodyさん2010/09/20(月) 13:25:27ID:???
複数アカウントで取得しまくって、発言IDで重複を除外して結合、とか。
0743nobodyさん2010/09/20(月) 14:12:22ID:???
OAuthなら350回/時だから、約10.3秒に1回で、じゃあキリよく15秒として。
きっちり時刻合わせをした30台のPCが、0.5秒ずつ時刻をズラして取得したデータを
まとめ役PCに投げて、重複を除外する感じ?
何秒おきで何台あれば漏れがなくなるんだろう。
0744nobodyさん2010/09/20(月) 17:01:24ID:???
世界中のツイートを全部捕獲しているのがそんなんで間に合うわけがない
0745nobodyさん2010/09/20(月) 17:05:54ID:???
2月の時点で秒間600か
すごいな
http://blog.twitter.com/2010/02/measuring-tweets.html
0746nobodyさん2010/09/20(月) 19:18:11ID:???
そんなもんなのか…。
うちのサーバでも余裕で対処できそうだ。う〜ん。
0747nobodyさん2010/09/20(月) 19:49:51ID:???
今はピーク時で秒間1500くらいだよ。平均でも1000はある。
0748nobodyさん2010/09/20(月) 20:10:47ID:???
そんなもんなのか…。
うちのサーバでも余裕で対処できそうだ。う〜ん。
0749nobodyさん2010/09/20(月) 21:48:15ID:???
問題はそれだけのpublic timelineをどうやって読むかだな
複数アカウントしかないのか
0750nobodyさん2010/09/20(月) 22:57:32ID:???
数字はともかく、原理は>>743だな。
1回の取得で200件は取れるんだっけ?
1500件なら8分割で、11秒間隔とすれば
PCとアカウントが88あれば取れるのか。
多少の冗長性を持たせれば100か。
0751nobodyさん2010/09/20(月) 23:11:22ID:???
公式にかけあうともっと簡単にいけそーな気はする。
0752nobodyさん2010/09/20(月) 23:15:11ID:???
専用のAPIなかったっけ?
あと目的が確かならAPIの制限を五桁くらいに上げてもらえるとかあった気が。
■ このスレッドは過去ログ倉庫に格納されています