トップページ⇒php
1001コメント336KB

【Twitter】 BOT製作支援スレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/27(日) 14:15:59ID:Dz08qoo4
見当たらなかったので立ててみた

[公式] http://twitter.com/
[Twitter 開発ブログ 日本語版] http://twitterjp.blogspot.com/

*どの言語でもOKですがソースを書く際は何の言語なのかも記載してください。
*初心者のために、なるべくぶつ切りのソースではなく全体的に載せてほしいです。
0514nobodyさん2009/12/12(土) 22:16:59ID:???
登録した人のタイムラインを参照して同じことすればいいのでは?
0515nobodyさん2009/12/12(土) 22:36:56ID:???
やってみた たぶんいける
でもあれなんだよね、他の人への@も読みこんじゃうと思うんだよね
0516nobodyさん2009/12/12(土) 22:50:50ID:???
他の人への@があったら処理しないようにすればいいのでは?
0517nobodyさん2009/12/13(日) 01:34:10ID:???
>>516
かまってくれてありがとうw
他人への@に、てかすべての@に反応しないように書いてたんだけど
\@があったら弾くようにしたはずなのにうまく回らない
細かいミスでHP削られたので今日はもう寝ます、ありがとう
0518DAWNTO_Windy-melt ◆Windy/f9HNwg 2009/12/13(日) 02:14:06ID:B1fOU/ii
>>517
@ってエスケープ必須でしたっけ?(in PHP
05195032009/12/13(日) 09:41:31ID:???
いろいろ検証したけど鯖の問題かもしれない…

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

@pagesにアクセス解析付のHTML置いて、そこで呼び出したけどCron-jobのアクセスは無かった
どこか有料だけど安いレン鯖でも借りた方がいいのかな…
オススメはロリポ?
0520nobodyさん2009/12/13(日) 09:56:28ID:???
流れぶった切って申し訳ないけど、発言などをさせるphpファイルが
投稿出来ずにエラーになるのは何でだろう?
ブラウザ上で確認しただけなんだが、ただ一言ERRORって出るだけなんだ…
service_twitterの本体プログラム自体はエラー出てない
勿論パスワードもIDも間違ってないんだ…何でだ…orz
0521nobodyさん2009/12/13(日) 10:10:26ID:???
どのphpファイル使ってて何をしてどういうエラーが出たのかさっぱりわからん。
0522nobodyさん2009/12/13(日) 10:12:25ID:???
あと間違ってない、って主観の判断はどうでもいい(そう思ってて間違ってることもよくある)から
やったことや、ソースをそのまま貼ったほうが原因は特定しやすい。
0523DAWNTO_Windy-melt ◆Windy/f9HNwg 2009/12/13(日) 10:20:09ID:B1fOU/ii
>>520
ソースうpきぼん
0524nobodyさん2009/12/13(日) 11:03:50ID:???
最近よくいる糞コテはなんなの
0525nobodyさん2009/12/13(日) 11:41:51ID:???
何もしてない奴よりなんぼか形にしてる奴のがましよ。
NG登録は簡単なんだし気になるならあぼーんしときゃいいさ。
05265202009/12/13(日) 14:04:45ID:???
言い捨てるような形になってしまってごめん
ソース元は銀さんのとこで、ご本人が説明されている環境をそのまま使用してる
設置サーバーもやり方も全く同じ
Twitter.phpにアクセスすると真っ白な画面にになり、ランダムに呟かせるphpファイル
(例えばbot.php)にアクセスすると、白い画面に一文字「ERROR」の文字が出る

↓ソース
05275202009/12/13(日) 14:10:31ID:???
ソース載せると規制に引っかかってしまうんだorz

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

ここのページのソース丸コピペ、フルパス、ID、パス、台詞だけ違う状態
0528nobodyさん2009/12/13(日) 15:03:18ID:???
>520
試してないが
if(! $st->setUpdate($post) ){
die('ERROR');
辺りを消したらちゃんとしたエラー吐かないかな?
0529nobodyさん2009/12/13(日) 15:46:35ID:???
定期postのBOTに過去10回分と同じポストかどうかを判断して
違ったらポストって機能を加えたいんだけど、ログの書き込みがうまくいかない。

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

色々試したけど追加書き込みされたりポストしたばかりのだけになったりする。
rで配列Aに読み込み→wで全消し→aで書き込みするしかないのかな?
そもそもこんな機能いらない?
0530nobodyさん2009/12/13(日) 16:33:37ID:???
ついにできた^0^/
GoogleにでもUPするかな
0531nobodyさん2009/12/13(日) 18:15:45ID:???
>>529
まず言語は?
0532nobodyさん2009/12/13(日) 18:34:07ID:???
>>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);
0533nobodyさん2009/12/13(日) 18:37:38ID:???
//ポスト選定と審査
$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);
0534nobodyさん2009/12/13(日) 18:40:36ID:???
Service_Twitter設定は銀さんのここと一緒
http://d.hatena.ne.jp/silverbot/20090829/1251532471

