- 1 名前:nobodyさん [2009/09/27(日) 14:15:59 ID:Dz08qoo4]
- 見当たらなかったので立ててみた
[公式] twitter.com/ [Twitter 開発ブログ 日本語版] twitterjp.blogspot.com/ *どの言語でもOKですがソースを書く際は何の言語なのかも記載してください。 *初心者のために、なるべくぶつ切りのソースではなく全体的に載せてほしいです。
- 523 名前:DAWNTO_Windy-melt ◆Windy/f9HNwg [2009/12/13(日) 10:20:09 ID:B1fOU/ii]
- >>520
ソースうpきぼん
- 524 名前:nobodyさん mailto:sage [2009/12/13(日) 11:03:50 ID:???]
- 最近よくいる糞コテはなんなの
- 525 名前:nobodyさん mailto:sage [2009/12/13(日) 11:41:51 ID:???]
- 何もしてない奴よりなんぼか形にしてる奴のがましよ。
NG登録は簡単なんだし気になるならあぼーんしときゃいいさ。
- 526 名前:520 mailto:sage [2009/12/13(日) 14:04:45 ID:???]
- 言い捨てるような形になってしまってごめん
ソース元は銀さんのとこで、ご本人が説明されている環境をそのまま使用してる 設置サーバーもやり方も全く同じ Twitter.phpにアクセスすると真っ白な画面にになり、ランダムに呟かせるphpファイル (例えばbot.php)にアクセスすると、白い画面に一文字「ERROR」の文字が出る ↓ソース
- 527 名前:520 mailto:sage [2009/12/13(日) 14:10:31 ID:???]
- ソース載せると規制に引っかかってしまうんだorz
//d.hatena.ne.jp/silverbot/20090829#c1260572663 ここのページのソース丸コピペ、フルパス、ID、パス、台詞だけ違う状態
- 528 名前:nobodyさん mailto:sage [2009/12/13(日) 15:03:18 ID:???]
- >520
試してないが if(! $st->setUpdate($post) ){ die('ERROR'); 辺りを消したらちゃんとしたエラー吐かないかな?
- 529 名前:nobodyさん mailto:sage [2009/12/13(日) 15:46:35 ID:???]
- 定期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さん mailto:sage [2009/12/13(日) 16:33:37 ID:???]
- ついにできた^0^/
GoogleにでもUPするかな
- 531 名前:nobodyさん mailto:sage [2009/12/13(日) 18:15:45 ID:???]
- >>529
まず言語は?
- 532 名前:nobodyさん mailto:sage [2009/12/13(日) 18:34:07 ID:???]
- >>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さん mailto:sage [2009/12/13(日) 18:37:38 ID:???]
- //ポスト選定と審査
$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さん mailto:sage [2009/12/13(日) 18:40:36 ID:???]
- Service_Twitter設定は銀さんのここと一緒
d.hatena.ne.jp/silverbot/20090829/1251532471 タイムアウトするのはこの部分 $plist[$key] == $log[$a] ログはツイッター本家と同じく上が新しいものになるようにしてる 最近勉強始めたばかりなので見難いかもしれないけどお願いします
- 535 名前:520 mailto:sage [2009/12/13(日) 19:44:53 ID:???]
- >>528
反応ありがとう! 試しに if(! $st->setUpdate($post) ){ die('ERROR'); } を抜いてやってみたら、ただの白いページが出た… そんでもって投稿はされてない あるとERRORになってないとシカトって一体どういう…???
- 536 名前:nobodyさん mailto:sage [2009/12/13(日) 23:02:07 ID:???]
- >>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さん mailto:sage [2009/12/13(日) 23:35:20 ID:???]
- >>534
の銀さんのBOTの作り方見てたけど結構ひどいな。 Services_Twitterを今後使うと見せかけて、リプライとかは全く関係ない別のソースを使ってる。 PHP触ったばかりかもしれないから仕方ないけど。
- 538 名前:nobodyさん mailto:sage [2009/12/14(月) 00:25:34 ID:???]
- >537
銀さんとこのは全部他のとこの記事のコピペだよ リプライと定時のソースはそれぞれ違う人から持ってきてるんだから 関係なくて当たり前
- 539 名前:nobodyさん mailto:sage [2009/12/14(月) 00:29:22 ID:???]
- >>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さん mailto:sage [2009/12/14(月) 01:04:19 ID:???]
- >>539
タイムアウトするのはtwitterの鯖なのか、botを動かしている鯖なのか、どっちですか? twitterだったら鯖が重いかtwitterにPOSTするスクリプト(botとしての機能じゃない方)が悪い。 botを動かしている鯖なら鯖変えるとか。 と、ここまで書いてから気づいたけど if($plist[$key] == $log[$a]) 文字列で==はちゃんとした判定はできないから if($plist[$key] === $log[$a]) ===じゃないとだめだよ。
- 541 名前:nobodyさん mailto:sage [2009/12/14(月) 08:12:41 ID:???]
- >>540
ごめん俺よくわかってないかもしれんが 同じ文字列型同士で == じゃ問題ある場合ってあったっけ?
- 542 名前:nobodyさん mailto:sage [2009/12/14(月) 10:38:45 ID:???]
- >>541
同じ文字列型でも数値型で比較される場合があるから、 文字列で比較する場合はなるべく===を使った方がいいってことじゃない?
- 543 名前:nobodyさん mailto:sage [2009/12/14(月) 11:10:23 ID:???]
- >>542
文字列型同士の比較なら==でも===でも値は一緒な気はしたんだけどそういうことあるの? 例えばどういう場合だろ。
- 544 名前:nobodyさん mailto:sage [2009/12/14(月) 11:55:04 ID:???]
- 銀さんのbotを参考に製作中だけど、
cronがうまく動かない。 「zu groß」って容量大きすぎってこと?どうすればいいの?
- 545 名前:nobodyさん mailto:sage [2009/12/14(月) 12:11:03 ID:???]
- >>544
状況の情報が少なすぎる kwsk
- 546 名前:nobodyさん mailto:sage [2009/12/14(月) 13:07:35 ID:???]
- >>544
cron-job.orgなら「zu gro?」になってても botの動き的には正常稼働されてるはずだから気にすんな
- 547 名前:nobodyさん [2009/12/14(月) 15:22:27 ID:h7BWhtMh]
- 自動フォロー返しだけやりたいんだけどbotとか初心者なんです。
どうやってやるんですか?
- 548 名前:nobodyさん mailto:sage [2009/12/14(月) 15:28:22 ID:???]
- BOTというかプログラム初心者?
それだとまずPHPスレとか見て基本覚えたほうがいいんじゃないかな。
- 549 名前:nobodyさん [2009/12/14(月) 15:49:04 ID:h7BWhtMh]
- >>548 そうですか・・・初心者なんですけど、やりたいのはフォロー返しだけなんで言われるようにすればできるとは思うんだけど、
そういう紹介サイト的なのがあったらいいんだけど。ってそんな簡単じゃないですよね。 PHPスレものぞいてみます。
- 550 名前:nobodyさん mailto:sage [2009/12/14(月) 16:25:45 ID:???]
- びっくりするほど他力本願だな。
- 551 名前:nobodyさん [2009/12/14(月) 16:27:31 ID:h7BWhtMh]
- >>550 そうなんです〜。。。昔twitterには自動フォロー機能ついててよかったけど・・・今はフォロワー管理が大変。
プログラムとか難しいことはさけてフォロー返しだけできたらいいと考えてる愚か者ですw
- 552 名前:nobodyさん mailto:sage [2009/12/14(月) 16:32:36 ID:???]
- >>551
そんなに面倒臭がってるならフォロー返しなんかやらなきゃいいだけのこと
- 553 名前:nobodyさん [2009/12/14(月) 17:10:33 ID:h7BWhtMh]
- >>552 いやいや、めんどくさくは無いんですよ。ただプログラムの根本からまともに勉強始めたら数ヶ月かかるでしょ!?
何ヶ月もPC画面に縛り付けられるほどの時間がないだけ。 3日程度ならいいけど。
- 554 名前:nobodyさん mailto:sage [2009/12/14(月) 17:11:57 ID:???]
- ・・・それをめんどくさいって言うんだよ
- 555 名前:nobodyさん mailto:sage [2009/12/14(月) 17:16:59 ID:???]
- >>543
ググったら見つかったけど logic.stepserver.jp/memo.cgi/archive/506/ とりあえず試してみたのがこれ codepad.org/7VTuvTdy 上3つはちゃんと動いてるけど下3つはちゃんと動いてないね
- 556 名前:nobodyさん mailto:sage [2009/12/14(月) 17:27:12 ID:???]
- jp.php.net/manual/ja/types.comparisons.php
公式マニュアルに全部書いてある
- 557 名前:nobodyさん mailto:sage [2009/12/14(月) 17:29:44 ID:???]
- >>553
いいサイト教えてやるよ www.google.co.jp/ このサイトで検索すればtwitterAPIの仕様から各言語の利用方法まで詳細に載ってるサイトを検索できるよ。 自動フォロー機能ってのも検索してみれば出てくるんじゃないかな?
- 558 名前:nobodyさん [2009/12/14(月) 17:49:50 ID:h7BWhtMh]
- >>555 ありがとう。この文字をコピーしてどこに貼り付けたらいいのかな?・・・
- 559 名前:nobodyさん mailto:sage [2009/12/14(月) 17:53:07 ID:???]
- おいお前ら、もう構ってやるなよ…真性だぜ
- 560 名前:nobodyさん mailto:sage [2009/12/14(月) 17:54:48 ID:???]
- >>558
おでこ
- 561 名前:nobodyさん [2009/12/14(月) 17:58:01 ID:h7BWhtMh]
- >>560 おでことは?
- 562 名前:nobodyさん [2009/12/14(月) 17:59:54 ID:h7BWhtMh]
- lil.la/technology/autofollow/ これ、インストールしてさっきの文字を貼り付けてみたけどダメだった・・・
- 563 名前:nobodyさん [2009/12/14(月) 18:01:48 ID:h7BWhtMh]
- あとd.hatena.ne.jp/shibason/20091018/1255866012 この人が1番まとも書いてくれてるようなんだけど、
この文字を結局どこへ貼り付けたらいいか書いてないからよく分からん。
- 564 名前:nobodyさん [2009/12/14(月) 18:07:01 ID:h7BWhtMh]
- www.tweetmanager.com/ ←これにも登録してオートフォローとかを有効にしたつもりではいるんだけど、変化なしです。
- 565 名前:nobodyさん mailto:sage [2009/12/14(月) 18:09:35 ID:???]
- 初心者の人は銀さんのbotを参考にするといいと思う。
昨日からbot作りはじめたけど postさせるところまではできたよ。 >>546ありがとう。気にしないことにして次の手順頑張る。
- 566 名前:nobodyさん mailto:sage [2009/12/14(月) 18:16:20 ID:???]
- がんばれ><
- 567 名前:nobodyさん [2009/12/14(月) 18:17:31 ID:h7BWhtMh]
- 銀さんのbotはどこから読めば?一番初めはただのガタガタの文字しかのってないし・・・
- 568 名前:nobodyさん [2009/12/14(月) 18:18:25 ID:h7BWhtMh]
- www.tweetmanager.com/ ←ってかこれって違うの?
- 569 名前:nobodyさん mailto:sage [2009/12/14(月) 18:25:19 ID:???]
- もう死ねよ
- 570 名前:nobodyさん mailto:sage [2009/12/14(月) 18:27:26 ID:???]
- d.hatena.ne.jp/silverbot/20090809/1249807557
↑銀次さんのやつ。 リンク貼るくらいしかできないけど頑張れー! サーバの用意とかpostさせる手順1とか、トラックバックのとこに色々あるから。
- 571 名前:nobodyさん mailto:sage [2009/12/14(月) 18:30:34 ID:???]
- >>569
da ma re
- 572 名前:nobodyさん mailto:sage [2009/12/14(月) 18:30:54 ID:???]
- あ、やりたいのはフォロー返しなのか・・・
お役に立てなかったかも。。ごめん
- 573 名前:nobodyさん [2009/12/14(月) 18:55:50 ID:h7BWhtMh]
- いえいえ、教えてくれた方ありがとう!!ゆっくり銀さんのを読んでみますね。参考になります。
- 574 名前:nobodyさん mailto:sage [2009/12/14(月) 19:05:13 ID:???]
- 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さん mailto:sage [2009/12/14(月) 19:18:30 ID:???]
- >>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さん mailto:sage [2009/12/14(月) 19:34:18 ID:???]
- UZEEEEEEEEEEEEEEEEE
- 577 名前:529 mailto:sage [2009/12/14(月) 20:21:19 ID:???]
- >>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 mailto:sage [2009/12/14(月) 20:28:28 ID:???]
- 577訂正
@pagesではset_time_limitが使えませんでした…
- 579 名前:543 mailto:sage [2009/12/14(月) 21:33:06 ID:???]
- >>555
うーん。変数の型が違うと暗黙の型変換が行われるから===を使うべきってのはわかってるんだ。 また同じことを言っちゃうけど、「同じ型の場合」に == と === で何が違うの?て話なんだ。 もちろん、値が保障されない場合も考えて===を使う「べき」ってのはわかるし コーディングするときはもちろんそうするだろうけど 型が同一の場合にも==だとなんか問題あるのかなって確認したかったんだ。 特になさげかな。
- 580 名前:DAWNTO_Windy-melt ◆Windy/f9HNwg mailto:sage [2009/12/14(月) 22:07:50 ID:???]
- 経験上言わせていただきますが、`の処理には気をつけてくださいね…冷や汗をかきました。
今現在@windymeltanにmaximaプラグインを積んでいます。数式処理のテスト中です。 @windymeltan maxima:2+4; のように書いてテストしていただいて結構です。 乱筆しました。失礼。
- 581 名前:nobodyさん mailto:sage [2009/12/14(月) 22:59:49 ID:???]
- うん、はしょりすぎて何を言いたいのかわからない。
- 582 名前:nobodyさん mailto:sage [2009/12/15(火) 00:07:48 ID:???]
- >>577
毎時0分はたくさんの方が設定していると思われます。 処理内容にもよりますが、ジャストタイムが不要ならば13分とか、48分とかの 中途半端な時間に設定した方が良いかもしれませんね。 1分とかだとサーバーがまだ0分のヤツを処理してたりしてw
- 583 名前:DAWNTO_Windy-melt ◆Windy/f9HNwg mailto:sage [2009/12/15(火) 00:43:48 ID:???]
- >>581
PHPのバッククォートはきちんとエスケープしませう。というお話でした。
- 584 名前:nobodyさん mailto:sage [2009/12/15(火) 08:40:01 ID:???]
- >>1
twitter なぜナウやnawではなく「なう」なのか d.hatena.ne.jp/RRD/20090727/1248682147
- 585 名前:nobodyさん mailto:sage [2009/12/15(火) 09:44:33 ID:???]
- >>584
マルチ乙
- 586 名前:nobodyさん mailto:sage [2009/12/15(火) 10:00:25 ID:???]
- >>584
なんでアチコチに貼ってんの? 記事の内容も、典型的な同属嫌悪だし。
- 587 名前:nobodyさん mailto:sage [2009/12/15(火) 11:12:56 ID:???]
- ネガキャンしたきゃ愚痴スレででもやるべきだな。
- 588 名前:nobodyさん mailto:sage [2009/12/15(火) 14:13:06 ID:???]
- CRONが叩きに来てないのか、叩きに来たけどタイムアウトしたのかどうやったら分かる?
PHP呼び出すHTML作ってアクセス解析付けたけど何もログが残ってない
- 589 名前:nobodyさん mailto:sage [2009/12/15(火) 14:15:37 ID:???]
- >>588
CRONサーバー側のログを見る。
- 590 名前:nobodyさん mailto:sage [2009/12/15(火) 14:31:21 ID:???]
- phaさんのスクリプトでランダムポストしてるんだけど、
10ツイート/day程度の頻度で、ポスト候補のテキストパターンは100近く仕込んであるのに やたら同じのばかり選ばれるみたいで、ポストが飛んでしまうことがよくある。 cronも安定してるし他の挙動には問題ないので、この状態がすごく気になる… どうにか回避する方法はないでしょうか。
- 591 名前:nobodyさん mailto:sage [2009/12/15(火) 15:41:37 ID:???]
- ランダムで選ばれたテキストパターンが
自分の発言最新10件と一致しなければpostする様にするとか
- 592 名前:nobodyさん mailto:sage [2009/12/15(火) 15:49:39 ID:???]
- GAEでCRONの某記事の人がPC上で動かすCRON?みたいなの作ったみたいだな
- 593 名前:nobodyさん mailto:sage [2009/12/15(火) 16:21:43 ID:???]
- >>589
cron-jobにそんなログ見れるページあったっけ?
- 594 名前:nobodyさん mailto:sage [2009/12/15(火) 16:22:37 ID:???]
- >>593
ない
- 595 名前:nobodyさん mailto:sage [2009/12/15(火) 16:23:26 ID:???]
- >>591
529が作ってたから入れてみたけどタイムアウトになって駄目
- 596 名前:nobodyさん mailto:sage [2009/12/15(火) 16:24:36 ID:???]
- >>594
だったら八方塞がりだな… 他の人は動かない原因どうやって突き止めてるんだ
- 597 名前:nobodyさん mailto:sage [2009/12/15(火) 18:10:54 ID:???]
- >>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さん mailto:sage [2009/12/15(火) 18:37:19 ID:???]
- 芸能人の非公式botってどうなんだろう
- 599 名前:nobodyさん mailto:sage [2009/12/15(火) 19:31:57 ID:???]
- >>598
それいったら、キャラクターの非公式botだって…
- 600 名前:nobodyさん mailto:sage [2009/12/15(火) 19:35:48 ID:???]
- >>599
全然違うだろ…
- 601 名前:nobodyさん mailto:sage [2009/12/15(火) 20:07:07 ID:???]
- >>597
被ってたらポストしないじゃなくて >>529が>>539で言ってたみたいにもう一度array_randしないと 結局ポストせず終わるから駄目じゃないか? それするとタイムアウトするみたいだけど
- 602 名前:nobodyさん mailto:sage [2009/12/15(火) 20:15:04 ID:???]
- ・ポストリストとログ読み込み
・ポストリストからランダムにポストする文を選ぶ ・ログと被ってないか判断 ・被ってたら選び直し ・最新ポスト追加した最新10ポストのログ再作成 ・ポスト >>529はこれだけ入れたソース作ったみたいだけど 確かに判定入れるならこれだけやらないと意味ないんだよね… 別プログラムでリプライとか入れてるならそっちも含めたログにすると理想的
- 603 名前:nobodyさん mailto:sage [2009/12/15(火) 20:33:24 ID:???]
- 選び直しを入れてるからタイムアウトになるんだろ
- 604 名前:nobodyさん mailto:sage [2009/12/15(火) 20:43:17 ID:???]
- 選び直し入れないと判定そのものの存在意義がなくなる
ちゃんとポストするために入れてるんじゃないの? 結局ポスト出来ないなら判定もログ保存もツイッターがしてくれるからいらないよ
- 605 名前:nobodyさん mailto:sage [2009/12/15(火) 23:59:15 ID:???]
- cron-jobが動いてくれないよ〜;0;
botがまったく無反応になってしまった・・・
- 606 名前:DAWNTO_Windy-melt ◆Windy/f9HNwg [2009/12/16(水) 00:14:04 ID:CexvtTFs]
- maximaと連携させるプラグイン作りましたが誰も使わないですよね…¬
knowledge.ddo.jp/info/index.php?option=com_content&view=article&id=51:maximaplugin&catid=35:2009-12-12-10-21-55
- 607 名前:nobodyさん mailto:sage [2009/12/16(水) 00:59:49 ID:???]
- >>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さん mailto:sage [2009/12/16(水) 01:08:08 ID:???]
- foreach($log as $logs){
これは・・・ゴクリ
- 609 名前:nobodyさん mailto:sage [2009/12/16(水) 01:11:00 ID:???]
- ちなみにそれ重複が判明した以降の$logsしか判定しないぞ
- 610 名前:nobodyさん mailto:sage [2009/12/16(水) 01:34:58 ID:???]
- >>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みたいな鯖じゃなくてもっといい鯖使えばいいのにとか思ったり。
- 611 名前:nobodyさん mailto:sage [2009/12/16(水) 01:54:02 ID:???]
- 俺だったら
$filename = "plist.txt"; $plist = file($filename); $filename2 = "log.txt"; $log = file($filename2); $key = array_rand($plist); $log_slice = array_slice($log, 0, 10); while (in_array($plist[$key], $log_slice)) { $key = array_rand($plist); } $post = $plist[$key]; //do〜whileでもいいけど
- 612 名前:nobodyさん mailto:sage [2009/12/16(水) 10:29:53 ID:???]
- foreach($log as $logs){
↑これって配列をつくって並べてる、であってる? まずいの? phaさんのこれじゃね?
- 613 名前:nobodyさん mailto:sage [2009/12/16(水) 10:44:25 ID:???]
- こうじゃね?
あと改行削るべきだし、できたらファイル読み込みとかにエラーチェック入れたいが。 $filename = "plist.txt"; $filename2 = "log.txt"; $plist = @file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $log = @file($filename2, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $plist_uniq = array_diff($plist, array_slice($log, 0, 10)); //重複しない候補 $post = $plist_uniq[array_rand($plist_uniq)];
- 614 名前:nobodyさん mailto:sage [2009/12/16(水) 10:45:55 ID:???]
- あ、テスト用に追加してた@はなくてもいいやむしろ取ったほうがいい。
エラー出さなくするものだから。
- 615 名前:nobodyさん mailto:sage [2009/12/16(水) 11:02:27 ID:???]
- ログが常に最新10件である事前提だな…
xmlで取って来れないものか そうしたら最新10件のログを作成する部分だけはいらなくなる
- 616 名前:nobodyさん mailto:sage [2009/12/16(水) 11:06:29 ID:???]
- え?どういうこと?
- 617 名前:nobodyさん mailto:sage [2009/12/16(水) 11:13:08 ID:???]
- あー他の部分見てなかったけどこれAPIからのログは読んでないわけか。
まあいんじゃね。 ていうかxmlでもjsonでもAPI叩けば拾ってこれるし。
- 618 名前:nobodyさん [2009/12/16(水) 11:35:25 ID:GKFzjgHo]
- タロット占いできるキャラbotを作りたいんですが、
botというかPHP初心者で取っ掛かりが分かりません。 スクリプトがあまり重くなると困るので、 タロットの結果を書いたxmlを作って「占って」とリプライされたら そのつどタロットのxmlを読み込んで結果をランダムに出力するとか可能ですか? それともみなさん、 $tarot=array("",""......); とかでやってるんでしょうか・・・?
- 619 名前:nobodyさん mailto:sage [2009/12/16(水) 12:20:23 ID:???]
- >>613
ログ生成を追記モードでやってる場合は下の方が最新ログになるから ログ読み取りの部分と被ってない部分の抽出はこうじゃ駄目かな //ログ読み取りの部分 $filename2 = "log.txt"; $fp2 = fopen($filename2,'r+'); flock($fp2, LOCK_EX); for($i = 0;!feof($fp2);$i++){ $log[$i] = fgets($fp2); } fclose($fp2); //被ってない部分の抽出 $plist_uniq = array_diff($plist, array_slice($log, $i-10, $i)); 上から10個が最新ってログ作成の時にやりにくいしタイムアウトの一因になると思う。 ただfgetsの時はどうやって空行と改行文字飛ばせばいいか分からないし array_slice使ったこと無いから位置指定に変数が使えるかどうか試してない。 配列の最後のキーを簡単に取得できる方法があったらごめん
- 620 名前:nobodyさん mailto:sage [2009/12/16(水) 14:11:14 ID:???]
- >>619
そこで行数カウントしなくても $plist_uniq = array_diff($plist, reverse(array_slice($log,0,10)) ); reverseで逆転すればいいだけだし 要素数カウントするなら別に $i = count($log) ;みたいなこともできる。
- 621 名前:nobodyさん mailto:sage [2009/12/16(水) 14:14:05 ID:???]
- あー、こっちのが楽か。
$plist_uniq = array_diff($plist, array_slice($log,-10) );
- 622 名前:nobodyさん [2009/12/16(水) 23:19:30 ID:j0jV78ZZ]
- www.kc-c.biz./consulting/contents-business/twitter.html
ここにヒントが...
- 623 名前:nobodyさん mailto:sage [2009/12/17(木) 01:12:23 ID:???]
- ただの宣伝じゃねーか。
|

|