【Twitter】 BOT製作支援スレat PHP
【Twitter】 BOT製作支援スレ - 暇つぶし2ch253:nobodyさん
09/10/31 02:15:45
難しいって自分でコード書くのが難しいんじゃなくて
コピーした他人の奴をぐぐって動くように編集するのが難しいのかよ
まぁそれも力になるさ

254:nobodyさん
09/10/31 02:40:01
>>253
恥ずかしながらそういうことだ!
でもやってみたいから色々調べて勉強してみるよ

255:nobodyさん
09/11/01 00:14:13
twitter検索使ったbot作ってるけど最近検索が止まってるみたい。
公式の検索使った方がいいのかなぁ…。

256:nobodyさん
09/11/01 20:41:15
昆虫すげぇ、もうListsを駆使してる

257:nobodyさん
09/11/02 14:39:36
phaさん、単純なやつでもいいのでマルコフ連鎖を…

258:nobodyさん
09/11/02 22:50:28
最近BOTからBOTへのフォローがくるんだけど
無限ループに陥る可能性ある…よな?これ。
APIの回数制限とかあるけども。

259:nobodyさん
09/11/03 01:01:47
>>258
キャラクター系botだとあるある。自分もそれが怖いのでおはようやおやすみのような日常会話系単語にリプライさせられないでいる。
リプライした相手を記録しておいて、投稿前に照合するくらいの対策しか思いつかない。(記録は一日一回クリアするってことで)

botとメッセージをやり取りしないbotなら気にしなくてもいいんだろうけど、自分が作ってるのがキャラ系botなんで、同じキャラbot同士での会話もさせたいんだ。
いろいろやってるうちに好きなだけcron回したくて自分専用のサーバ欲しくなるw 

260:nobodyさん
09/11/03 02:51:05
無限ループはよく陥ってるbot見るけど
botからのpostは無視するようにすればいいんじゃないかなぁ
sourceがAPIとかなら無視させるとか botじゃなくてもAPIからの投稿だとスルーしちゃうけど
もしくはbotによくあるスクリーンネーム語尾が~botなら無視させるとか… これも普通の人が~botってスクリーンネームだとスルーしちゃうのが難点だな

261:nobodyさん
09/11/03 05:40:38
時間別に違う言葉を返すのってできないかな
昼過ぎにおはようって言うと、「寝坊?」って返すみたいなの

262:nobodyさん
09/11/03 08:19:52
>>261
PHPだったらdate("H")とかで現在の時間を取ってifとかswitchとかで場合分けだな

263:nobodyさん
09/11/03 14:32:48
>sourceがAPIとかなら無視させる
これって可能?

264:nobodyさん
09/11/03 16:11:13
>>263
可能

265:sage
09/11/04 00:25:58 oJ2uxGZI
cron-jobでfehlerhaftって出るのは何でだ・・・
URLコピペで貼ってるから間違いないのに不完全なURLって出る。


時間あけて設定画面開いたら次は重すぎるって出ました。

ファイルが重いのは理解できるがステータス変わるの何でですか?

調べてみたけど分からなかったので分かる人いたら教えてください

266:nobodyさん
09/11/04 01:01:25
>>262
ありがとう!
初心者ながら色々試してみたんだけど、どうにも無視されたり、他の時間帯のこと言ったりする…
実際発言のところにif埋め込むのはこういう形であってますか?質問厨で申し訳ないけど分かる人いたらお願いします。
swich構文もちゃんと設定してるつもりなんだけどなあ

if(preg_match ( "/(こんばん|今晩)[わ和は]/u", $var )){
if($plist = $mes['night']){
$plist = array("こんばんは","こんばんはー");
$key = array_rand($plist);
$post = $plist[$key];
$message = "@".$reply_name." ".$post;
tweet($message ,$username,$password);
}
}