タイムアウトするのはこの部分 $plist[$key] == $log[$a]
ログはツイッター本家と同じく上が新しいものになるようにしてる
最近勉強始めたばかりなので見難いかもしれないけどお願いします
05355202009/12/13(日) 19:44:53ID:???
>>528
反応ありがとう!
試しに


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

die('ERROR');

}
を抜いてやってみたら、ただの白いページが出た…
そんでもって投稿はされてない
あるとERRORになってないとシカトって一体どういう…???
0536nobodyさん2009/12/13(日) 23:02:07ID:???
>>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に書きこむ用のコードだと思うがいろいろなとこ抜けてて心配だ
0537nobodyさん2009/12/13(日) 23:35:20ID:???
>>534
の銀さんのBOTの作り方見てたけど結構ひどいな。
Services_Twitterを今後使うと見せかけて、リプライとかは全く関係ない別のソースを使ってる。
PHP触ったばかりかもしれないから仕方ないけど。
0538nobodyさん2009/12/14(月) 00:25:34ID:???
>537
銀さんとこのは全部他のとこの記事のコピペだよ
リプライと定時のソースはそれぞれ違う人から持ってきてるんだから
関係なくて当たり前
0539nobodyさん2009/12/14(月) 00:29:22ID:???
>>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文なら大丈夫でしょうか?いいやり方があれば教えていただきたいです。
0540nobodyさん2009/12/14(月) 01:04:19ID:???
>>539
タイムアウトするのはtwitterの鯖なのか、botを動かしている鯖なのか、どっちですか?
twitterだったら鯖が重いかtwitterにPOSTするスクリプト(botとしての機能じゃない方)が悪い。
botを動かしている鯖なら鯖変えるとか。


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

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

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

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

===じゃないとだめだよ。
0541nobodyさん2009/12/14(月) 08:12:41ID:???
>>540
ごめん俺よくわかってないかもしれんが
同じ文字列型同士で == じゃ問題ある場合ってあったっけ?
0542nobodyさん2009/12/14(月) 10:38:45ID:???
>>541
同じ文字列型でも数値型で比較される場合があるから、
文字列で比較する場合はなるべく===を使った方がいいってことじゃない?
0543nobodyさん2009/12/14(月) 11:10:23ID:???
>>542
文字列型同士の比較なら==でも===でも値は一緒な気はしたんだけどそういうことあるの?
例えばどういう場合だろ。
0544nobodyさん2009/12/14(月) 11:55:04ID:???
銀さんのbotを参考に製作中だけど、
cronがうまく動かない。
「zu groß」って容量大きすぎってこと?どうすればいいの?
0545nobodyさん2009/12/14(月) 12:11:03ID:???
>>544
状況の情報が少なすぎる
kwsk
0546nobodyさん2009/12/14(月) 13:07:35ID:???
>>544
cron-job.orgなら「zu gro?」になってても
botの動き的には正常稼働されてるはずだから気にすんな
0547nobodyさん2009/12/14(月) 15:22:27ID:h7BWhtMh
自動フォロー返しだけやりたいんだけどbotとか初心者なんです。
どうやってやるんですか?
0548nobodyさん2009/12/14(月) 15:28:22ID:???
BOTというかプログラム初心者?
それだとまずPHPスレとか見て基本覚えたほうがいいんじゃないかな。
0549nobodyさん2009/12/14(月) 15:49:04ID:h7BWhtMh
>>548 そうですか・・・初心者なんですけど、やりたいのはフォロー返しだけなんで言われるようにすればできるとは思うんだけど、
そういう紹介サイト的なのがあったらいいんだけど。ってそんな簡単じゃないですよね。
PHPスレものぞいてみます。
0550nobodyさん2009/12/14(月) 16:25:45ID:???
びっくりするほど他力本願だな。
0551nobodyさん2009/12/14(月) 16:27:31ID:h7BWhtMh
>>550 そうなんです〜。。。昔twitterには自動フォロー機能ついててよかったけど・・・今はフォロワー管理が大変。
プログラムとか難しいことはさけてフォロー返しだけできたらいいと考えてる愚か者ですw
0552nobodyさん2009/12/14(月) 16:32:36ID:???
>>551
そんなに面倒臭がってるならフォロー返しなんかやらなきゃいいだけのこと
0553nobodyさん2009/12/14(月) 17:10:33ID:h7BWhtMh
>>552 いやいや、めんどくさくは無いんですよ。ただプログラムの根本からまともに勉強始めたら数ヶ月かかるでしょ!?
何ヶ月もPC画面に縛り付けられるほどの時間がないだけ。
3日程度ならいいけど。
0554nobodyさん2009/12/14(月) 17:11:57ID:???
・・・それをめんどくさいって言うんだよ
0555nobodyさん2009/12/14(月) 17:16:59ID:???
>>543
ググったら見つかったけど
http://logic.stepserver.jp/memo.cgi/archive/506/

とりあえず試してみたのがこれ
http://codepad.org/7VTuvTdy

上3つはちゃんと動いてるけど下3つはちゃんと動いてないね
0556nobodyさん2009/12/14(月) 17:27:12ID:???
http://jp.php.net/manual/ja/types.comparisons.php
公式マニュアルに全部書いてある
0557nobodyさん2009/12/14(月) 17:29:44ID:???
>>553
いいサイト教えてやるよ
http://www.google.co.jp/

このサイトで検索すればtwitterAPIの仕様から各言語の利用方法まで詳細に載ってるサイトを検索できるよ。
自動フォロー機能ってのも検索してみれば出てくるんじゃないかな?
0558nobodyさん2009/12/14(月) 17:49:50ID:h7BWhtMh
>>555 ありがとう。この文字をコピーしてどこに貼り付けたらいいのかな?・・・
0559nobodyさん2009/12/14(月) 17:53:07ID:???
おいお前ら、もう構ってやるなよ…真性だぜ
0560nobodyさん2009/12/14(月) 17:54:48ID:???
>>558
おでこ
0561nobodyさん2009/12/14(月) 17:58:01ID:h7BWhtMh
>>560 おでことは?
0562nobodyさん2009/12/14(月) 17:59:54ID:h7BWhtMh
http://lil.la/technology/autofollow/ これ、インストールしてさっきの文字を貼り付けてみたけどダメだった・・・
0563nobodyさん2009/12/14(月) 18:01:48ID:h7BWhtMh
あとhttp://d.hatena.ne.jp/shibason/20091018/1255866012 この人が1番まとも書いてくれてるようなんだけど、
この文字を結局どこへ貼り付けたらいいか書いてないからよく分からん。
0564nobodyさん2009/12/14(月) 18:07:01ID:h7BWhtMh
http://www.tweetmanager.com/ ←これにも登録してオートフォローとかを有効にしたつもりではいるんだけど、変化なしです。 
0565nobodyさん2009/12/14(月) 18:09:35ID:???
初心者の人は銀さんのbotを参考にするといいと思う。

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


>>546ありがとう。気にしないことにして次の手順頑張る。
0566nobodyさん2009/12/14(月) 18:16:20ID:???
がんばれ><
0567nobodyさん2009/12/14(月) 18:17:31ID:h7BWhtMh
銀さんのbotはどこから読めば?一番初めはただのガタガタの文字しかのってないし・・・
0568nobodyさん2009/12/14(月) 18:18:25ID:h7BWhtMh
http://www.tweetmanager.com/ ←ってかこれって違うの?
0569nobodyさん2009/12/14(月) 18:25:19ID:???
もう死ねよ
0570nobodyさん2009/12/14(月) 18:27:26ID:???
http://d.hatena.ne.jp/silverbot/20090809/1249807557

↑銀次さんのやつ。
リンク貼るくらいしかできないけど頑張れー!
サーバの用意とかpostさせる手順1とか、トラックバックのとこに色々あるから。
0571nobodyさん2009/12/14(月) 18:30:34ID:???
>>569
da ma re
0572nobodyさん2009/12/14(月) 18:30:54ID:???
あ、やりたいのはフォロー返しなのか・・・
お役に立てなかったかも。。ごめん
0573nobodyさん2009/12/14(月) 18:55:50ID:h7BWhtMh
いえいえ、教えてくれた方ありがとう!!ゆっくり銀さんのを読んでみますね。参考になります。
0574nobodyさん2009/12/14(月) 19:05:13ID:???
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 =〜以降を増やせばいいのかもしれないが、どうやって追加すればいいのか分からないんだ
だれか助けてくれ
0575nobodyさん2009/12/14(月) 19:18:30ID:???
>>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;
}


?>
0576nobodyさん2009/12/14(月) 19:34:18ID:???
UZEEEEEEEEEEEEEEEEE
05775292009/12/14(月) 20:21:19ID:???
>>540
ありがとうございます!とりあえず===にしました

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

cron-jobが全く動いてくれないのもこのせいでしょうか?
今日の昼に毎日毎時0分に叩くよう設定しましたが1回も動いてくれません…。
@pagesとcron-jobで動いている人は沢山いるようなのでコツがあるのでしょうか?
Aktiv?はちゃんとjaにしています。
05785292009/12/14(月) 20:28:28ID:???
577訂正
@pagesではset_time_limitが使えませんでした…
05795432009/12/14(月) 21:33:06ID:???
>>555
うーん。変数の型が違うと暗黙の型変換が行われるから===を使うべきってのはわかってるんだ。
また同じことを言っちゃうけど、「同じ型の場合」に == と === で何が違うの?て話なんだ。

もちろん、値が保障されない場合も考えて===を使う「べき」ってのはわかるし
コーディングするときはもちろんそうするだろうけど
型が同一の場合にも==だとなんか問題あるのかなって確認したかったんだ。
特になさげかな。
0580DAWNTO_Windy-melt ◆Windy/f9HNwg 2009/12/14(月) 22:07:50ID:???
経験上言わせていただきますが、`の処理には気をつけてくださいね…冷や汗をかきました。

今現在@windymeltanにmaximaプラグインを積んでいます。数式処理のテスト中です。
@windymeltan maxima:2+4;
のように書いてテストしていただいて結構です。
乱筆しました。失礼。
0581nobodyさん2009/12/14(月) 22:59:49ID:???
うん、はしょりすぎて何を言いたいのかわからない。
0582nobodyさん2009/12/15(火) 00:07:48ID:???
>>577
毎時0分はたくさんの方が設定していると思われます。
処理内容にもよりますが、ジャストタイムが不要ならば13分とか、48分とかの
中途半端な時間に設定した方が良いかもしれませんね。
1分とかだとサーバーがまだ0分のヤツを処理してたりしてw
0583DAWNTO_Windy-melt ◆Windy/f9HNwg 2009/12/15(火) 00:43:48ID:???
>>581
PHPのバッククォートはきちんとエスケープしませう。というお話でした。
0584nobodyさん2009/12/15(火) 08:40:01ID:???
>>1

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

http://d.hatena.ne.jp/RRD/20090727/1248682147

0585nobodyさん2009/12/15(火) 09:44:33ID:???
>>584
マルチ乙
0586nobodyさん2009/12/15(火) 10:00:25ID:???
>>584
なんでアチコチに貼ってんの?
記事の内容も、典型的な同属嫌悪だし。
0587nobodyさん2009/12/15(火) 11:12:56ID:???
ネガキャンしたきゃ愚痴スレででもやるべきだな。
0588nobodyさん2009/12/15(火) 14:13:06ID:???
CRONが叩きに来てないのか、叩きに来たけどタイムアウトしたのかどうやったら分かる?
PHP呼び出すHTML作ってアクセス解析付けたけど何もログが残ってない
0589nobodyさん2009/12/15(火) 14:15:37ID:???
>>588
CRONサーバー側のログを見る。
0590nobodyさん2009/12/15(火) 14:31:21ID:???
phaさんのスクリプトでランダムポストしてるんだけど、
10ツイート/day程度の頻度で、ポスト候補のテキストパターンは100近く仕込んであるのに
やたら同じのばかり選ばれるみたいで、ポストが飛んでしまうことがよくある。
cronも安定してるし他の挙動には問題ないので、この状態がすごく気になる…
どうにか回避する方法はないでしょうか。
0591nobodyさん2009/12/15(火) 15:41:37ID:???
ランダムで選ばれたテキストパターンが
自分の発言最新10件と一致しなければpostする様にするとか
0592nobodyさん2009/12/15(火) 15:49:39ID:???
GAEでCRONの某記事の人がPC上で動かすCRON?みたいなの作ったみたいだな
0593nobodyさん2009/12/15(火) 16:21:43ID:???
>>589
cron-jobにそんなログ見れるページあったっけ?
0594nobodyさん2009/12/15(火) 16:22:37ID:???
>>593
ない
0595nobodyさん2009/12/15(火) 16:23:26ID:???
>>591
529が作ってたから入れてみたけどタイムアウトになって駄目
0596nobodyさん2009/12/15(火) 16:24:36ID:???
>>594
だったら八方塞がりだな…
他の人は動かない原因どうやって突き止めてるんだ
0597nobodyさん2009/12/15(火) 18:10:54ID:???
>>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];//ポストする文にする
}

これでどうだ
0598nobodyさん2009/12/15(火) 18:37:19ID:???
芸能人の非公式botってどうなんだろう
0599nobodyさん2009/12/15(火) 19:31:57ID:???
>>598
それいったら、キャラクターの非公式botだって…
0600nobodyさん2009/12/15(火) 19:35:48ID:???
>>599
全然違うだろ…
0601nobodyさん2009/12/15(火) 20:07:07ID:???
>>597
被ってたらポストしないじゃなくて
>>529が>>539で言ってたみたいにもう一度array_randしないと
結局ポストせず終わるから駄目じゃないか?

それするとタイムアウトするみたいだけど
0602nobodyさん2009/12/15(火) 20:15:04ID:???
・ポストリストとログ読み込み
・ポストリストからランダムにポストする文を選ぶ
・ログと被ってないか判断
・被ってたら選び直し
・最新ポスト追加した最新10ポストのログ再作成
・ポスト

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

別プログラムでリプライとか入れてるならそっちも含めたログにすると理想的
0603nobodyさん2009/12/15(火) 20:33:24ID:???
選び直しを入れてるからタイムアウトになるんだろ
0604nobodyさん2009/12/15(火) 20:43:17ID:???
選び直し入れないと判定そのものの存在意義がなくなる
ちゃんとポストするために入れてるんじゃないの?
結局ポスト出来ないなら判定もログ保存もツイッターがしてくれるからいらないよ
0605nobodyさん2009/12/15(火) 23:59:15ID:???
cron-jobが動いてくれないよ〜;0;
botがまったく無反応になってしまった・・・
0606DAWNTO_Windy-melt ◆Windy/f9HNwg 2009/12/16(水) 00:14:04ID:CexvtTFs
maximaと連携させるプラグイン作りましたが誰も使わないですよね…¬
http://knowledge.ddo.jp/info/index.php?option=com_content&view=article&id=51:maximaplugin&catid=35:2009-12-12-10-21-55
0607nobodyさん2009/12/16(水) 00:59:49ID:???
>>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];//ポストする文にする


こうか
0608nobodyさん2009/12/16(水) 01:08:08ID:???
foreach($log as $logs){
これは・・・ゴクリ
0609nobodyさん2009/12/16(水) 01:11:00ID:???
ちなみにそれ重複が判明した以降の$logsしか判定しないぞ
0610nobodyさん2009/12/16(水) 01:34:58ID:???
>>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みたいな鯖じゃなくてもっといい鯖使えばいいのにとか思ったり。
0611nobodyさん2009/12/16(水) 01:54:02ID:???
俺だったら
$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でもいいけど
0612nobodyさん2009/12/16(水) 10:29:53ID:???
foreach($log as $logs){
↑これって配列をつくって並べてる、であってる?
まずいの?
phaさんのこれじゃね?
0613nobodyさん2009/12/16(水) 10:44:25ID:???
こうじゃね?
あと改行削るべきだし、できたらファイル読み込みとかにエラーチェック入れたいが。

$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)];


■ このスレッドは過去ログ倉庫に格納されています