267:nobodyさん
09/11/04 01:02:46
if($plist = $mes['night']){
なにこれ?

268:nobodyさん
09/11/04 01:08:25
>>267
case ($now_g > '16') && ($now_g < '20') :
$plist = $mes['night'];
swichで時間帯設定したんだけど、発言の部分に「その時間だったら」って内容つけるのに四苦八苦した結果がこれです。

もしかして全然違う?

269:nobodyさん
09/11/04 01:09:07
ごめんなさい、投稿早まった。
上のはswichで設定した分です。

270:nobodyさん
09/11/04 01:15:13
>>209
そういう感じにフォロワーが色々いじってパラメータ変動させられるbotは面白いかもね。
ただしいたずらで無茶苦茶機嫌悪くさせたり病気にもできそうなのと
何よりその手の育成システムはアイデアとプログラムが割りと手間だな。

271:nobodyさん
09/11/04 01:36:06
>>268
意味がわかりません

272:nobodyさん
09/11/04 01:44:35
>>271
えっ!?

switch(true){
case ($now_g > '2') && ($now_g < '7') :
$plist = $mes['smoning'];
break;
case ($now_g > '8') && ($now_g < '10') :
$plist = $mes['moning'];
break;
case ($now_g > '11') && ($now_g < '15') :
$plist = $mes['afternoon'];
break;
case ($now_g > '16') && ($now_g < '20') :
$plist = $mes['snight'];
break;
case ($now_g > '20') && ($now_g < '1') :
$plist = $mes['night'];
break;
default :
$plist = $mes['other'];
break;
};

swichでここまでやるのは合ってますよね…?
その時間帯の属性を発言の部分に埋め込もうとしてこうなりました。
だいぶ間違ってますか?orz

273:nobodyさん
09/11/04 02:58:30
やりたいことは
if($plist == $mes['night']){
なんじゃない?

274:nobodyさん
09/11/04 03:59:33
>>273
ありがとうございます!正解は==なんですね…
早速=の数を直してみたんですが、やっぱり時間設定に反応してくれません。
if($plist == $mes['night']){はもちろん、if (($now_g == '3') or ($now_g == '4') ){ でも試してみたりしたのですが、完全にスルーです。

$now_g = date('G');も埋め込んであるんですが…なんで反応してくれないのかさっぱりです…

275:nobodyさん
09/11/04 04:55:42
とりあえずどの段階で変数が想定外の値になってるか確認してみたら?

276:274
09/11/04 07:17:07
>>275
swichはどうやっても反応しないので、諦めていろいろ試行錯誤してたらやっと反応してくれた!!
if($plist == $mes['night']){ の代わりに if(($now_g >= '10') && ($now_g <= '17')){ を個別に指定してみたらできましたー!
結局反応しなかった理由はよくわかんないけど、<= じゃなくて < になってたのも原因のひとつみたたいでした。

アドバイスがなかったら絶対途中でめげてた。聞いてくれた方ありがとうございました!

277:nobodyさん
09/11/04 07:54:05
botはシステム自体はそんな難しくはないけど
多様性とか面白さとかのアイデア方面がなかなかいいのが思いつかないな。

278:nobodyさん
09/11/06 18:16:08
>>277
そうなんだよなあ。ヘタに@に対して定型文返してくるbotより、
単なるRSS垂れ流しの方がずっと有用だったりする現実。

279:nobodyさん
09/11/06 22:29:14
銀さんのところのをコピペしてやってみてるんですが、
bot.phpにアクセスすると
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in 略/Twitter.php on line 503
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in 略/Twitter.php on line 333 ERROR

というのが出るんだけど何がおかしいのかわからないです
Twitter.phpは23行目をConnector.phpのフルパスに書き換えたのと、
501行目の「var_dump($line);」をコメントアウトした意外弄ってないんですが…
超初心者なので最初phaさんのやつでやってたんですが
何をどう頑張っても改行されなくて
銀さんの方で作ることにしたんですがなかなかうまく行かないです

280:nobodyさん
09/11/07 00:47:57
コメントアウトのつもりが先頭に/1つしかないとかじゃないの。
正規表現でエラー出るってことはそーゆーことじゃないの。

ていうかああしたとかこうしたとか素人が言うよりは
そのいじった行をそのままコピペしたほうがわかる。

281:nobodyさん
09/11/07 05:04:43
>>279
ちゃんとコピペできていないか、実行側にちゃんと送信できていないに1票。

>何がおかしいのかわからないです
まず検索すれば分かると思うけど、Modifierってのは修飾子のこと。
↓マニュアルのURLにも出てくる。
URLリンク(jp.php.net)
でもって「Unknown modifier '['」ってのは「知らない修飾子'['がある」と、
親切に教えてくれてるわけだ。教えられた側が理解できているかは別として。
つまりこの場合、PHPが「(構文に沿えば)修飾子があるはずの場所に、
修飾子でない文字があるのはおかしい」と指摘しているので、
まず最初にその付近を見直すのが定石。

282:nobodyさん
09/11/07 16:49:41
なんも反応ないってことは大体あってたのかな。

283:nobodyさん
09/11/07 16:50:06
サーバーがsafe_modeだとなんでダメなの?

284:nobodyさん
09/11/07 18:37:38
279です。

>>280,281
ご指摘頂いた箇所を見てみたんですが、コメントアウトの//もあってたし
エラーの出てた行はいじってないしで??となっていたんですが
@PAGEのファイルの編集画面で見てみるとUTF-8で転送されてなかったみたいで
何ヵ所か文字化けしてしまっていたのが原因だった様です…すみません
その辺設定出来るエディタ使ってたのに何故という感じですが
(miで編集、Fetchで転送)
とりあえず、なんとかなりそうです
ありがとうございました!

規制中でケータイからなので読み辛かったら申し訳ないです

285:nobodyさん
09/11/08 19:21:21
「○○って言って」ってリプライされた時に○○の部分だけ返すのってどうやるの
phaさんのスクリプト使って出来る?

286:nobodyさん
09/11/08 22:28:42
>>285
reply_pattern.phpに

"○○って言って"=> array(
"○○"
),

でよくね?

287:nobodyさん
09/11/08 23:02:46
いや、そういうことではなくて○○の部分は相手が言った言葉によって変えたいんだ
一部分だけ相手の発言を引用するというか

288:nobodyさん
09/11/08 23:07:58
できるけど処理がややこしくなるから別物になっちまうな。


289:nobodyさん
09/11/08 23:08:01
@aaaの発言:
@bot AAAって言って

@botの発言:
@aaa AAA

ってこと?

290:nobodyさん
09/11/08 23:30:52
reply_pattern.phpに

"復唱"=> array(
"{echo}"
),

って入れといて、reply_random.php側で
reply_pattern.phpから返答文字列を取得してからtwitterに投稿するまでの間の処理にswitch~case(綴り合ってる?)か何か仕込んで、
もし返答文が{echo}だったらという条件判断をさせて、
そこで相手からのリプライの「から」までの間を抜き出してその前後に「復唱します、(抜き出した言葉)ですね」みたいに体裁整えて@とかidとかくっつけて返信、になるかなー

ややこしいかもしれないけどできなくはないはず
携帯からなんでコレが限界

291:nobodyさん
09/11/08 23:35:44
>>290
ごめん忘れてた
「○○」を復唱して ←こんな形式でリプしてもらうとして、ね
鍵括弧でくくってる事と復唱って言葉がポイントってことで

292:nobodyさん
09/11/08 23:42:11
>>289
そうそう

>>290
なるほど…なんとなく理屈は分かった
問題は投稿するまでの処理か…

293:nobodyさん
09/11/09 00:52:01
ある程度の早さで返事することになるとその頻度でTL取得することになるからAPI制限との勝負になるとこもネック

294:nobodyさん
09/11/09 17:18:21
8bitさんの好感度スクリプトを見つけたんだがいまいち分からない。
調べてみても、使い方のヒントになるものは何も…
携帯からなのでURL貼れなくて申し訳ない。

295:nobodyさん
09/11/09 17:25:06
何が分からないのか言ってくれないとニントモカントモ

296:nobodyさん
09/11/09 18:29:28
>>294
なんでそこの作者さんがサポートをやめたのか書いてあるだろ。もう一回読んで来い。
phaさんとこ見てても思うけどマジで初心者多いな。
ほぼ全レスのphaさんすげえ。

297:nobodyさん
09/11/09 19:43:14
>>296
サポやめたくなるのもわかるんだけど
キレてる事をblogに書くのはどうかとも思ったw

298:nobodyさん
09/11/09 19:54:17
あそこのリプライから発言を引用するスクリプト、
ユーザIDとパスワード以外弄ってないのに動作しないんだけど
質問受け付けてないからどうにもならんかった

299:nobodyさん
09/11/09 20:41:52
はじめて見たけど、中身かなり親切に書いてあるじゃん…

>>298
出たエラーでググったりすればなんとなく見えてくるんじゃないか?

300:nobodyさん
09/11/09 20:48:26
>>298
それって
URLリンク(8bitnote.sblo.jp)
で配布されてるnanoka.phpのことか?
ざっと読んでみたけどServices_Twitterも入れないと動かないよこれ

301:nobodyさん
09/11/09 21:26:11
294ですが好感度スクリプトについては説明がないんですよ。
txtには何を入れたらいいのかとか…
試しにサーバーに上げてPHPの方に書いたキーワードをpostしてから、サーバーにアクセスしてみたんだけど空リプライが来るだけ。
サーバーにアクセスしなければ何も動きはないです。

302:nobodyさん
09/11/09 22:20:34
大した量じゃないんだからコードくらい追えよ

303:nobodyさん
09/11/09 22:32:19
>>300
入れてるよ
そのエントリで同じ質問してる人がいたけど結局解決できなかった

304:nobodyさん
09/11/09 23:37:37
スレチかもしれないがWebcronって月額いくらくらいかかる?
フォロワー300で、最低でも5分毎に実行させたいんだが…

305:nobodyさん
09/11/10 00:03:35
>>304
どうせ金払うならちょっといいレンタルサーバーでも借りた方が良くないか。
月500~1000円代からでもcronやPHP5やMySQLが使えるところはあるわけだし。

とはいえサイト持ってないなら宝の持ち腐れだろうし、やっぱ人によるかも。
逆に言えばサイト運営してて、尚且つ何か高度なもん設置したいものがあるのなら、
ちょっといいサーバー借りた方がトータルで見ればいい気はする。

306:nobodyさん
09/11/10 00:24:51
>>304
自宅に24時間起動&ネット接続させられるマシンがあるならそれでスクリプトを動かしてもいいかも
自分はcygwin+cron+w3mでbot動かしてる

307:304
09/11/10 00:56:46
アドバイスありがとう
まさにサイト持ってない持ち腐れする人種なんで、レンタルサーバーは悩んでたんだ
自宅PCも不安定だし、コーヒー代我慢してWebcronのお世話になることにするよ
月額が不安だが…

308:nobodyさん
09/11/10 00:59:51
ソース読めないし全然わかんないって人はBOT作る前に最低限、
PHPスレなりその初心者質問スレなり見たほうがいいと思うんだ。
サポセンとは違うんだし。

309:nobodyさん
09/11/10 01:07:13
>>301
わからんかったらtxtはそのまま上げろと書いてなかったっけ?
うちは普通に動いてるよ

310:nobodyさん
09/11/10 03:05:08
309
ありがとう。
上げなおしたら普通に動きました。

311:nobodyさん
09/11/10 14:50:36
>>304
お試し期間で様子見してみたら?
お試し中でも使用量出るし、一週間で消費したクレジット*4すれば大体の目安はつくと思う


312:nobodyさん
09/11/10 17:45:46
>>304
5分に一回なら月に150円くらいだった記憶。確信は無いが。

313:304
09/11/11 20:56:33
ありがとう。お試し始めてみた
150ならサーバー借りるより全然お得だな

314:nobodyさん
09/11/11 23:48:17
特定の語句を含む発言をRTするBOTのRTが、フォロワーのタイムラインに表示されなくなった・・・

315:nobodyさん
09/11/12 07:18:55
>>313
同じ事気になってた。
こっちはお試し期間中に色々試す暇がなくてどうせ安いからとクレカで購入してみたが
消費量チェックする度にチマチマ増えてるんで何か焦るw
五分に一回でもフォロワ300人は怖いよね、リプライの量が。

cron-jobが使えたらな。
ファイル大きいとか失敗ミャハ☆とかばかりでまともに動いてくれないんだ。俺の日頃の行いが悪いんかな。

316:nobodyさん
09/11/14 12:06:15
ばずったーから単語を持ってくるのってどうやんの?

317:nobodyさん
09/11/15 07:57:14
スクレイピングしろ

318:nobodyさん
09/11/15 09:02:34
URLリンク(www.sukechan.net)
これってソース丸コピペしてIDとパスワード変えるだけじゃだめ?
あとできればキーワード全部じゃなくて1番目だけを取得してポストしたい

319:nobodyさん
09/11/15 10:40:05
>>318
・HTTP_Clientが必要
・for文消して$iを固定で1にする

てか聞きたいならやってみて出たエラーくらい書きなさいな

320:nobodyさん
09/11/15 20:17:39
phaさんのスクリプトを使っています。

reply_random.php+reply_random.phpを利用、で
誰かに@を貰い、反応する単語がある場合に限り
2分後にreply_random.phpから文章をランダムに返し…

さらに8分後(=計10分後)にreply_random.phpから文章を
ランダムに返す事ようにしたい(1回のpostに対して、時間差で2回replyさせる)、
のですが、ヒントを頂けないでしょうか?

やはりスクリプトと根本から弄らないと無理でしょうか?

321:nobodyさん
09/11/15 22:01:01
a

322:nobodyさん
09/11/15 22:01:53
>>320
PHPの書き方の問題なの?それともアルゴリズムの問題?

323:nobodyさん
09/11/15 23:56:13
>>320
自分ならこうする、という参考意見だと思って読んでね

前提条件として
4.txt(2×4回=8分後の処理で時間差リプライが行われる発言を記録するためのファイル)
3.txt(2×3回=6分後の以下同文)
2.txt(2×2回=4分後の以下同文)
1.txt(2×1回=2分後の以下同文)
0.txt(2×0回=今回の以下同文)
と言うファイルを用意して全部書き込み可能なパーミッションにしておく

reply_random.phpは二分おきに起動される

(続く)


324:nobodyさん
09/11/15 23:57:19
続き

--------
そんでreply_random.phpにこんな処理を追加する
0.txtに記録された発言に対して二回目のリプライ処理を行う
0.txtの中身を空にする
1.txtの中身を0.txtにそっくり移し変える
2.txtの中身を1.txtに以下略
3.txtの中身を2.txtに以下略
4.txtの中身を3.txtに以下略
4.txtの中身を空にしておく

>>290を参考に
特定の単語に対しては特定の処理をさせるようにして、
特定の単語が含まれるリプライを受け取った場合はまず一回目のリプライを返した後で
4.txtに今回返したリプライのユーザー名(@の後につける奴ね→$replies2[$i]["screen_name"])と
メッセージID(in_reply_to_status_idとして必要→$replies2[$i]["id"])と後必要なら名前($replies2[$i]["name"])とか書き込む
(一行ずつ項目ごとに半角カンマとかで区切って)

これで出来るような気はする。だれかもっと詳しい人いたら突っ込みとか入れてほしい。
ただ受け取るリプライの数が多かったりしたらファイル壊れるんじゃ、とかそういうのが気になる、その辺は自分も詳しくないんでパス
だれかもっと詳しい人いたら突っ込みとか入れてほしい。
必ずローカルでテストしてからにしてね
がんばってね

325:nobodyさん
09/11/15 23:57:21
2個モジュールをおいて各の自動実行間隔を2分と8分にすればいいだけ

326:nobodyさん
09/11/16 11:34:55
もうちょっと汎用的に作ろうよ

327:320
09/11/16 18:31:33
>>323さん、>>325さん、ありがとうございます。
自分のやりたい事は>>325の方法で出来そうなので、
試してみたいと思います。有り難うございました!

328:nobodyさん
09/11/16 19:25:29
>>319
とりあえずHTTP_ClientっていうのをDLしてServices_Twitterと同じ要領でbotのサーバーに入れてみた
で、>>318をコピペして動かそうとしたがエラー出ないしpostもされなかった

329:nobodyさん
09/11/16 20:22:18
エラー出せ

330:nobodyさん
09/11/16 21:00:56
>>329
<丶`Д´>呼んだニカ?

331:nobodyさん
09/11/17 10:06:08
いつもいつもエラーが出るって言う初心者なんでそのエラーメッセ書かないかな。

332:nobodyさん
09/11/17 10:24:17
自分がわからない文章に意味があるとは思えないからだろうねえ

333:nobodyさん
09/11/17 17:07:00
半自動フォローでbotがフォロー返す時に「フォローしました」のメッセージをつけたいんですが、
どう書き変えたらいいんでしょうか?

ソースはこちらを使わせて頂こうと思っています
URLリンク(dream-aquarium.net)

よろしくお願いします

334:nobodyさん
09/11/17 19:50:15
>>333
URLリンク(apiwiki.twitter.com)

335:nobodyさん
09/11/19 21:13:08
Postごとにアイコンを変えるってのをしたいんだけどどうすればいい?
例えば喜のPostのときは喜んだアイコン、怒のPostのときは怒ったアイコンって感じで

336:nobodyさん
09/11/19 21:37:00
Twitterにそんな機能あんの?
変えるのはやってできないことはないと思うけど、それだと喜のあとに怒のpostしたら結局怒アイコンになるんじゃ

337:nobodyさん
09/11/19 21:56:10
>>336
仕様書見る限りupdate_profile_image使えばいいっぽいんだけどどうすればいいのかわからなくて
喜怒哀楽は例であって作りたいのはある作品のキャラごったにbotを作りたいんだ
その台詞を言ったキャラのアイコンでPostやリプライを送る。どんなキャラが出てくるのかはランダムで

338:nobodyさん
09/11/19 22:07:55
いやだから最後に送ったアイコンが全ての発言に付加されるのでは?

339:nobodyさん
09/11/19 22:13:57
ああ、過去の発言も全部その瞬間にアイコンが変わっちゃうんだな
Post間隔長いのならわざわざ過去の見ないだろうがリプライとかは無理か

340:nobodyさん
09/11/19 23:54:38
発言ごとにアイコンを保持はできんから>>336だし
クライアントによってはアイコンをキャッシュするから変えてもすぐには反映されんかもしれん。

341:nobodyさん
09/11/20 15:58:52
こないだ携帯の白いお父さんが毎回アイコン変えてたけど
同じキャラがキョロキョロするとかならかわいいと思った

342:nobodyさん
09/11/20 23:48:02
>>336
喜怒哀楽の感情ごとにアカウントとってリストで読ませる

343:nobodyさん
09/11/21 00:07:11
これをやってみようと思うんだけどcURLってのがわかんね
URLリンク(d.hatena.ne.jp)

344:nobodyさん
09/11/21 00:08:06
php勉強しれ。

345:nobodyさん
09/11/23 20:10:45
OAuth認証(参考:URLリンク(wolf.silk.to))でbot動かしてる人いる?
in_reply_to_status_idつけてpostするようにしても、付与されないんだけど・・・

346:nobodyさん
09/11/23 22:22:45
phaさんのプログラム使わせてもらってるんだけど、
ランダムリプライと、指定した単語にリプライの両方使ってて、
片方のBOTは反応単語以外のリプライを受け取ると
ちゃんとランダムリプライしてくれるんだが、
片方は反応単語以外のリプライを受け取ると
必ず空リプライしてしまうんだがなんでだろう?

ちなみに、おかしいと思って、きちんと動作する方の
プログラムまるまるコピペしてユーザー名書き換えて
アップロードしてみたり、Services等その他諸々の
フォルダも全部アップロードし直したりしたけどだめだった…


347:nobodyさん
09/11/23 22:28:39
何を言っているのか分からない

348:346
09/11/23 22:41:32
ごめん、つまり空リプライの原因は何なのかって事が聞きたかった。

今自分で読み返してもなに言ってるか分からなかった

349:nobodyさん
09/11/23 22:50:38
変数の中身でも出力させてみたら?

350:nobodyさん
09/11/24 01:09:13
>>345
そっちがどういう風に送ってるのか知らんけど
先頭に@名前 ついてないと無効って仕様はあるみたいだが。


351:nobodyさん
09/11/24 04:54:49
>>348
自分のフォロワーに同じことで悩んでる人がいたなw
その人もbotを複数作ってて、ある一つのbotが空リプライするって、同じこと呟いてたけど、まさか…?w

それはともかく、自分のbotも反応ワード以外のリプライを貰うと空のリプライしてたんだけど、textのデータを弄ったら直ったよ。
サーバにアップしてあるtextのファイルがあるでしょ?
どうやらphaさんのは、反応ワード以外のリプライを貰うと、そのtextファイルに書いてあることをリプライするプログラムらしいので、そのtextファイルに、分からなかった場合のセリフを書き込めば良いってわけ。
そうすれば空のリプライしなくなると思う。

352:345
09/11/24 09:40:53
>>350
「@名前 」つけて名前とIDが違うと付与されない的なのは把握してるつもりなんだけどね、なんかうまくいかなくて・・・
やり方が間違ってるのかなぁ
ちなみにpost部分はこんな感じにしてます

$req = $to->OAuthRequest("URLリンク(twitter.com)",array("status"=>$aaa, "in_reply_to_status_id"=>$bbb), "POST");
$aaaは「@名前 返信内容」
$bbbはステータスID

俺恥ずかしいこと聞いてそうだな・・・

353:nobodyさん
09/11/24 12:25:40
>>348
tw.txtの中身が空であるか、改行して空白の行がありませんか?
またサーバーの方で確認して文字コードはUTF-8、改行コードはLFになっていますか?

354:nobodyさん
09/11/24 21:18:07
BOT作ってどうすんの?
作る価値ねーしwwwwwwwwwwwww

355:nobodyさん
09/11/25 02:02:43
>>354
そう思うんならそうなんだろう。
お前ん中ではな。

AA略

356:nobodyさん
09/11/25 03:17:51 6oiYyRxa
cron-job.orgで「cronファイルが大きい」って言われた。
ググっても解決策ゼロ。
誰か助けてください。。。

357:nobodyさん
09/11/25 03:21:26
cronファイルを小さくしろ

358:nobodyさん
09/11/25 03:27:51 6oiYyRxa
>>357
どうやって?
もう削るとこないです・・・

359:nobodyさん
09/11/25 03:28:38
バックスペースキー

360:nobodyさん
09/11/25 03:31:21 6oiYyRxa
>>359
それってどういう意味ですか?
もう消す場所ないです;;;

361:nobodyさん
09/11/25 03:35:18 6oiYyRxa
こんどはURLが違うって言われた・・・あってるのに…

362:nobodyさん
09/11/25 08:01:11
GoogleAppEngineでcron動かしてる人いたら教えて

2分間隔でリプライ返すbot
動かしてるんだけど、
cron-job不安定だったからGAEに移行。
java使ってGAEでcron(2分おきに設定)
動かすまではうまくいったんだが、
プロジェクトをデプロイして
しばらくたつとリプライを拾わなくなる。
デプロイ直後は普通に拾うんだが…
AppEngine経由でPHPのページにアクセスすると
直前にリプライ飛ばしてても
「2分以内の@はありません」ってでる。
直接アクセスするかcronjob経由でPHP叩けば、
ちゃんとリプライ拾うんだけど…。

バージョン変えてデプロイし直してもうまくいかない。
何がおかしいんだろうか…

363:nobodyさん
09/11/25 08:08:35
もうちょっと要点をまとめてくれ。

364:362
09/11/25 08:26:52
わかりづらくてすまん。
botにリプライ飛ばしたとき

・直接PHPページにアクセスするとリプライ拾える
・GAE経由だとリプライ拾えない。(デプロイ直後は拾えるがそのうちダメになる)
・GAEのcronjobにはエラーなし
ってことなんだ…

365:nobodyさん
09/11/25 14:21:04 w36IBMdL
これ動かなくない?ただコピペしただけじゃ駄目なの?

URLリンク(d.hatena.ne.jp)

「PHPでtwitterに投稿する」の時点で躓いた。

366:nobodyさん
09/11/25 14:22:07
エラーメッセージくらい見れよ。はぁ・・・。

367:nobodyさん
09/11/25 14:22:47
大方全角スペースが入ってるとかだろ

368:nobodyさん
09/11/25 14:24:12 w36IBMdL
どうやって見るの?

369:nobodyさん
09/11/25 14:35:02
エラーの見方も分からんでプログラムやってんの?

370:nobodyさん
09/11/25 14:39:11
まずはそれを設定したhttpdのエラーログ見ろよ

371:nobodyさん
09/11/25 21:34:37
cron-job.org使ってつまずいてる人が多いけど、cron-job.orgはマトモに使えるレベルの安定性じゃないと思う。
確かに無料だけどcron-job.orgの設定で毎日毎日苦労してるんなら
月100円くらい出してwebcron.orgを使うことを個人的にはお勧めしたい。動作は安定してるよ。

372:nobodyさん
09/11/26 07:22:56
クレカの審査落ちるから使えないんだよ!!

373:nobodyさん
09/11/26 10:32:51
まず働けよ

374:nobodyさん
09/11/26 12:12:55
webcronが新しくなったとたん全然動かなくなったんだけど
同じ症状の人います?

375:nobodyさん
09/11/27 19:39:09
>>356
ファイル大きいって言われてもちゃんと動くぞ。
動かないならソースがおかしいかも。エラーは出なくてもどっかしら
汚いソースの部分があるんじゃないかと。

それより勝手にNeinになる仕様どうにかしてくれ。

376:nobodyさん
09/11/28 07:10:32 M2/cHCZP
phaさんのを使わせてもらってて、replay_random.phpが上手く動かないから自分でソース読めるようになりたいんだけど

replay_random.phpの内容、↓これで解釈あってるの?
//コメントは自分が書いたものです.

//リプライの文章をつくる
for($i=0;$i < count($replies2);$i++){ //リプライの回数(replies2)分、以下の処理を繰り返す
$text = ""; //メッセージ用の変数を宣言
if($useReplyPattern === TRUE){//特定の単語に反応させたいときはこの処理を行う
require_once($replyPatternFile);//先にreplyPatternFileで定義したファイルを読み込む
foreach($reply_pattern as $pattern => $res){//配列$reply_patternの中身について端から以下の処理を行う。そのとき一個づつ$patternに代入していく
$pattern = preg_replace("@¥@@","¥@",$pattern);//$patternの中に"@¥@@"が有ったら"¥@"に変換??
if(preg_match("@".$pattern."@",$replies2[$i]["text"]) === 1){ //もしも、 "@".$pattern."@"っていうのが $replies2[$i]["text"]の中に有ったら?
$text = $res[array_rand($res)];//$resの中からランダムに選ぶ
break;//おしまい
}
}
}

377:nobodyさん
09/11/28 08:45:14
全部確認してくださいじゃなくて具体的に分からないとこを聞け
正規表現を特に聞きたいんでしょ?

378:nobodyさん
09/11/28 09:21:58
//メッセージ用の変数を宣言
というか初期化だな。

//$patternの中に"@?@@"が有ったら"?@"に変換??
なんで@なんて使ってるのか知らんけど左右の@は区切りのはず。
大抵/@/や#@#あたりじゃないんかな。だから@を@に置き換えてる。
他の部分知らんがなんでだろ。

379:nobodyさん
09/11/28 19:52:45
phaさんのスクリプトの1.41使ってるんですが

リプライの無限ループを制御する
$replyLoopLimit = 3; //何回連続でreplyを返されるとループを中断するかを設定します。

が、効いてないような?
サーバーやPHPのバージョンとかに関係あったりするんでしょうか?

380:nobodyさん
09/11/28 20:18:57 tYVMHZ37
>376
なんか急にreplay_random.phpが動かなくなったよね…
サーバー入れ替えしただけ(中身同じ)なのに、リプ返さなくなった。
ファイルマネージャからアクセスすると「送られたメッセージはない」って出るのに、Twitterから送ると真っ白。
自分だけかと思ったけれど何人もいるらしいから、クライアントとか関わるのかな。

>379
自分もそう。4で入れてるのに1回しか返さないわ…

381:nobodyさん
09/11/28 21:06:37
ここのスレの人はみんなphaさんとこの使ってんの?

382:nobodyさん
09/11/28 21:12:58
え?

383:nobodyさん
09/11/29 00:24:12
ランダムポスト・@もらったあとのランダム&パターンリプライ→phaさんのとこの
TL上の単語に反応させてリプライ→プログラミングを始める10の理由からコピペ
↑のに加えてどのポストに反応したかの紐付け→銀さんのBOTのin_reply_to_status_idの記事から

今のとここんな感じ

384:nobodyさん
09/11/29 01:37:43
>>381
私はあそこのは使ってない。
確かにphaさんのはカスタマイズしやすくて良いんだけど、自分は「プログラミングを始める~」のとこで公開されてるソースを改造して使ってる。
TLに反応するプログラムも、リプライも定時発言のも全てそこので事足りる気がする。

385:nobodyさん
09/11/29 02:26:40
一からコード書いてる俺は異端なのか?
全部自分で書いた方が楽しいじゃん

まぁServices_Twitterは使わせてもらってるがなー

386:nobodyさん
09/11/29 04:49:52
自分はまだ始めたばっかりだからメインでphaさんの使わせてもらってるよ
どういう流れなのかコメントがわかりやすく付けられてるし

サブで時間帯別のと好感度のものを組み合わせてるが
そっちはどこ改造したらいいのかもまだわからんw

387:nobodyさん
09/11/29 14:37:06
>>274 の、時間別に返事が違うっていうソースを入れたいんですけど、
自分は今phaさんの配布しているリプライソースを使っています。
phaさんの配布ソースのどの部分に入れたらいいでしょうか!
リプライパターンphpとも組み合わせたい。

//リプライパターンと照合する
if($useReplyPattern === TRUE){
require_once($replyPatternFile); ~(略)

の前?それとも後?全然場所が違いますか。
それとも↑のソースも色々変えないと出来ないですか?
プログラミングも何もかも初心者なので色々と試したのですがうまくいきません。
改変箇所等教えていただきたいです!
参考にしたのは
URLリンク(d.hatena.ne.jp)
の「時間帯によって反応を変える」って記事

>>362
GAEはサーバーと距離が短くなくちゃタイムアウトしてしまうらしい?
オススメは@pages。1分間隔でまわせるみたいです。
自分はまだ使ってませんがいずれ入れたい!

388:nobodyさん
09/11/29 14:41:19
>>387
PHPの書き方学ぶことをオススメする

389:nobodyさん
09/11/29 20:59:32
有料でもいいけど一番安定してBOTが動く鯖ってどこだろう?

390:nobodyさん
09/11/29 21:51:04
>>387
どこに入れればいいかじゃなくて、入れて動かしてみて、うまくいかなかったときに聞いたほうが
答えをもらえる確率は上がると思うよ
ここはphaさんソースの改造方法について教える場所ではないからね

391:nobodyさん
09/11/29 23:21:39
>>381
自作でちょびちょびいじりながらやってる。
ていうかここってBOT製作支援スレであって、配布BOT利用支援スレじゃないと思うのよね。
まあわかる範囲では質問にも答えるけど。
しかしなるべくメンテフリーで面白いBOTってのはなかなかうまいこといかんね。

392:nobodyさん
09/11/30 07:43:42
botが全て沈黙しているのは自分だけでいいよ…

昨日まではちゃんと動いてたのにいきなり無言になりおった

393:nobodyさん
09/11/30 21:09:26
>>392
サーバーの仕様が変わったとかcronファイルが壊れた…とか?

394:392
09/11/30 21:46:49
>>393
ありがとう。
とりあえずphaさんの使用してて、ファイル全入れ替え+別鯖(さくらから@pages)に移動して実行してるのに、同じ状況。
ほんとにいきなりリプライしなくなったので原因がさっぱりわからない。
もし同じ症状のひとがいたらと思ったけれど、いないのかな?

395:nobodyさん
09/11/30 22:10:29
>>394
API規制じゃないの

396:nobodyさん
09/12/01 00:22:49
API規制ってアカウントごと?それともIP?

397:nobodyさん
09/12/01 00:40:46
@pagesは反応にぶいよ
cronが動いててもすぐ接続がタイムアウトしちゃうらしい
さくらのBOTに比べて格段に反応が鈍い

398:nobodyさん
09/12/02 13:36:20
無料だからなぁ文句はいえんだろ

399:nobodyさん
09/12/03 09:37:10
cron-job.orgが不安定すぎるのでGoogleのAppEngine試してる
大体は安定して叩いてくれてるけど、
実行時間が毎日1分~2分ずつくらい遅れてきてるのが気になる

400:nobodyさん
09/12/03 12:35:16
プログラム自体を変えたら、cron-jobでも全然気にならなくなったなぁ。
cronが度々アクセスに失敗しても、貰ったリプライには全レスするし、もうこれでいいやってなってる。

401:nobodyさん
09/12/03 18:06:44
>>400
プログラムは自作?

402:nobodyさん
09/12/04 02:13:13
自分もAppEngine試してるけど半日で止まるわー
8つ回してるけど1つだけ何度上げても止まる
鯖はさくらで中身全部同じなのにわけわからん…
GAE使ってる人はJAVAとPythonどっちでやってる?

403:399
09/12/04 11:17:32
>>402
遅れはするが止まるまではいかないぞ?
実行自体はほぼ安定してるし…ちなみにJAVA

404:nobodyさん
09/12/04 12:39:33
cron-job.orgを使ってるんだが、ドイツの日付が変わった瞬間から設定が勝手にNeinになる
このスレ見てると同じような不具合多いみたいだし、
webcronとやらに移ったほうがよさそうだね
ただ、自分のクレジットカード作れる年じゃないから
またカーチャンに個人情報洩れるんじゃないのって渋られそうだw

405:nobodyさん
09/12/04 12:58:49
ドイツの日付が今日になったあたりからcron-job.orgに繋がらなくなった(DNSエラー)んだけど…ドメインの期限切れか何かかな。

406:nobodyさん
09/12/04 13:09:03
俺もGoogleAppEngin使ってるけど安定してるよ
止まることも遅れることも、今のところない
ちなみにPHP

407:nobodyさん
09/12/04 14:03:06
Googleのって、Macだと無理っぽい?
botのためにブートでWindowsを立ち上げるのもなんだかな…。

408:nobodyさん
09/12/04 14:47:20
GoogleAppEngine bot twitter phpでぐぐったら
一から十までcronの動かし方を説明してくれてるページをみつけて歓喜したんだが
肝心のソース説明画像がキャッシュに残っていなかった…orz

409:nobodyさん
09/12/04 15:05:25
さくら使ってる人ってcronもさくらで動かしてる?
安定させたくて@pagesからさくらに移ったんだけど負荷がかかるからってcron止められてしまった
結局cron-job.org使ってる

410:nobodyさん
09/12/04 16:23:12
>>408
画像じゃなくてテキストで説明書いてくれてるところがあるだろ
もうちっとググれ

411:nobodyさん
09/12/04 17:36:16
GAEに関してはモノクロ二階調ってところがわかりやすかったらしいが今は見れなくなってるな
どうして消したんだろう

412:nobodyさん
09/12/04 17:50:57
ホントだ、記事消えてるね…
たしか消えた記事内で参考にしたと書かれていたブログ記事の方は
まだ残っているから、そっちを探せば出来るとは思うけど

413:402
09/12/04 20:39:49
>402だが
今日見直したら止まってると思われた奴はまた動いていた
GAEはタイムアウトのタイミングがシビアなのかもしれん…
>411のサイト見て作ったのでJAVAで動かしてたが
何か問題でもあったのかな

414:nobodyさん
09/12/04 22:54:07
噂の参考サイトがなくなってGAEの動かし方が分からないぞ

>>413
GAEって30秒でタイムアウトじゃなかったっけ、それにひっかかってるとか?

415:nobodyさん
09/12/04 23:09:13
質問厨に疲弊して消したらしいぞ。>モノクロ二階調

今日の記事に書いてあった。

416:nobodyさん
09/12/04 23:09:32
モノクロ2階調さんとこが記事消したのは「サポートしないよ」って書いてるのに
botのDMとコメント欄に問い合わせ多かったからだってさ。
再掲載する予定も今のところ無いみたいね

>先日までこちらのブログでGoogleAppEngineのcronjobを使ったbot管理の方法を
>記事にしていましたが、私自身のtwitterアカウントが非公開の為
>当方が管理しているbotにDMを送ってこられる方、サポートをしていないと
>申し上げているにも関わらずコメント(承認制にしてありました)でのお問い合わせが多く

>なんかもうバッタンしてしまいました…
>仕事で忙しいせいもあるので、自分に余裕がないのが悪いとは思いますが…

>現状記事の再掲載は未定です。良い解説記事が見つかるのを祈ってます。
>その際はそちらを管理されている方の負担にならないよう、
>「人事を尽くす」努力をお願いします。(私が言う事ではありませんが…)

417:nobodyさん
09/12/04 23:17:09
質問厨はどこにいっても害しか産まないのか
地道にやるしかないかなぁ
>>415-416情報ありがとう

418:nobodyさん
09/12/04 23:17:31
cron-job.orgが勝手にneinになるのってやっぱ向こうが日付変わる頃だよね…
ところで勝手にneinになるのとjaのままのとがあるんだけど何か条件あるのかな

今9個job設定しててそのうちの2個はいつもjaのままなんだけど
post内容が違うだけでほぼ同じソースなんだよね…
ファイルサイズもそんなに重くない…というかneinになっちゃうやつのほうが軽い奴もある
あと勝手にneinなるのはfehlerhaftも出やすいみたい…

419:nobodyさん
09/12/05 00:08:03
botの作り方系のブログは、どこも
「○○行目でエラーが出るんですけどどこがおかしいのか分かりません」
↑どんなエラーとも書いていない。結局全角スペースが入っていたとかそういう問題
「○○を書き換えて、って書いてありますが場所がわかりません」
↑その記述は一箇所しかないから探せば見つかる

とかそういう質問山盛りだからな…モノクロ二階調さんのところは本当にお疲れ様です、としか…

420:nobodyさん
09/12/05 00:27:12
ツリー型の質問掲示板のタイトルに「教えてください」ってのが10年前からあったしな。
あとよくわかってないのに自分の解釈をやたら書く質問者も。
相手はエスパーじゃないんだから教えて欲しいことを伝える努力は必要だわな。

421:nobodyさん
09/12/05 00:38:08
とりあえずGAEでcron動かすのやってみよう。。。

>>418
基準はよくわからんが、やっぱり無料だし文句は言えないところか。
ただ、neinになるとかの条件はヒントだけでも載せてくれると助かるね

>>419-420
質問するにも初心者(笑)なのが多いのか。
ググり方も分からないやつなのかな
てかたまに偉そうなやついるよね、上から目線の。

422:nobodyさん
09/12/05 00:47:40
教わらないとわからないって人はそれなりの割合いる。
エラーメッセージでぐぐれば問題を絞れるはずだが、
ぐーぐる先生の資料集めとしての使い方が思いつかない人はそれなりの数いる。
WikiPediaみたいにまとまってたり聞いたらすぐ答えてくれるようなとこしか行かないのだろうし。

423:nobodyさん
09/12/05 21:07:44
>>416
しかしbotの方にDM送るなんてひどいな
なに考えてんだ
自分もbot作ろうとしてるのにそのbotに関係ないメール送られて気持ちとか考えないのかね

424:nobodyさん
09/12/05 21:49:15
自分も最初は初心者だったが…
ある程度は自分で調べないと何かあった時に対処できんから恐いわ
phaさんのしたらばのは初心者(笑)ホイホイにならないことを祈る

425:nobodyさん
09/12/05 22:45:17
>>424
それマジ心配してる。でも今もう既にそうなりつつあるような…。
phaさんのプログラム以外の質問とか、PHPと全然関係ない質問多い気がする。
あまりに初心者すぎな質問であふれかえってphaさんが
疲れてしまってサポート放棄されたり、
最悪配布を中止されたりしてしまうんじゃないかと不安だ……。

426:nobodyさん
09/12/06 01:00:27
URLリンク(d.hatena.ne.jp)
↑ここを参考にしてbotを作ってみたのですが、エラーが出て上手くいきません。

参考にして書いた(と言うかほぼ全てコピペです)のが下記のphpです。
URLリンク(opmet.s332.xrea.com)
(この内容を twitter_bot.php に保存して、下記のサーバにアップ)
Apache 1.3.37
PHP 5.2.5

このPHPを実行したところ、下記のエラーが出ます。
Warning: simplexml_load_file(URLリンク(pcod.no-ip.org)) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 500 INTERNAL SERVER ERROR in /xxxx/twitter_bot.php on line 22
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "URLリンク(pcod.no-ip.org)" in /xxxx/twitter_bot.php on line 22

このスレも読みましたが、「調べりゃわかる」という事しか書いておらず、
色々ググってみたのですが、解決方法が見つけられませんでした。

どのように修正すれば解決するでしょうか?

427:nobodyさん
09/12/06 01:07:16
external entityのロードに失敗してる

428:nobodyさん
09/12/06 01:54:58
>>427
そうですね、failed to load external entity とありますからね。
これは、どのように修正すれば解決するでしょうか?

429:nobodyさん
09/12/06 02:05:31
22行目の処理でなんか失敗してるんでしょ?
サイトから情報引っ張ってくるんだったら、サイトの読み込みに失敗したとか、searchの条件に合わないとか
そんな感じなんじゃ

430:nobodyさん
09/12/06 02:13:57
>>429
では、例えば検索語を "hogehoge" にするとします。

URLリンク(pcod.no-ip.org)

これをRSSリーダーで取得すると、xmlファイルが正常に取得できています。
つまり、サイトからは読み込みができているわけです。

これが上記のPHPになると必ずエラーが出ます。この点が何故かわからないのです。
xmlファイル自体は正常に取得できていますので、PHPの記述に何らかの問題が
あるのだろう、と推測しているのですが…

くどくて申し訳ありません。

431:nobodyさん
09/12/06 02:27:44
ぐぐれよ

432:nobodyさん
09/12/06 03:13:19
googleのcronがうまく動かない\(^o^)/
某サイト様のをまんまコピペしたんですけど、jobをみると404エラーになるんです

<cronentries>
<cron>
<url>/crontest</url>
<description>crontest the run every 2 minutes</description>
<schedule>every 2 minutes</schedule>
<timezone>Asia/Tokyo</timezone>
</cron>
</cronentries>
のurlエリアはphpのアドレスではないんですよね?

433:nobodyさん
09/12/06 04:51:05
>>432
お前さんがGAEで作った領域のアドレス入れるべし

434:nobodyさん
09/12/06 09:26:28
>>431
ぐぐってわからなかったのでここに書きました。

435:nobodyさん
09/12/06 11:25:19
設定ファイルから反応する語句リストを読み込んで正規表現でマッチングさせて指定した関数を呼び出すか対応するセリフリストを呼び出してランダムに一つ発言させるコードならさっき出来上がった(バグ取りなう)けど、必要なら公開しても良いよ。@PHP

436:nobodyさん
09/12/06 11:40:41
>>435
よろしくお願いします!

437:nobodyさん
09/12/06 11:44:11
>>430
22行目だけ動かしてみたんだけど、うちの環境でも同じエラーになった
なんだろうなぁ

>>435
そういうときは「必要じゃないかもしれないけどうpする」のが2ちゃんのしきたりだろ
しきたり守れよ

438:nobodyさん
09/12/06 12:58:19
>>437
ちょっと別の検索サービスを試してみました。

$xml = simplexml_load_file('URLリンク(twiple.jp)'.$search_word.'&lang=ja');

これで例のエラーは出なくなりました。>>429 さんの回答で正解のようです。

が、今度は何のエラーも表示されないのですが、ちゃんと動いているわけでも
ないようなのです。まだ他におかしいところがあるのか…

$followed と $now_time が定義されていないので、

$followed = array();
$now_time = time();

を定義してみましたが、状況は変わらず… 的外れだったようです。

439:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/06 13:17:05 I4htWoWi
>>437
ご指摘ありがとうございます。
申し訳ないのですが、まだ公開できるほどバグ取りが進んでいません。
今日中には公開できるようにしますのでしばしお待ちください。
セリフリストの文法ですが、
@.*バルス!.*=バルス
とした場合は正規表現で.*バルス!.*に反応しセリフファイル「バルス」を読み込みランダム一行をリプライします。
~.*爆発しろ=bakuhatsu
の場合は関数「bakuhatsu」を呼び出し発言を第一引数とします。
関数は個別にプラグインファイルで対応しますので根幹のシステムへの変更は行われません。
=が入る発言に対してバグがあるので=が入る発言への対応を検討中です。
それだけですが現在公開できるように早急にバグ取り、公開用の(既存の)設定クリーン中です。本当に申し訳御座いません。
トリップも付けていませんでした。すみません。
元来自分用に開発していたもので…

440:nobodyさん
09/12/06 18:03:07
>>433 作った領域ってことは
http://あいでぃー.appspot.com/ の http://あいでぃー.appspot.com/なんかつくったやつ
をhからお尻まで全部ってことですよね?
上のも下の「なんかつくったやつ」のアドレスもどっちもいれてうpしてみたんですが、
やっぱり404エラー…
javaの方の
package testcron;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class TestcronServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
try {
URL url = new URL("phpのあどれす");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
resp.getWriter().println(line);
}
reader.close();
} catch (MalformedURLException e) {
resp.getWriter().println("URL faild : " + e);
} catch (IOException e) {
resp.getWriter().println("URL faild : " + e);
} } }
が間違ってるんでしょうか。

441:nobodyさん
09/12/06 19:25:38
>>437
XMLの取得自体はできてるみたいだけどね
print $xml->entry[1]->summary;
みたいなので一応見れるし…

>>439
そこは「しきたり(笑)」ですませて欲しかったよ!
必要としてる人もいると思うので、公開できるときに公開してくれればいいと思うお( ^ω^)

>>440
○○○Servlet.javaって作ってるよね?
それの ○○○ を書くはず。↓
<cronentries>
<cron>
<url>/○○○</url>
<description>crontest the run every 2 minutes</description>
<schedule>every 2 minutes</schedule>
<timezone>Asia/Tokyo</timezone>
</cron>
</cronentries>

442:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/06 19:53:33
関数呼び出し手順に変更です。
reply.listに~<正規表現>と記述した場合、関数に渡される文字列は@IDを除いた単純発言部分となります。
プラグインファイルを作りたい香具師は準備願います。
おまけにどう読むのプラグインを添付します。(requires nkf,kakasi)ご活用くだしあ。
補足として$prof[]でボットのプロフィールにアクセスします。(別途ファイルを用意してあります)
$conf[]でついった関連設定ファイル(以下同)

公開用ぺーじの設計に手間食ったりしてます。しばしお待ちを。

443:nobodyさん
09/12/06 20:07:15
>>442
期待!

444:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/06 20:19:49
何度も申し訳ないですが、プラグインファイル(作ってくれそうにないが)の使用を規定します。
1. <?php で始まり ?> で終了すること。
2.呼び出される関数を保持すること。呼び出される関数が主処理関数であること。
3.受け取った文字列を処理する場合(特に外部ファイル、プログラムへの受け渡しをする場合)h(文字列);でエスケープすること。
4.$debugはデバッグスイッチです。d(変数);でダンプ可能ですので積極的なデータ表示をお願いします。
だいたいこのくらいでしょうか。呼び出し元の@IDは$idで取得可能です。
その他、プラグインファイルは/AI/に保存願います。利用の際は/conf/plugins.listに
loadplugin('hogehogewaros.plg');のように拡張子込みで登録お願いします。
人格?の利用を前提としているので初期設定スクリプトを書いています。お待ちください。

445:nobodyさん
09/12/06 20:24:06
>>441うおおおおできました!ありがとうございました!
プログラム開くと○○○が先頭大文字になってて
大文字のままいれたらだめでしたが
小文字にしたら動きました!
って前にこれ一度もう試したんですがその時は404エラーでたんですよね…なんでエラーだったんでしょうか
まあとにかく動いて嬉しいです!
441さまも433さまもありがとうございました!

ついでにもう一つおたずねしてもいいでしょうか
一つのプログラムで複数のphpを動かす場合
try {
URL url = new URL("phpアド");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line;

while ((line = reader.readLine()) != null) {
resp.getWriter().println(line);
}
の後ろに同じ文を重ねていけばいいんでしょうか

446:nobodyさん
09/12/06 23:42:18
>>440
自分もそのコードが載ってるブログを参考に作ってるんだが、
ウェブ上で動いてるのを確認する方法として紹介されている
http://設定したApplication id.appspot.com/設定したプロジェクト名
にアクセスするとxmlコードが剥き出しで表示されてしまう
これは何らかのミスがあるということなのかな…?
成功した場合はどのように表示されるのだろうか

447:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/07 00:16:02
遅れています。
圧縮に手間を食っているようです。でき次第公開します。

448:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/07 01:30:55 MdLiWJgY
URLリンク(knowledge.ddo.jp)
一応こっそり公開します。
使い方、インスコ方法はウィキに乗せていくのでそれの完成を待ってください。
とりあえず公開するだけです。

449:nobodyさん
09/12/07 06:37:19
GAEにデプロイしてcronで定期実行、結果もon time Successなんだけどツイッターには投稿されない
ローカルで開くと404エラー:The requested URL /自分のサイトアドレス/post_random.php was not found on this server.
って出るんだけどphpは他のサーバーにアップしてるんだからthis serverでnot foundなのは当たり前じゃないの?
http://から指定してるのになんでフォルダから開こうとしてるんだろう
ソースは>>440さんと一緒で>>440さんが動いたということはつまりどういうことなのかわからなくなって…きた…
自分でphpのページ開くとちゃんと投稿されるので悪いのはソースなんだと思うけどいくらいじってもさっぱり投稿されず
eclipseで実行すると
com.google.appengine.tools.development.LocalResourceFileServlet doGet
WARNING: No file found for: /favicon.ico
何が悪いのかわかるひと教えてください…ファビコンてURLの横に出るアイコンじゃん…関係あるの…


450:nobodyさん
09/12/07 09:57:08
形態素解析ってみんな何使ってる?
Mecab使ってみてるけど他のがよさげならそっちも試してみたいんだけど。

451:nobodyさん
09/12/07 11:05:01
>>448
うぽつ

>>449
よくわからんが、GAEでのcronは某サイト見ながらJAVAでやってるの?
それとも自前?

452:nobodyさん
09/12/07 15:47:55
>>449
GAEでの”/自分のアドレス”ってappengine.google.comで見たときのTitle=eclipseのpackageの名前じゃないか?
eclipseでも同じ名前にしてる?
あとローカルで開くってのがブラウザで開いてるということならブラウザがfaviconを探しにいく
当然favicon見つからず404になる

>>450
Yahoo APIの使ってる。

453:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/07 19:31:13 MdLiWJgY
開発が一段落したので公開中のwikiを載せます。
URLリンク(knowledge.ddo.jp)
発展途上なので機能は貧弱ですがプラグインファイルの開発を手伝っていただければ良いソフトになると思います。
次スレがあればテンプレに組み込んでいただけると嬉しいです。

454:nobodyさん
09/12/07 20:18:17
>>453
ごめん全然関係ないけど…土壇場って独壇場じゃね?

455:nobodyさん
09/12/07 20:54:23
phaさんとこちょっと見てて前から不思議だったんだけど
あのスクリプトってそんなに環境によって動かないものなのか?
自分もプログラミングなんて全くの素人だがphaさんの使って
無料のサーバーでCron-jobから某サイトを参考にGAEで動かして
エラーになったりしても調べてなんとか解決できたし自分で変更もした
自分がたまたま運がよかったのか?

456:nobodyさん
09/12/07 21:27:13
運の問題にしないで原因調べたら?

457:nobodyさん
09/12/07 21:31:58
>>455
>エラーになったりしても調べて
が出来ないんだろう。
環境はIE6です!みたいなこと言ってた人も居たし…。
エラー文読む気ないから丸投げ。

あと本家の鯖の不調と設置の問題の切り分けが難しいのかも。
本体不安定で動かないのかスクリプトかcronか
どれが問題かわからないから丸投げ。

しかし今朝から本家不安定でうちのも不調だわ。

458:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/07 21:35:20
>>454
あれ?変換間違えました?

459:nobodyさん
09/12/08 01:05:41
好きに書きゃいんじゃね。
相手が求めてるような楽屋裏話なんてないんだからそういうのがわかりゃ勝手に離れてくさ。

460:nobodyさん
09/12/08 01:06:21
間違えたごめん。

461:nobodyさん
09/12/08 05:26:14
某サイト参考にGAEで動かそうと作っていたんですがtestcronの中にTestcronServlet.javaが何回プロジェクト作り直しても出てこないんですがどうすればいいですか?
ファイル作成しようにも調べ方が悪いのか参考になりそうなページ出てこなくて息詰まってますorz

462:nobodyさん
09/12/08 06:35:04
>>461
自分もそれなったけど、
プロジェクト作成時に「Google Web ツールキットを使用」の
チェックを外さなかった、に30ペソで。

463:461
09/12/08 06:41:40
>>462
ありがとうございます!!!
チェック外して作り直したらちゃんと出てきてくれました!!!

464:nobodyさん
09/12/08 09:13:00
チェックを外す、とかの記載ないから忘れやすいは忘れやすいところだな

>>450
何それおいしいの?
ごり押しおいしいれす(^q^)

465:nobodyさん
09/12/08 15:14:16
土壇場(どたんば)
独擅場(どくせんじょう)

真ん中の字は違う。

466:nobodyさん
09/12/08 15:57:36
土壇場(どたんば)
独擅場(どくせんじょう)
独壇場(どくだんじょう)

日本語って難しい

467:nobodyさん
09/12/08 16:19:53
独壇場と独擅場の違い
URLリンク(www.nhk.or.jp)
へえーAA略

GAEでcronがちゃんと動いてるのにリプライ拾わない事が多々ある
@で話しかけてから
Cron Jobsをチェック→on time successだがリプライ返さない・Logs見ても200
URLリンク(hogehoge.appspot.com)にアクセスすると
指定時間内のリプライないよと言われる
でもブラウザでphpにアクセスするとリプライをちゃんと返す
だが放置してるとちゃんと拾う時もある
もう自分では原因が分からん…

GAEはモノクロ2階調さんのを参考にJAVAで動かしてる
同じソースで作った他の定期ポストは絶好調なんだが
こうしたらいいんではとかあれば教えて下さい

468:nobodyさん
09/12/08 17:03:32
>>467
自分も同じ状況だ
GAEはタイムアウトの判定がシビアだから、
自分の鯖とGAEの距離が長すぎると駄目なのかもって意見をどこかで見た
ちなみに自分はロリポにPHPを置いたときは全くリプライが返ってこず、
@pagesに変えたら五割ぐらい返すようになった
あと、24時間以内に同じ内容は投稿できないからそれに引っ掛かってる可能性もなくはないか?

469:467
09/12/08 17:39:13
>>468
うーん同じ内容の投稿制限は引っ掛かってない筈。リプライの数は割と多めだし
それに同じ内容でも@Aさんと@Bさんに返すのは別投稿扱いだし

リプライ数がスクリプトを重くしてるからか?とも思ったんだが
30分定期ポストの方が長いくらいなのにそっちは成功してる
リプライ回す時間は5分だからそこまで無茶してるとも思えない
この差がわからないんだよなー
どっちも動きが悪かったら鯖が悪いんだと思えるんだけど…
たまにちゃんと返しまくる事もあるからphpも悪くない…筈w

以前cron-jobでやってた時に@pagesが重くてさくらに変更して
今はそのままさくらで使ってるんだが…一度動かない奴だけでも鯖変えてみるよ
ありがとう

470:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/08 20:06:19
>>450
使うとしたらchasen + nkf

471:nobodyさん
09/12/08 23:27:44
今日の午前中くらいまでは正常に動いていたのに
夕方くらいから急にGAEで失敗続きになってしまった・・・

Twitter本家も無関係の人のTLが流れたりしてるみたいだし
何かサーバーの調子が悪いんかな?
他にもGAE使ってて同じような人居る??

472:nobodyさん
09/12/09 00:06:04
ノシ
もう全無視よりいいやとcronjobも並行してみたが
結局どっちも動き悪い
閲覧はクライアント使ってるけど昨日くらいからAPIエラーも多発してるし
細かい鯖落ちも頻発してるみたい

473:nobodyさん
09/12/09 02:56:14
GAEでやってる人Dashboardのグラフどうなってる?
30分定期ポストのは0から0.004の間でvvvvvvvvvて感じなんだが
動きの悪い5分のリプライの方は0.004あたりでずっとまっすぐなんだ
時間の幅が大きいからかと思ったが以前テスト用に作った2分定期のはvvvvだった
まっすぐなのはずっと処理が終わってないってことなのかね…
でもリプも返す時は返すしその時もグラフはまっすぐなんだがw

474:nobodyさん
09/12/09 09:31:03
同じく0~0.04くらいでVVVVVVだな
昨日はいきなり0.013くらいまでハネ上がった時間帯があったが

475:nobodyさん
09/12/09 12:48:01
cronjob本当に動き悪いな
1時間1回にセットして10時間経過見てたけど1回しか動かない

476:nobodyさん
09/12/09 15:10:48
cron-jobの動きが悪いからWebCron.orgに移行考えてるんだけど
支払いとかではトラブルになった事はない?
海外サービスはその辺りがどうも不安

477:nobodyさん
09/12/09 15:39:23
話を切って悪いんだけど相談させてください。
botが完成してあとはIDを取るだけなんだけど既に他の人が自分と全く同
じbotを作ってた。
でも、その人はIDだけ取っておいてbotは全く動かしていない状態なんだ
けど、こういう場合はどうしたらいいんだろう。
気にせず自分のbotを上げていいのかな・・・

478:nobodyさん
09/12/09 15:48:28
>>477
微妙にスレ違いだと思うけど
同人板にTwitterスレあるからそっちで聞いたほうがいいかも
そっちでもたまにbotの話題になってるから。

他の、例えば天気予報や占い等の否キャラbotなら気にしないでいいと思う

479:nobodyさん
09/12/09 16:09:54
ごめん、478の最初のほうは「キャラbotなら」という前提の話しです

480:nobodyさん
09/12/09 17:26:34
>>477
別にいいんじゃないの?
俺もキャラbot作っててその状況なったことあるけど(しかも後者)
別にそのまま気にせずやってるなぁ
キャラbotでも複数あるキャラとかあるし
それぞれに面白みがあればいいんでないかな

481:nobodyさん
09/12/09 17:38:38
>>477
内容ダダ被りとかでなければいいんじゃないの?
自分も某キャラのbot作ってるけど、友人も同じキャラのbot作ってる
性格がだいぶ違う設定になっているのでフォロワーさんは自分の好みの方を
選んでフォローしてる感じ
実際に「○○のbot見つけたけど下ネタが多くて無理、
もうひとつ違うのがあったからこっちフォローした!」っていう呟きも見たしさ

482:nobodyさん
09/12/09 20:10:44
>○○○Servlet.javaって作ってるよね?
それの ○○○ を書くはず。↓
<cronentries>
<cron>
<url>/○○○</url>
<description>crontest the run every 2 minutes</description>
<schedule>every 2 minutes</schedule>
<timezone>Asia/Tokyo</timezone>
</cron>
</cronentries>

<url>/○○○</url> のとこに○○○Servlet.javaの○○○入れて
デプロイしてみたらon time Successになるもののツイートできない。
文字化けしてるからコードも見てみたけどUTF-8になってる。
かれこれ5時間ぐらい弄ってるけど何がなんだかさっぱりわからないorz

483:nobodyさん
09/12/10 01:10:25
自鯖の人は少数なのかな

484:nobodyさん
09/12/10 02:10:48
鯖は立ててないけど自前のPCでやってるよ
PHPさえインストールしてりゃWSHかなんかで自動実行できるしね

485:nobodyさん
09/12/10 03:22:04
GAEで30分に1回呟くcronを動かしてて、
慣れてきたからリプライにも反応するように新しくphpを用意したんです。
んでもって新しいアプリケーションと2分間隔で回るファイルを作りました。
いざデプロイしたら元の30分の方まで2分間隔で回るようになって、
しかもリプライの方がひとっことも話しません。
何がいけないのか自分にはさっぱりわからないので知恵をお貸しくださいorz

486:nobodyさん
09/12/10 03:23:40
GAEを使わない

487:nobodyさん
09/12/10 05:14:39
動かないって人は本体が最近バグ出てるしよく落ちるし
今は様子見の方がよくないか?
明らかなエラーとかでない限り

今まで動いてたやつも動かなくなったりしてる中で
原因特定するのは難しいと思う

488:nobodyさん
09/12/10 06:43:46
コナミキャラってやばいの?今作ってるのそれなんだが…

489:nobodyさん
09/12/10 11:25:00
そなの?俺コナミキャライパーイフォローしてるが

490:nobodyさん
09/12/10 12:04:00
姉ヶ崎作ってた人がサイトに誘導の上寄付を募ってた?らしい
そのコンテンツとかは消された
自分も言われて見にいった口なのでよく知ってる人フォローよろ
でもまだbotは消されてないから大丈夫じゃね?

491:nobodyさん
09/12/10 14:59:50
すみません、質問させてください。
Phaさんのサイトを見てbotを作ったんですが、反応しません。
鯖はロリポ、cronはGoogleのエンジンを使ってます。

質問を箇条書きにしてみました。
色々ググってみたけど、途方にくれたのでお知恵を拝借できると助かります。

・Eclipseを使ってアップロードしたんですが、左側のprojectexplorerにある
作ったcronアイコンにバツが付いている。これはどこかで記述ミスをしたものかどうか。

・Google App engineでfavicon.icoがどうのと書かれてます。そのアイコンをまず
どこに設置すればいいのか、そしてapp.yamlは何処に設置するものなのか。
自分で作るのか、作成した元のcronの中に突っ込むのか。そのファイル自体はcronの中には
ありません。

・EclipseでcronServlet.javaの編集の際、プログラムを指定するURLを書くんですが
これは複数のphpファイルを,で区切ってhttp://から指定して書くものなのか。

以上です。
よろしくお願いします。どうにも動いてくれないので…

492:nobodyさん
09/12/10 15:47:36
basic auth廃止とな(´・ω・`)

493:nobodyさん
09/12/10 16:36:58
TwitBot Clubってどうなんだろう
手軽でいいとは思うけどGAEからBAN喰らったら閉鎖とか書いてあるから怖い

494:nobodyさん
09/12/10 16:46:59
TwitBot Clubでぐぐってみたら自動bot作成サービスみたいな感じ?
こんなんでライトユーザのbot乱発したら最近ただでさえ鯖不調なのにサーバの負担厳しくないかな。

495:nobodyさん
09/12/10 16:49:39
自分がGAEでcron動かすとき参考にした記事にも、
このやり方はBANされるかもって書いてたなあ
botのフォロワーが増えてからBANされたら途方に暮れそうだgkbr

496:nobodyさん
09/12/10 18:50:25
ちょっと勉強して自分でプログラム組んだら?
cron jobでも全然問題ないぞ。

phaさんとこのに頼ってる人は有料cronに手を出したりGAEでBANされたり大変そうだな。

497:nobodyさん
09/12/10 19:07:35
cron-job、10分ぐらい時間ずれてない?今朝から。
0分にpostさせてるBOTが10~15分辺りに反応してて。
設定し直したけど直らないんだよなー。

498:nobodyさん
09/12/11 06:19:55
>496
少しずつphp勉強してるんだけどphaさんのスクリプトよりbardothodolさんのcurl使うやり方のが軽いのかな?
自分で一から作る力はまだ全然ないからそれならセリフの生成のところだけ入れ替えて書きかえたい
496は全部自作してるん? phaさんのスクリプトの何が問題なん?

499:nobodyさん
09/12/11 09:06:57
cron job問題ないか?
ここ3日ほど経過見てるけど1回しかまともに動いてない
勝手に切られてたりするし駄目だろこれ…

500:nobodyさん
09/12/11 09:44:28
cron-job確かに10分くらいズレてる
昨日なんかは一応稼働するにはしてたみたいだけど
今日はまた失敗続きだ…

501:nobodyさん
09/12/11 12:29:55
>>498
まあ軽いっちゃ軽い。最低限の処理だしな。
でもphaさんとこで使ってるNet_Twitter自体もやってることはそんな大差ないから
今のサーバマシンでわかるほどの差はでんと思う。
496じゃないけど俺は自作してる。Net_Twitterも最低限のAPIしかないし。

502:nobodyさん
09/12/11 14:15:56
自分はbotの発言でTLが埋まってしまうのを考慮して(いろんなキャラbotをフォローしてるだろうし)、定期発言3時間に1回で設定してる。
cronはcron jobだけど、一度も失敗したことないし、勝手にオフになることもない。

リプライとTLに反応するプログラムは、2分おきにアクセスするようにcron jobで設定してるけど、こっちはたまに勝手にオフになる。
けどPhaさんとこのスクリプトじゃないから、多少遅れても全レスするし問題ないかなと思ってる。

503:nobodyさん
09/12/11 14:31:45
cron jobで登録日からずっと1時間に1回でリプ無の定期ツイット試運転してるけど、
今のところ60回中1回しか動いてないし勝手にオフにもなる。
もちろんBOTが手動で動くのは確認済。

cron jobってどうやったらちゃんと動くの?
Phaさんとこのスクリプトだから駄目なのかな
一応今PHP勉強して自分でも組んでるけど今ちゃんと動いてる人に聞きたい

504:nobodyさん
09/12/11 16:51:50
主な原因としては
・Cron-jobが重い
・twitterが重い
・BOTのスクリプトが重い
・BOTのスクリプトの出力サイズが大きい(大きいと送受信に時間がかかる)
・BOT鯖が重い(無料や激安な鯖は顕著)
・タイムアウトにひっかかる

505:nobodyさん
09/12/11 17:07:21
いくらなんでも60回に1回とか動かなさ過ぎだろ
スクリプトが無駄に大きくってるんじゃないか?
>>504の指摘点をもっかい見直せ

506:nobodyさん
09/12/11 17:27:22
今30分に1回定期postするプログラムと
0時、6時、12時、18時に指定した日付までのカウントダウンをpostするプログラムの2つ登録してるけど
前者は一度も失敗してないし勝手にneinになったこともない
後者だけ毎回8時(向こうの鯖が日付変わる時間)になるとneinになりやすい、あと失敗もしやすいみたい
プログラム自体はどっちもbardothodolさんとこの参考にcurlで使うやり方なんだけど…

507:nobodyさん
09/12/11 19:34:47
cronjob.de使ってる人いますか?
最多でも5分間隔しか設定できないけど勝手に止まることはないみたい
ただ、今借りてる鯖じゃ設定できなさそうでした
翻訳サイトにかけて日本語でおkな文章を解読するにサーバー直下にcronjob_*****.html(*****は指定された数字)ってファイルが必要なのかなと思ったんですが
アドレスが向こうの希望通りには設置できないんです

508:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/11 19:50:35 lt7fGhiK
サイトのメンテナンスでwikiの位置が変更になりました。
URLリンク(knowledge.ddo.jp)
に変更です。手間くって申し訳ないです。
ポータルサイトも立ち上げる予定なので、それなりに生暖かく見守ってやってください。


509:nobodyさん
09/12/11 19:57:16
うちは2分に一回、自作スクリプトを自鯖(窓)のcronNTで叩いてるけど、
getもpostも問題なさげ
Services_Twitter使用

510:nobodyさん
09/12/12 01:20:53
マルコフはやくー

511:nobodyさん
09/12/12 01:31:28
そこまで他人に頼るとどれもこれも似たようなことしか言わないBOTにしかなんないぞ。

512:nobodyさん
09/12/12 10:36:34
PHPとPECL OAuthライブラリを使ってAPIを叩いています。

APIの仕様書を見ていると、アクセストークンを設定した時に、レスポンスとしてユーザIDとスクリーン名が返ってくるとのことでした。
それらを使用したいと考えているのですが、どうにも取得が出来ません。(setTokenしたあとに、getLashResponseを呼んでみたり)

どうにかそのレスポンスを得る方法は無いのでしょうか。もしくは、そのレスポンスを取得出来るPHPで使用可能なOAuthライブラリは無いでしょうか。

513:nobodyさん
09/12/12 22:01:18
@のない呟きに反応するbotって作れるのかな
つかれたー!って人におつかれって言ってあげるようなことなんだけど
@がないとどうにもわからん・・・。

514:nobodyさん
09/12/12 22:16:59
登録した人のタイムラインを参照して同じことすればいいのでは?

515:nobodyさん
09/12/12 22:36:56
やってみた たぶんいける
でもあれなんだよね、他の人への@も読みこんじゃうと思うんだよね

516:nobodyさん
09/12/12 22:50:50
他の人への@があったら処理しないようにすればいいのでは?

517:nobodyさん
09/12/13 01:34:10
>>516
かまってくれてありがとうw
他人への@に、てかすべての@に反応しないように書いてたんだけど
\@があったら弾くようにしたはずなのにうまく回らない
細かいミスでHP削られたので今日はもう寝ます、ありがとう

518:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/13 02:14:06 B1fOU/ii
>>517
@ってエスケープ必須でしたっけ?(in PHP

519:503
09/12/13 09:41:31
いろいろ検証したけど鯖の問題かもしれない…

・Cron-jobが重い
 他の人は動いてるから重くは無いんだと思う
・twitterが重い
 少し前は変だったけど今は変な挙動もしてない
・BOTのスクリプトが重い
 phaさんのpost_random.phpのスクリプトそのままだから大丈夫なはず
・BOTのスクリプトの出力サイズが大きい(大きいと送受信に時間がかかる)
 最大全角35文字だから大きくないと思う
・BOT鯖が重い(無料や激安な鯖は顕著)
 @pagesだから分からない ただ手動でアクセスした時は必ず動く
・タイムアウトにひっかかる
 検証の仕方が分からない

@pagesにアクセス解析付のHTML置いて、そこで呼び出したけどCron-jobのアクセスは無かった
どこか有料だけど安いレン鯖でも借りた方がいいのかな…
オススメはロリポ?

520:nobodyさん
09/12/13 09:56:28
流れぶった切って申し訳ないけど、発言などをさせるphpファイルが
投稿出来ずにエラーになるのは何でだろう?
ブラウザ上で確認しただけなんだが、ただ一言ERRORって出るだけなんだ…
service_twitterの本体プログラム自体はエラー出てない
勿論パスワードもIDも間違ってないんだ…何でだ…orz

521:nobodyさん
09/12/13 10:10:26
どのphpファイル使ってて何をしてどういうエラーが出たのかさっぱりわからん。

522:nobodyさん
09/12/13 10:12:25
あと間違ってない、って主観の判断はどうでもいい(そう思ってて間違ってることもよくある)から
やったことや、ソースをそのまま貼ったほうが原因は特定しやすい。

523:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/13 10:20:09 B1fOU/ii
>>520
ソースうpきぼん

524:nobodyさん
09/12/13 11:03:50
最近よくいる糞コテはなんなの

525:nobodyさん
09/12/13 11:41:51
何もしてない奴よりなんぼか形にしてる奴のがましよ。
NG登録は簡単なんだし気になるならあぼーんしときゃいいさ。


526:520
09/12/13 14:04:45
言い捨てるような形になってしまってごめん
ソース元は銀さんのとこで、ご本人が説明されている環境をそのまま使用してる
設置サーバーもやり方も全く同じ
Twitter.phpにアクセスすると真っ白な画面にになり、ランダムに呟かせるphpファイル
(例えばbot.php)にアクセスすると、白い画面に一文字「ERROR」の文字が出る

↓ソース

527:520
09/12/13 14:10:31
ソース載せると規制に引っかかってしまうんだorz

//d.hatena.ne.jp/silverbot/20090829#c1260572663

ここのページのソース丸コピペ、フルパス、ID、パス、台詞だけ違う状態


528:nobodyさん
09/12/13 15:03:18
>520
試してないが
if(! $st->setUpdate($post) ){
die('ERROR');
辺りを消したらちゃんとしたエラー吐かないかな?

529:nobodyさん
09/12/13 15:46:35
定期postのBOTに過去10回分と同じポストかどうかを判断して
違ったらポストって機能を加えたいんだけど、ログの書き込みがうまくいかない。

log.txtをfgetsで配列aに読み込み→変数bと違うか判断→違ったら変数bポスト→
配列aの[1]~[9]と今ポストした変数bをfor文でlog.txtにfputsしてるだけなのに。
読み込みパターンをw、a、r+どれにしたらいいんだろう?

色々試したけど追加書き込みされたりポストしたばかりのだけになったりする。
rで配列Aに読み込み→wで全消し→aで書き込みするしかないのかな?
そもそもこんな機能いらない?

530:nobodyさん
09/12/13 16:33:37
ついにできた^0^/
GoogleにでもUPするかな

531:nobodyさん
09/12/13 18:15:45
>>529
まず言語は?

532:nobodyさん
09/12/13 18:34:07
>>531
PHPです
今一応出来たけどログとの比較の部分で審査でタイムアウトする時があるから見てください

<?php
include_once 'フルパス';

//ポストリストとログ読み込み
$filename = "plist.txt";
$plist = file($filename);

$filename2 = "log.txt";
$fp2 = fopen($filename2,'r+');
flock($fp2, LOCK_EX);
for($i = 0;!feof($fp2);$i++){
$log[$i] = fgets($fp2);
}
fclose($fp2);

533:nobodyさん
09/12/13 18:37:38
//ポスト選定と審査
$key = array_rand($plist);
$ok = 2;

while($ok >= 1){
$key = array_rand($plist);
for($a = 0; $a < $i; $a++){
if($plist[$key] == $log[$a]){
$ok = 1;
}
}
if($ok <> 1){
$ok = 0;
}
}

$post = $plist[$key];

//ログ書き込み
$fp2 = fopen($filename2,'w');
flock($fp2, LOCK_EX);
fputs($fp2,$plist[$key]);
for($i = 0;$i <= 8;$i++){
fputs($fp2,$log[$i]);
}
fclose($fp2);

534:nobodyさん
09/12/13 18:40:36
Service_Twitter設定は銀さんのここと一緒
URLリンク(d.hatena.ne.jp)

タイムアウトするのはこの部分 $plist[$key] == $log[$a]
ログはツイッター本家と同じく上が新しいものになるようにしてる
最近勉強始めたばかりなので見難いかもしれないけどお願いします

535:520
09/12/13 19:44:53
>>528
反応ありがとう!
試しに


if(! $st->setUpdate($post) ){

die('ERROR');

}
を抜いてやってみたら、ただの白いページが出た…
そんでもって投稿はされてない
あるとERRORになってないとシカトって一体どういう…???

536:nobodyさん
09/12/13 23:02:07
>>532
ログの保存の仕方はわからないけど改行コードは入れてる?
少なくとも末尾に \n 加えないとPOSTがつながって見えるぞ。書き込みモードはwでいい。

$fp2 = fopen($filename2,'w');
flock($fp2, LOCK_EX);
fputs($fp2,$plist[$key] . "\n");
for($i = 0;$i < 9;$i++){//8になってたけど9だよね?
fputs($fp2,$log[$i] . "\n");
}
fclose($fp2);


以下おせっかい

常識的に考えたら面倒なwhileじゃなくてforeach使うだろ
あとif($ok <> 1)の処理がよくわからん。
1じゃなかったら0にするんだったら最初から0にしておけばいいと思うが

$key = array_rand($plist);
$ok = 0;//最初から0にしておく

foreach($log as $logs){//$logの配列が$logsに入ってforeachループ内では$logsに配列の添え字([2]とか)がいらなくなる
if($logs == $plist[$key]){
$ok = 1
break;//同じPOSTが1つでもあったらPOSTしないと勝手に解釈
}
}

2chに書きこむ用のコードだと思うがいろいろなとこ抜けてて心配だ

537:nobodyさん
09/12/13 23:35:20
>>534
の銀さんのBOTの作り方見てたけど結構ひどいな。
Services_Twitterを今後使うと見せかけて、リプライとかは全く関係ない別のソースを使ってる。
PHP触ったばかりかもしれないから仕方ないけど。

538:nobodyさん
09/12/14 00:25:34
>537
銀さんとこのは全部他のとこの記事のコピペだよ
リプライと定時のソースはそれぞれ違う人から持ってきてるんだから
関係なくて当たり前

539:nobodyさん
09/12/14 00:29:22
>>536
すみません、書き忘れてました。
plist.txtに\nが入ってるのでfile()の処理で改行コードまで配列に入れているようです。
そのためlog.txtはちゃんと改行されて見えてました。ありがとうございます。

foreach文を知らなかったので後でググってみます。
while以下の処理は、同じ文があったらもう一度array_rand()してfor文で回して再審査、
同じ文が無かったらwhileから抜けるとしたかったのでこうしました。

初期値が$ok = 0だとwhileにすら入らず抜けてしまい、
whileの条件を$ok == 0にすると、今度は同じ文があった時にwhileから抜けてしまうため、
初期値は$ok = 2、同じ文章があれば$ok = 1にしてwhileからやりなおし、
同じ文がなかったら$ok = 0 にしてwhile抜けてポストにしました。

貼り付けたソースは定期ポストほぼ全文ママです。
foreach文なら大丈夫でしょうか?いいやり方があれば教えていただきたいです。

540:nobodyさん
09/12/14 01:04:19
>>539
タイムアウトするのはtwitterの鯖なのか、botを動かしている鯖なのか、どっちですか?
twitterだったら鯖が重いかtwitterにPOSTするスクリプト(botとしての機能じゃない方)が悪い。
botを動かしている鯖なら鯖変えるとか。


と、ここまで書いてから気づいたけど

if($plist[$key] == $log[$a])

文字列で==はちゃんとした判定はできないから

if($plist[$key] === $log[$a])

===じゃないとだめだよ。

541:nobodyさん
09/12/14 08:12:41
>>540
ごめん俺よくわかってないかもしれんが
同じ文字列型同士で == じゃ問題ある場合ってあったっけ?

542:nobodyさん
09/12/14 10:38:45
>>541
同じ文字列型でも数値型で比較される場合があるから、
文字列で比較する場合はなるべく===を使った方がいいってことじゃない?

543:nobodyさん
09/12/14 11:10:23
>>542
文字列型同士の比較なら==でも===でも値は一緒な気はしたんだけどそういうことあるの?
例えばどういう場合だろ。

544:nobodyさん
09/12/14 11:55:04
銀さんのbotを参考に製作中だけど、
cronがうまく動かない。
「zu groß」って容量大きすぎってこと?どうすればいいの?

545:nobodyさん
09/12/14 12:11:03
>>544
状況の情報が少なすぎる
kwsk

546:nobodyさん
09/12/14 13:07:35
>>544
cron-job.orgなら「zu gro?」になってても
botの動き的には正常稼働されてるはずだから気にすんな

547:nobodyさん
09/12/14 15:22:27 h7BWhtMh
自動フォロー返しだけやりたいんだけどbotとか初心者なんです。
どうやってやるんですか?

548:nobodyさん
09/12/14 15:28:22
BOTというかプログラム初心者?
それだとまずPHPスレとか見て基本覚えたほうがいいんじゃないかな。

549:nobodyさん
09/12/14 15:49:04 h7BWhtMh
>>548 そうですか・・・初心者なんですけど、やりたいのはフォロー返しだけなんで言われるようにすればできるとは思うんだけど、
そういう紹介サイト的なのがあったらいいんだけど。ってそんな簡単じゃないですよね。
PHPスレものぞいてみます。

550:nobodyさん
09/12/14 16:25:45
びっくりするほど他力本願だな。

551:nobodyさん
09/12/14 16:27:31 h7BWhtMh
>>550 そうなんです~。。。昔twitterには自動フォロー機能ついててよかったけど・・・今はフォロワー管理が大変。
プログラムとか難しいことはさけてフォロー返しだけできたらいいと考えてる愚か者ですw

552:nobodyさん
09/12/14 16:32:36
>>551
そんなに面倒臭がってるならフォロー返しなんかやらなきゃいいだけのこと

553:nobodyさん
09/12/14 17:10:33 h7BWhtMh
>>552 いやいや、めんどくさくは無いんですよ。ただプログラムの根本からまともに勉強始めたら数ヶ月かかるでしょ!?
何ヶ月もPC画面に縛り付けられるほどの時間がないだけ。
3日程度ならいいけど。

554:nobodyさん
09/12/14 17:11:57
・・・それをめんどくさいって言うんだよ


555:nobodyさん
09/12/14 17:16:59
>>543
ググったら見つかったけど
URLリンク(logic.stepserver.jp)

とりあえず試してみたのがこれ
URLリンク(codepad.org)

上3つはちゃんと動いてるけど下3つはちゃんと動いてないね

556:nobodyさん
09/12/14 17:27:12
URLリンク(jp.php.net)
公式マニュアルに全部書いてある

557:nobodyさん
09/12/14 17:29:44
>>553
いいサイト教えてやるよ
URLリンク(www.google.co.jp)

このサイトで検索すればtwitterAPIの仕様から各言語の利用方法まで詳細に載ってるサイトを検索できるよ。
自動フォロー機能ってのも検索してみれば出てくるんじゃないかな?

558:nobodyさん
09/12/14 17:49:50 h7BWhtMh
>>555 ありがとう。この文字をコピーしてどこに貼り付けたらいいのかな?・・・


559:nobodyさん
09/12/14 17:53:07
おいお前ら、もう構ってやるなよ…真性だぜ

560:nobodyさん
09/12/14 17:54:48
>>558
おでこ

561:nobodyさん
09/12/14 17:58:01 h7BWhtMh
>>560 おでことは?

562:nobodyさん
09/12/14 17:59:54 h7BWhtMh
URLリンク(lil.la) これ、インストールしてさっきの文字を貼り付けてみたけどダメだった・・・

563:nobodyさん
09/12/14 18:01:48 h7BWhtMh
あとURLリンク(d.hatena.ne.jp) この人が1番まとも書いてくれてるようなんだけど、
この文字を結局どこへ貼り付けたらいいか書いてないからよく分からん。

564:nobodyさん
09/12/14 18:07:01 h7BWhtMh
URLリンク(www.tweetmanager.com) ←これにも登録してオートフォローとかを有効にしたつもりではいるんだけど、変化なしです。 

565:nobodyさん
09/12/14 18:09:35
初心者の人は銀さんのbotを参考にするといいと思う。

昨日からbot作りはじめたけど
postさせるところまではできたよ。


>>546ありがとう。気にしないことにして次の手順頑張る。

566:nobodyさん
09/12/14 18:16:20
がんばれ><

567:nobodyさん
09/12/14 18:17:31 h7BWhtMh
銀さんのbotはどこから読めば?一番初めはただのガタガタの文字しかのってないし・・・

568:nobodyさん
09/12/14 18:18:25 h7BWhtMh
URLリンク(www.tweetmanager.com) ←ってかこれって違うの?

569:nobodyさん
09/12/14 18:25:19
もう死ねよ

570:nobodyさん
09/12/14 18:27:26
URLリンク(d.hatena.ne.jp)

↑銀次さんのやつ。
リンク貼るくらいしかできないけど頑張れー!
サーバの用意とかpostさせる手順1とか、トラックバックのとこに色々あるから。

571:nobodyさん
09/12/14 18:30:34
>>569
da ma re


572:nobodyさん
09/12/14 18:30:54
あ、やりたいのはフォロー返しなのか・・・
お役に立てなかったかも。。ごめん

573:nobodyさん
09/12/14 18:55:50 h7BWhtMh
いえいえ、教えてくれた方ありがとう!!ゆっくり銀さんのを読んでみますね。参考になります。

574:nobodyさん
09/12/14 19:05:13
PHPでキャラbotのソース書いてるんだが、いまいち分からないところが出てきた

リプライで「A」に反応して「Bをつくりますか?」とか「B入りますか?」 みたいに返したい
つまり「BC」という2つの変わる部分が欲しいといえばいいのだろうか
B=食べ物名
C=つくりますか?、入りますか? のような文
というふうにしたい
今のところのソースが下の状態
//前略////
$mesi=array("ごはん",
"パン",);
//中略/////
if(preg_match("/はらぺ|はらへ|腹減/u",$com) > 0){
$key = array_rand($mesi);
$post = $mesi[$key];
$return =$reply_name." おなかすいたんですか? じゃ、".$post."はどうですか?";
}
//後略////

もうどこをどういじればいいのかわからなくなってきた/(^o^)\
$return =~以降を増やせばいいのかもしれないが、どうやって追加すればいいのか分からないんだ
だれか助けてくれ

575:nobodyさん
09/12/14 19:18:30
>>574
はい。
returnは予約語なはずだから使わないようにね


<?php
$reply_name = "@screen_name ";

//前略////

$mesi=array("ごはん","パン");

//中略/////

$com = "はらへった";

if(preg_match("/(はらぺ|はらへ|腹減)/u",$com,$m) > 0){
$key = array_rand($mesi);
$post = $mesi[$key];
$returns =$reply_name . " おなかすいたんですか? じゃ、" . $post . "はどうですか?<br>";
echo $returns;
}


?>

576:nobodyさん
09/12/14 19:34:18
UZEEEEEEEEEEEEEEEEE

577:529
09/12/14 20:21:19
>>540
ありがとうございます!とりあえず===にしました

エラーはFatal error: Maximum execution time of 8 seconds exceeded in…というエラーが時々出ます。
鯖とツイッターどちらでタイムアウトしているかは分かりません。
とりあえず今set_time_limitで指定しましたが今は結果待ちです。

cron-jobが全く動いてくれないのもこのせいでしょうか?
今日の昼に毎日毎時0分に叩くよう設定しましたが1回も動いてくれません…。
@pagesとcron-jobで動いている人は沢山いるようなのでコツがあるのでしょうか?
Aktiv?はちゃんとjaにしています。


578:529
09/12/14 20:28:28
577訂正
@pagesではset_time_limitが使えませんでした…

579:543
09/12/14 21:33:06
>>555
うーん。変数の型が違うと暗黙の型変換が行われるから===を使うべきってのはわかってるんだ。
また同じことを言っちゃうけど、「同じ型の場合」に == と === で何が違うの?て話なんだ。

もちろん、値が保障されない場合も考えて===を使う「べき」ってのはわかるし
コーディングするときはもちろんそうするだろうけど
型が同一の場合にも==だとなんか問題あるのかなって確認したかったんだ。
特になさげかな。

580:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/14 22:07:50
経験上言わせていただきますが、`の処理には気をつけてくださいね…冷や汗をかきました。

今現在@windymeltanにmaximaプラグインを積んでいます。数式処理のテスト中です。
@windymeltan maxima:2+4;
のように書いてテストしていただいて結構です。
乱筆しました。失礼。

581:nobodyさん
09/12/14 22:59:49
うん、はしょりすぎて何を言いたいのかわからない。

582:nobodyさん
09/12/15 00:07:48
>>577
毎時0分はたくさんの方が設定していると思われます。
処理内容にもよりますが、ジャストタイムが不要ならば13分とか、48分とかの
中途半端な時間に設定した方が良いかもしれませんね。
1分とかだとサーバーがまだ0分のヤツを処理してたりしてw

583:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/15 00:43:48
>>581
PHPのバッククォートはきちんとエスケープしませう。というお話でした。

584:nobodyさん
09/12/15 08:40:01
>>1

twitter
なぜナウやnawではなく「なう」なのか

URLリンク(d.hatena.ne.jp)



585:nobodyさん
09/12/15 09:44:33
>>584
マルチ乙

586:nobodyさん
09/12/15 10:00:25
>>584
なんでアチコチに貼ってんの?
記事の内容も、典型的な同属嫌悪だし。

587:nobodyさん
09/12/15 11:12:56
ネガキャンしたきゃ愚痴スレででもやるべきだな。

588:nobodyさん
09/12/15 14:13:06
CRONが叩きに来てないのか、叩きに来たけどタイムアウトしたのかどうやったら分かる?
PHP呼び出すHTML作ってアクセス解析付けたけど何もログが残ってない

589:nobodyさん
09/12/15 14:15:37
>>588
CRONサーバー側のログを見る。

590:nobodyさん
09/12/15 14:31:21
phaさんのスクリプトでランダムポストしてるんだけど、
10ツイート/day程度の頻度で、ポスト候補のテキストパターンは100近く仕込んであるのに
やたら同じのばかり選ばれるみたいで、ポストが飛んでしまうことがよくある。
cronも安定してるし他の挙動には問題ないので、この状態がすごく気になる…
どうにか回避する方法はないでしょうか。

591:nobodyさん
09/12/15 15:41:37
ランダムで選ばれたテキストパターンが
自分の発言最新10件と一致しなければpostする様にするとか

592:nobodyさん
09/12/15 15:49:39
GAEでCRONの某記事の人がPC上で動かすCRON?みたいなの作ったみたいだな

593:nobodyさん
09/12/15 16:21:43
>>589
cron-jobにそんなログ見れるページあったっけ?

594:nobodyさん
09/12/15 16:22:37
>>593
ない

595:nobodyさん
09/12/15 16:23:26
>>591
529が作ってたから入れてみたけどタイムアウトになって駄目

596:nobodyさん
09/12/15 16:24:36
>>594
だったら八方塞がりだな…
他の人は動かない原因どうやって突き止めてるんだ

597:nobodyさん
09/12/15 18:10:54
>>595
//ポストリストとログ読み込み
$filename = "plist.txt";
$plist = file($filename);
$filename2 = "log.txt";
$log = file($filename2);

//キー生成
$key=array_rand($plist);
$results = 0;//重複判定用

//キーに該当するポストとログが同じか調べる
foreach($log as $logs){
if($logs === $plist[$key]){//ログと重複した場合
$results=1;//重複している
break;//重複しているのでforeachから抜ける
}
}

if($results==0){//$resultsが0すなわち過去10件と重複してない場合
$post=$plist[$key];//ポストする文にする
}

これでどうだ

598:nobodyさん
09/12/15 18:37:19
芸能人の非公式botってどうなんだろう

599:nobodyさん
09/12/15 19:31:57
>>598
それいったら、キャラクターの非公式botだって…

600:nobodyさん
09/12/15 19:35:48
>>599
全然違うだろ…

601:nobodyさん
09/12/15 20:07:07
>>597
被ってたらポストしないじゃなくて
>>529>>539で言ってたみたいにもう一度array_randしないと
結局ポストせず終わるから駄目じゃないか?

それするとタイムアウトするみたいだけど

602:nobodyさん
09/12/15 20:15:04
・ポストリストとログ読み込み
・ポストリストからランダムにポストする文を選ぶ
・ログと被ってないか判断
・被ってたら選び直し
・最新ポスト追加した最新10ポストのログ再作成
・ポスト

>>529はこれだけ入れたソース作ったみたいだけど
確かに判定入れるならこれだけやらないと意味ないんだよね…

別プログラムでリプライとか入れてるならそっちも含めたログにすると理想的

603:nobodyさん
09/12/15 20:33:24
選び直しを入れてるからタイムアウトになるんだろ


604:nobodyさん
09/12/15 20:43:17
選び直し入れないと判定そのものの存在意義がなくなる
ちゃんとポストするために入れてるんじゃないの?
結局ポスト出来ないなら判定もログ保存もツイッターがしてくれるからいらないよ

605:nobodyさん
09/12/15 23:59:15
cron-jobが動いてくれないよ~;0;
botがまったく無反応になってしまった・・・

606:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/16 00:14:04 CexvtTFs
maximaと連携させるプラグイン作りましたが誰も使わないですよね…¬
URLリンク(knowledge.ddo.jp)

607:nobodyさん
09/12/16 00:59:49
>>601
//ポストリストとログ読み込み
$filename = "plist.txt";
$plist = file($filename);
$filename2 = "log.txt";
$log = file($filename2);

//キー生成
$key=array_rand($plist);

//キーに該当するポストとログが同じか調べる
foreach($log as $logs){
if($logs === $plist[$key]){//ログと重複した場合
$key=array_rand($plist);//もう一度探す
continue;//foreachに戻る
}
}

$post=$plist[$key];//ポストする文にする


こうか

608:nobodyさん
09/12/16 01:08:08
foreach($log as $logs){
これは・・・ゴクリ

609:nobodyさん
09/12/16 01:11:00
ちなみにそれ重複が判明した以降の$logsしか判定しないぞ

610:nobodyさん
09/12/16 01:34:58
>>609
ばれなきゃいいと思ってたけど指摘されたか。

//ポストリストとログ読み込み
$filename = "plist.txt";
$plist = file($filename);
$filename2 = "log.txt";
$log = file($filename2);

//キー生成
$key=array_rand($plist);
$i=0

//キーに該当するポストとログが同じか調べる
while($i<10){
if($log[$i] === $plist[$key]){//ログと重複した場合
$key=array_rand($plist);//もう一度探す
$i = 0;//$logのキーを元に戻す
continue;//whileに戻る
}
$i++;//$logのキーを1つ進める
}

$post=$plist[$key];//ポストする文にする

何度もすまん。けっきょくwhileに戻ったな。
@pagesみたいな鯖じゃなくてもっといい鯖使えばいいのにとか思ったり。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch