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
なぜナウや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みたいな鯖じゃなくてもっといい鯖使えばいいのにとか思ったり。
611:nobodyさん
09/12/16 01:54:02
俺だったら
$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さん
09/12/16 10:29:53
foreach($log as $logs){
↑これって配列をつくって並べてる、であってる?
まずいの?
phaさんのこれじゃね?
613:nobodyさん
09/12/16 10:44:25
こうじゃね?
あと改行削るべきだし、できたらファイル読み込みとかにエラーチェック入れたいが。
$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さん
09/12/16 10:45:55
あ、テスト用に追加してた@はなくてもいいやむしろ取ったほうがいい。
エラー出さなくするものだから。
615:nobodyさん
09/12/16 11:02:27
ログが常に最新10件である事前提だな…
xmlで取って来れないものか
そうしたら最新10件のログを作成する部分だけはいらなくなる
616:nobodyさん
09/12/16 11:06:29
え?どういうこと?
617:nobodyさん
09/12/16 11:13:08
あー他の部分見てなかったけどこれAPIからのログは読んでないわけか。
まあいんじゃね。
ていうかxmlでもjsonでもAPI叩けば拾ってこれるし。
618:nobodyさん
09/12/16 11:35:25 GKFzjgHo
タロット占いできるキャラbotを作りたいんですが、
botというかPHP初心者で取っ掛かりが分かりません。
スクリプトがあまり重くなると困るので、
タロットの結果を書いたxmlを作って「占って」とリプライされたら
そのつどタロットのxmlを読み込んで結果をランダムに出力するとか可能ですか?
それともみなさん、
$tarot=array("",""......);
とかでやってるんでしょうか・・・?
619:nobodyさん
09/12/16 12:20:23
>>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さん
09/12/16 14:11:14
>>619
そこで行数カウントしなくても
$plist_uniq = array_diff($plist, reverse(array_slice($log,0,10)) );
reverseで逆転すればいいだけだし
要素数カウントするなら別に $i = count($log) ;みたいなこともできる。
621:nobodyさん
09/12/16 14:14:05
あー、こっちのが楽か。
$plist_uniq = array_diff($plist, array_slice($log,-10) );
622:nobodyさん
09/12/16 23:19:30 j0jV78ZZ
URLリンク(www.kc-c.biz.)
ここにヒントが...
623:nobodyさん
09/12/17 01:12:23
ただの宣伝じゃねーか。
624:nobodyさん
09/12/17 21:45:44
自動フォロー返しのときにDM送ろうとしてるんだが
そのDMのメッセージ内容に相手のname(screen_nameじゃない方)を使いたいときどうすればいい?
625:nobodyさん
09/12/17 22:32:36
TL取得すると一緒についてくると思うけど
626:nobodyさん
09/12/18 00:57:26
そのものnameって値で入ってるっしょ。
627:nobodyさん
09/12/18 19:37:19
フォローにTLは取得しない
フォローイングとフォロワーのAPIでname取得できなくね?
628:nobodyさん
09/12/18 19:42:38
取得すればいいのでわ?
629:nobodyさん
09/12/18 20:11:26
TL上で俄かにOAuthで認証するのが流行り出した。
クライアント名を変えられるのが人気らしいですね。
使ってますか?
私はまだベーシック認証ですが。
630:nobodyさん
09/12/18 21:22:41
すみませんだれか知恵をお貸しください。
phaさんのプログラミングを利用させてもらっています。
本日botのパスワードを変更したらその後まったくbotがうごかなくなってしまいました。
普通投稿とリプライ投稿ともまったく別のエラーになります。
普通投稿の方は パスワードかユーザー名が違うとのことですが、
普通にこのIDとパスでtwitterにログインできるので間違っているはずがありません。
どこか別の記述が間違っているのかと別IDでpostしてみましたが通常通り動きました。
何故か一体のbotだけうまくいかない状況です。
もう一点、同botなのですがリプライの方は
Fatal error: Wrong parameters for Exception([string $exception [, long $code ]]) in /usr/local/www/htdocs/○○/public_html/Services/Twitter/Jsphon/Error.php on line 185
と出、185行目にエラーがあるそうですが、185行目は
$message = convert_text($message);
で何が問題あるのかさっぱりわかりません。
他の正常に動いているbotのソースを丸々コピーしてみましたが同じエラーになります。
自分ではこれ以上の原因究明ができませんでした。
twitterのアカウントに問題がある気がするのですが、
twitterのhome画面ではちゃんと書き込みができるのようでもう何が何やらさっぱりです。
申し訳ございませんが誰かご教授いただけると嬉しいです。
631:630
09/12/18 21:30:49
すみません630です。
何故か今、回復してしまいました
サーバーの調子が悪かったのでしょうか・・・
スレ汚してしまい本当にすみません
632:nobodyさん
09/12/18 22:56:43
>>631
そういう時はできるだけ詳細を書いておけば後続者の役に立つと思うからまだ見ていたら覚えといてくれ。
633:nobodyさん
09/12/18 23:08:00
自分もphaさんのを利用させてもらってるんだけど、
返すリプライによって画像を変えたい場合ってどうしたらいいんですかね?
他の方のプログラムだとみつけたんだけどphaさんのって発言はテキストファイルで他の人とちょっと勝手が違うからよくわからないです…
634:nobodyさん
09/12/19 00:14:49
phpを勉強して折衷したプログラムを作ればいい
635:nobodyさん
09/12/19 00:32:47
フォローしてない人の発言を特定のキーワードで検索、取得するにはどうすれば良いのでしょうか…
636:nobodyさん
09/12/19 01:02:08
URLリンク(search.twitter.com)
URLリンク(pcod.no-ip.org)
URLリンク(buzztter.com)
このあたりがRSS吐いてるから適当に解析するよろし。
637:nobodyさん
09/12/19 02:33:57
>>636
Thanx a lot!
638:nobodyさん
09/12/19 07:18:16
>>629
ベーシック認証が廃止になるから
URLリンク(twitter.com)
639:nobodyさん
09/12/19 11:42:19
>>638
ついーたーが言ってるだけじゃなあ。
URLもRT用の無駄URLだしソース元ないん?
640:nobodyさん
09/12/19 14:52:54
URLリンク(jp.techcrunch.com)
URLリンク(apiwiki.twitter.com)
641:nobodyさん
09/12/19 17:58:05
corn-job.orgの動作が不安定なため、GAEでcronを動かしたいと思っています
自分なりに色いろやってみたのですが、どうしてもうまくいかないので相談させてください。
URLリンク(d89.s41.xrea.com)
こちらをを参考に、cron.yaml/app/yaml/task.pyを作成し
GAE launcherで読み込んだのですが、Runさせようとすると数秒でエラーのアイコンが出て先に進めません
ログはこんな感じになっています。URLがダメなんでしょうか…
Running command: "['C:\\Python25\\python.exe', 'C:\\Program Files\\google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8089', 'C:\\bot']"
ERROR 2009-12-19 08:32:38,951 dev_appserver_main.py:363] Fatal error when loading application configuration:
Invalid object:
Unknown url handler type.
<URLMap
static_dir=None
secure=default
script=None
url=/.*
static_files=None
upload=None
mime_type=None
login=optional
require_matching_file=None
auth_fail_action=redirect
expiration=None
>
in "C:\bot\app.yaml", line 8, column 1
2009-12-19 17:32:39 (Process exited with code 1)
642:nobodyさん
09/12/19 18:26:07
>>641
まず、ml115を買ってくる
643:nobodyさん
09/12/19 18:42:27
>>642
自分で鯖を立てることができるならこんなことで悩んだりしません
意地悪ですね
644:nobodyさん
09/12/19 19:51:19
できるようになればいいじゃん
645:nobodyさん
09/12/19 19:52:17
鯖立てしなくても24時間PCつけっぱなしにしてブラウザ自動リロードにしておけばいいだけ
646:nobodyさん
09/12/19 19:56:18
リロードなんかしなくてもJavaScriptじゃだめなのか
647:nobodyさん
09/12/19 19:57:39
>>643
まぁ、やってみなよ、おもしろいから。
DDNSとかで
セキュリティ??知らんがな(´・ω・`)
メールとかいろいろ遊べるし
648:nobodyさん
09/12/20 16:24:25
>>641
同じようなとこで躓いた経験があります。yamlファイルの記述に問題があったようです。
そこのサイトで紹介しているyamlファイルのテキストをブラウザからコピペしたもの
ではなく、そのサイトからリンクされているページで紹介されている
ソースコードをコピペしてやってみると幸せになれるかもしれません。
違っていましたらあしからず。
649:nobodyさん
09/12/20 20:43:29
>>648
おおおおお仰る通りにしてみたら成功しました!幸せになれました
本当にありがとうございました
650:nobodyさん
09/12/20 23:25:31
ベーシック認証が廃止になったら、phaさんのスクリプトとかも動かなくなんの
651:nobodyさん
09/12/21 00:24:06
>>650
OAuthに対応しなきゃ動かなくなるわな
652:nobodyさん
09/12/21 00:32:05
OAuthはまだいいよ。
できなくなったら対策考えればいい。
ググればいくらでも出てくるからな。
ググらないのは甘え
653:nobodyさん
09/12/21 00:51:02
OAuth導入できたんだけどAPIが上手く使いこなせない
慣れるの大変だなまた
これで他人のソース丸コピペBot量産厨が減るといいけどwww
654:nobodyさん
09/12/21 00:53:31
PHPでOAuth使おうと思ったがサンプルはcurlしか使えないんだな。
もっとましな方法はないのか…
655:nobodyさん
09/12/21 00:58:00
ラッパーの自作ライブラリはさんでるから対応さえしときゃなんとでもなりそうだ。
656:nobodyさん
09/12/21 10:45:51
ていうか今までもcurl使ってたと思ったがましな方法って例えば何だ。
657:nobodyさん
09/12/21 12:58:32
phaさんので使われてる日本語版Services_Twitterはcurl使ってない
URLリンク(d.hatena.ne.jp)
658:nobodyさん
09/12/21 14:12:31
そこのURLでも言ってるがcurlそんなダメか?
659:nobodyさん
09/12/21 21:17:30
curlは認知度が低い
わざわざ使わなくてもHttp_Requestがある
curlの仕様自体が変態
660:nobodyさん
09/12/21 22:25:00
curlを使ってたとこはHttp_Requestが何故か使えないから仕方なく使ってたみたいだが
661:nobodyさん
09/12/22 04:53:06
>>659
fsockopenなんて遅いしそれだったらcurlでいいやと思ってる
662:nobodyさん
09/12/23 02:57:59
流れを読まずにcronの代わりを考えてみたんだけど、htmlの自動更新のタグ使って代わりにできないかな?
htmlのページにフレームかなんかでphp埋め込んで、そのページを延々更新し続けるとcron使わなくても動くんじゃない?
自分はめんどくさくてそんなことせずにcronくんでるんだけど誰かcronわからなくてhtmlの知識持ってる人は試してみてほしい
24時間ずっとブラウザ立ち上げてなきゃいけないけど
うーん、やっぱり駄目かな。アホなこと考えてごめん
663:nobodyさん
09/12/23 03:35:15
別にいいんじゃない?
自分が起きる時間にBOTは起きて自分が寝る時間にBOTは寝る感じで
664:nobodyさん
09/12/23 11:48:56
>>662
考えたことあった
ただ>>663が言うように常にPCを上げておかなきゃいけないからね
それが問題にならないbotなら出来ると思うよ
665:nobodyさん
09/12/23 11:58:43
windowsならタスクでなんでだめなの?
666:nobodyさん
09/12/23 11:59:24
てかMETAタグで自動更新するくらいならJavaScript使えばいいのでは?
667:nobodyさん
09/12/23 12:32:05
>>666
前提が「cronは分からないけどhtmlならできる」だから
htmlのが敷居低いんでないの?
668:nobodyさん
09/12/23 14:35:27
タグ一行で済むのをわざわざJavaScriptで書く必要はないわな。
669:nobodyさん
09/12/23 16:50:10
htmlやJavaScriptでわざわざ書かなくてもOperaに自動更新ツールついてるし
670:nobodyさん
09/12/23 21:40:03
ブラウザに依存してる方がめんどくさいだろ。
671:nobodyさん
09/12/24 14:59:33
URLリンク(twittbot.net)
このボットジェネレーターが結構使えると思うんだがどう?
672:nobodyさん
09/12/24 16:16:13
その手のは突然サービス終了したらと思うと怖くて使えない
673:nobodyさん
09/12/24 16:32:20
別に終了してもいいじゃん。
どうせtwitterなんて流行り物だし、使い続けるようなものでもないでしょ
674:nobodyさん
09/12/24 23:28:41
すいません、流れを読まずに質問。
reply_pattern.phpの中身の反応させる言葉なんですけど、
複数の単語がある場合に反応する方法はありますか?
たとえば、「ごちそうさま。おいしかった」と@貰ったら
「お粗末さま。おいしくて何より」といった返答をするように、
「ごちそうさま」と「おいしい」の2つの単語がある場合に、
用意した言葉を返答するという感じ。
「ごちそうさま」だけに反応させるものもあるので、二つの言葉がある
場合に、反応する正規表現を教えて下さい。
675:nobodyさん
09/12/24 23:29:34
>>674
URLリンク(www.mnet.ne.jp)
676:nobodyさん
09/12/24 23:43:40
>>675
明日(ぼく|わたし)は帰宅します
これか!これだな!ありがとう!!助かった。感謝します。
677:674
09/12/24 23:59:04
あれ、どうやら違うようでした…。自分の頭はサル以下なのか
678:nobodyさん
09/12/25 01:06:33
ごちそうさま.*おいしかった
だけでいんじゃね
679:nobodyさん
09/12/25 01:08:50
おいしかった。ごちそうさま。
だったら?
680:674
09/12/25 02:20:44
>>678
それだと「ごちそうさま」だけの@に反応しなくなる
また、 おいしかった.*ごちそうさま
だと、「おいしかった」に反応してしまうんだ…
>>679
「おいしかったーーー!うまい!ごちそうさま!」とか
「ごちそうさま!パスタおいしかった」にも反応させたいんだ
「おいしかった。ごちそうさま。」ってきっちり@もらって
反応させるしか方法はないのかな…
681:nobodyさん
09/12/25 02:24:57
2つif使えば?
682:nobodyさん
09/12/25 02:38:50
「おいしい」じゃ「おいしかった」は引っかからないのでは?
683:674
09/12/25 02:53:24
>>681
if?初心者なものですまんがわかるように解説してくれ…
ちなみに「プログラミングができなくても作れるTwitter botの作り方」を
参考にしてphpいじってる。 URLリンク(pha22.net)
タグはこんなかんじで
"リア充(は)?爆発しろ"=> array(
"「爆発しない」",
"「爆発する」",
),
>>682
ああ!微妙に単語を変えればいいのか…? なるほど
2つの単語同時指定っていうのが無ければ、そうする。ありがとう
684:nobodyさん
09/12/25 03:13:29
プログラム分からないでやる意味が分からん。分かるようになれよ
685:nobodyさん
09/12/25 03:20:06
ていうか正規表現のURL貼ってくれてんだからそれ読もうよ。
すごい基本的なこと聞いてるからそれもわかんないんじゃ今後似たような質問だらけになるぞ。
686:nobodyさん
09/12/25 08:40:21
phaさんのスクリプト使わせてもらってるが
反応する単語増やしたらタイムアウトしやすくなってきた
.*を多用しすぎたのが良くなかったのか?
ファイルサイズを小さくできる(タイムアウトしにくい)表記とか
あったら教えて欲しい
687:nobodyさん
09/12/25 10:26:04
>>674
「ごちそうさま」だけでいいならそれだけ書いておけば「おいしかった」があってもなくても引っかかる
「おいしかった」の有無で反応を変えたいなら分けて書けばいい
PHP云々以前の問題だと思うよ
688:nobodyさん
09/12/25 14:08:55
質問の時のテンプレあるといいのかね?
689:nobodyさん
09/12/25 20:40:14 yLGH+OzA
phpでbot作ってて、APIのmentions.xmlを取得してるんだけど
curlで取得してsimplexml_load_stringで読むことはわかるけど
このままforeachでループすると同じものを何回も繰り返して
二重にも三重にも実行されることになってしまうがどうしたらそれを回避できる?
690:nobodyさん
09/12/25 21:03:01
意味が分からん。ループすべき処理にはforeachをかけて、すべきでない処理にはかけなければいいのでは?
691:689
09/12/25 21:18:19 yLGH+OzA
>>690
いや、そこんとこの処理をどうするか考えてる
ループを実行するたびにファイルにでもidを記録して
ループを回す度にチェックして重複してたら実行しないようにすればいいんだろうけど
それだとすごく時間かかる
692:nobodyさん
09/12/25 21:24:49
ランダム発言でもしてて発言が重複しないようにしたいわけ?
それなら上のほうで同じような話が出てるよ
693:689
09/12/25 21:55:28 yLGH+OzA
>>692
そうじゃない、xmlから拾うときに前拾ったのを拾わないようにするにはどうしたらいい?
694:nobodyさん
09/12/25 22:01:38
>>693
なんらかの方法でマークしておけよ。
xml取得時に日時で絞っておくとか、IDを記録しておくとか、、、
695:689
09/12/25 22:07:51 yLGH+OzA
>>694
日時で絞るなんて機能あった?
IDを記録しておく方法だと
ファイルに記録すると読み込み時間かかるし、ファイルの中身を消すタイミングもめんどくさいし
データベースでも同じ
696:689
09/12/25 22:16:08 yLGH+OzA
ああ、取得した最新のidをファイルに記録しといて今度取得するときsince_idパラメータを指定すればいいのか
697:nobodyさん
09/12/25 22:42:30
>>696
日時でもなんでもやり方はあるぞ
言っちゃ悪いがそれくらい分かれ
あとsageろ
698:nobodyさん
09/12/26 00:09:15
なんか無駄に長くて要点わかりにくいんだけど
要するに重複しないステータスを取得したいってことでいいんかね。
まあ>>696でいいんだろうけどAPI叩いて連続で取得したんなら
ステータスIDをキーにした配列に格納しなおして重複避けたり
読み終わったIDを保存しといてそれは除外するなり手はあると思うが。
699:nobodyさん
09/12/26 00:30:52
どうせ2分とかの間隔で取得するんだから、
00:26:01に起動 → 00:24:00~00:25:59のステータスが有効
00:28:02に起動 → 00:26:00~00:27:59のステータスが有効
という感じでやってる。
mentions取得できなかったら?そんなの無視。
700:nobodyさん
09/12/26 00:36:35
時間で指定できるのもあったよね確か
701:nobodyさん
09/12/26 02:55:24
sinceは廃止される引数だったと思う。
since_id max_id を使って欲しいんだろう。
702:nobodyさん
09/12/26 14:39:10
BOTで投稿したときに「APIから」と表示されてしまうのですが、
これを偽装する手段ってありませんか?
703:nobodyさん
09/12/26 14:40:46
OAuth認証にすれば自由にできる
704:nobodyさん
09/12/26 14:49:04
>703
ありがとうございます。
調べてみます
705:nobodyさん
09/12/27 05:06:54
GAEのcron.xmlで、「毎日○時~○時の間のみ○分間隔で実行する」という設定は可能ですか?
<schedule>の書式とにらめっこしたけど調べた範囲では分からなかった…
706:nobodyさん
09/12/27 08:49:06
>>705
○分間隔にしといてBOT側で時間の対応をする
707:nobodyさん
09/12/27 11:31:22
>>705 その後、どうですか?
708:nobodyさん
09/12/27 23:04:05
FileQっていう月99円のレン鯖はcron無制限だよ。実際に自分のbotで試したらちゃんと動いた。
709:nobodyさん
09/12/28 05:11:09
皆さんbotのプログラミング言語は何を使っているんですか?
710:nobodyさん
09/12/28 07:37:01
過去ログ読め
BOTの為だけに鯖借りるのはなんかなーとは思う
711:nobodyさん
09/12/28 08:14:48
無料鯖借りればいいじゃん
712:nobodyさん
09/12/28 11:10:23
自鯖立てればいいじゃん。
713:nobodyさん
09/12/28 11:34:53
自分で書き込めばいいじゃん。
714:nobodyさん
09/12/28 12:16:36
cron使える無料サーバーなんてあるのか?
FileQが多分一番安いし一分間隔でcron使えるし
715:nobodyさん
09/12/28 12:28:27
>>713
それボットじゃねーwww
FileQ試してみたけどスゲーな
安定して1分間隔でcron動く
1年1180円だしこれでいいんじゃね?
716:nobodyさん
09/12/28 19:59:23
rep2置いたらジエンにつかえるじゃん
717:nobodyさん
09/12/28 21:38:58
名詞や動詞を組み合わせて発言するボットを作ってる人多いけど、文意がおかしな事になってるじゃん。
もっとちゃんと作ったらいいじゃん。
718:nobodyさん
09/12/28 22:10:42
>>715
FileQは操作に慣れるのに時間がかかる。
慣れるまでが問題かな。
719:nobodyさん
09/12/29 01:24:34
URLリンク(d.hatena.ne.jp)
ここを参考にTL上の単語に反応させてるんですが、サーバーを@PAGESからFileQに移動したら
Fatal error: Call to undefined function curl_init() in /home/~~~.php on line 27
というエラーが出るんですが、これってこのサーバーではcurlが使えないってことですよね?
curlを使わない方法でTL上の単語に反応させる方法とかありますか?
それともcurlが使えるサーバーを探すべきか…
720:nobodyさん
09/12/29 01:34:48
>>717
マルコフ連鎖とかいうのを実装して作るんだけど、あくまで「文と文のつながり」を記憶できるだけであって、文意の解析までは辿りつけてないよ。
発言ごとに辞書引いて意味を覚えるとか面白いとは思うけど、労力が足りないんじゃないかな。
721:nobodyさん
09/12/29 03:33:58
cronはwindowsでもできたはず・・・
URLリンク(www.bitfolge.de)
722:nobodyさん
09/12/29 05:41:41
>>717
>>720だし、マルコフじゃなく自分である程度の文章のつながりを作るのもできんこともないけど
すげーめんどくさいか、すげー少ないバリエーションになってしまう。
あれはああいうカオスな発言を楽しむもんだと思ってる。
伺かみたいな文章として成り立ってるのを作るにはあれみたいに
一文ごとにデータ作ってやんないといけないしな。
チャットのbotでそういうの作ろうとしたけど飽きて投げた。
品詞の分類だけじゃなく活用まで考えて作るのすげーめんどせーよ。
723:nobodyさん
09/12/29 15:46:23
>>719
APIでタイムライン上の発言を配列に突っ込んでforeachで一つづつ検索していくとか
724:nobodyさん
09/12/29 17:12:26
FileQでcron試してみた。
一分間隔で動くように設定して60分放置。
結果54回動いた。
725:nobodyさん
09/12/30 00:13:07
>>722
たしかに、マトモなボット作るなら膨大な量の辞書データがいるね
726:nobodyさん
09/12/30 01:23:09
もしかしてcron-jobおかしい?垢削除祭か?
今日の夜から突然動かなくなったんで確認したら綺麗に消されてた
他にも消された奴いる?
727:nobodyさん
09/12/30 02:04:50
>726
消された
cron-job、jaになってても1日中botが沈黙とかここ何日かで急になったんだけど
他に同じひといないかな
上にあるFileQ試してみたいんだけどcronでわからなくなってる
Commandにhttp~じゃだめなのか…
728:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/30 02:49:38
Cron-job互換サービスを立ち上げてみたいのですが、結構高性能なサーバーでないと不可能でしょうか?
日本語で使えるサービスが有れば便利だと思うのですが。
729:nobodyさん
09/12/30 03:51:14
毎分動かすとなると、それなりに負荷がかかることになるから安い共用鯖じゃ無理
海外の安いVPSを借りてみるとか
730:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/30 05:48:21
>>729
自宅鯖です。
model name : Mobile Intel(R) Pentium(R) 4 - M CPU 1.80GHz
memory:512MB
731:nobodyさん
09/12/30 06:06:15
oauth使ってると思われるbotが止まったの、アプリのAPIがサスペンデッドになってると思われ。
732:nobodyさん
09/12/30 09:30:58 ScDpW0+E
cron-job消された。
別のメールアドレスで再登録しようと思ったけどダメ。
FileQもよくわからないしめんどくさいなぁ。
733:nobodyさん
09/12/30 11:11:49
垢BANされた人はとりあえず応急処置としてパソコン立ち上げっぱなしでブラウザ自動更新しておいたほうがいいね
734:nobodyさん
09/12/30 11:25:59
>>726です
あの後別のメールアドレスで再登録して
URLも登録し直したけど大体大丈夫っぽい
たまに動かないけど一時間に一回のボットだからそんな問題ないって感じ
今日から帰省だからその間に止まってたら困るな
やっぱり有料のサーバ借りてやるしかないのか
単なる趣味にしか過ぎないしボットのためにお金注ぐのもなんだかねー。
GAEも検討したけど色々面倒だお
設定に何十時間も掛ったと聞くけど最新のOSでもそう?
あんまりパソコン立ち上げる時間無いからちょっと躊躇してるんだ
735:nobodyさん
09/12/30 12:48:47
>>727
コマンドにはhttp://じゃなく
/home/******/public_html/*****.php
と、実行したいファイルのディレクトリを書けばいけるはず。
736:nobodyさん
09/12/30 13:29:29
>>735
727です。ありがとう!やってみます
737:nobodyさん
09/12/30 13:43:24
>>736
動かなかったら教えてちょ
738:nobodyさん
09/12/30 13:50:50
cronを毎分使いたいならやっぱり有料鯖借りないとダメなのかな~
739:nobodyさん
09/12/30 13:53:47
俺の借りてる鯖のcron使って君タチのボット動かしてあげようか????
740:DAWNTO_Windy-melt ◆Windy/f9HNwg
09/12/30 14:20:02
>>739
それ、今からやるところですよwww
webからセットアップできるcronのフロントエンドをphpで自作しているので完成次第公開します。
741:nobodyさん
09/12/30 15:37:46
わっふるわっふる
742:nobodyさん
09/12/30 15:55:25
わっふるわっふる
743:nobodyさん
09/12/30 16:14:07
わっふるわっふる
744:nobodyさん
09/12/30 17:12:51 tKJERMBp
735です。
FileQでのcronの動かし方を間違えてレスしてました。
正しいコマンドはこうです。
これは僕の例ですが、index.phpにボットのプログラムを書きpublic_htmlフォルダにアップしました。
*****の部分はアカウント名です。
/usr/local/bin/php /home/*****/public_html/index.php
まず
/usr/local/bin/php
と入力し、半角スペースを入れてから動かしたいファイルの/home/から始まるパスを入力します。
745:nobodyさん
09/12/30 21:48:07
FileQ使ってるけど
php /home/ユーザー名/public_html/PHPの入ってるディレクトリ名/ファイル名.php
cd /home/ユーザー名/www/PHPの入ってるディレクトリ名; /usr/local/bin/php ファイル名.php
の2通り試してみたらどっちも同じように動いてるよ
746:nobodyさん
09/12/30 22:03:34
↑はコマンド欄に直で入力ね
747:nobodyさん
09/12/30 23:40:14
>>744
>>745
取り合えずcron動くのならおk
748:nobodyさん
09/12/31 00:57:09
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
オリンピックフィギュアスケートのメダルを左右する重要なポイント
URLリンク(plaza.rakuten.co.jp)
wrong edgeに付いて
URLリンク(plaza.rakuten.co.jp)
749:nobodyさん
09/12/31 06:14:13
FileQにPHPをアップしてもエラーが出る…。
他のサーバにアップしたPHP(FileQにアップしたものと中身は同じ)は問題なく動くのに。
750:nobodyさん
09/12/31 09:04:58
>>749
どのフォルダにアップした?
FFFTPとかのアップローダー使った?
751:nobodyさん
10/01/01 09:53:36
>>749
サイトからコピペしたときによくあたるんだけど、、文字エンコーディング関連でエラーが出る事がある。
¥がそのままの時はバックスラッシュに変換してみて。linux環境での実話。
SJISをviで読み込ませたら¥記号のままでエスケープできずに狂ったことがあった。
FedoraはUTF8だったので
:%s/¥/\\/g
:set fileencoding=utf8
で保存し直した。
752:nobodyさん
10/01/01 11:29:43
>>750
アップローダー(CyberDuck)を使って、パブリック_htmlへアップロードした。
>>751
うーん見た感じ\とかエンコードとかは大丈夫みたいなんだが…。でも返信ありがとう。
753:nobodyさん
10/01/01 15:27:24
>>752
エラーの文をコピペしてみれ
スクリプトの記述ミスがいけないのか、文字化けなのか、そもそもそこのサーバーのPHPで使えない関数が含まれてるのか
754:nobodyさん
10/01/01 23:15:29
今のcronの主流は
・cron-job消された!手間かけるの面倒!
→FileQ
・cron-job消された!手間をかけるのは厭わない
→GAE
・そもそもcron-job使ってません^^
→自鯖とか各自の鯖のcron
・cron?なにそれこわい
→PC起動したまま延々とリロード
かな?
755:nobodyさん
10/01/02 19:48:02
PC起動したまま延々リロードしたときの電気代と月々の鯖代はどっちがかかるんだろう…
756:nobodyさん
10/01/03 00:06:15
cronjob.deがあるじゃん
757:nobodyさん
10/01/03 05:35:49
GAEでいろいろやってみたがland.toと@pagesは安定してるね
zeroweb(happy888.net)だと、うまく時間内にキャッチできてない→反応しない
昔から借りてる某レンタル鯖は反応するけどその後2回ほどreplyしてしまうし
鯖によって本当にマチマチ…
ちなみにどの間隔も変わらない感じした
758:nobodyさん
10/01/03 10:03:12
FileQにうpした際に出るエラー
Fatal error: Call to undefined function curl_init() in /home/tre666/public_html/***/***.php on line 46
46行目は $ch = curl_init();
やっぱcurlが使えないってことでおk?
759:nobodyさん
10/01/03 10:04:31
アカウント名消し忘れたwww まいっか
760:nobodyさん
10/01/03 10:11:34
そう
curl未対応だな。FileQは
761:nobodyさん
10/01/03 13:37:31
URLリンク(twitter.com)
トレ君か よろしく
762:nobodyさん
10/01/03 15:48:44
cron job、アカウント云々じゃなくてサービスのサーバー自体がおかしいみたい
今朝、持ってる全てのアカウントが消されてて別のメアドでアカウント取ったんだが、新しいcronを設定する端から消されて行くw
アカウント取れたからには個人を特定されて弾かれてる訳ではないだろうし
BOT本体だけでなく、30分に一回フォロー用phpを回すだけのアカウントも消されていたのもそのせいかも
763:nobodyさん
10/01/03 18:45:10
>>761
変な汗でた よろしくお願いします
FileQを諦めるかwebcronにするか自力で設定するか…
1日数回の定時postはwebcronにしてたんだけど、リプライはさすがに消費量が激しいので無理だな
764:nobodyさん
10/01/03 21:45:57
TL反応のプログラムをcron(サーバーのを使用)で動かそうとしたらこんなエラーメールが届きました
Warning: simplexml_load_string(): Entity: line 1: parser error : Space required after the Public Identifier in /home/***/public_html/***/***.php on line 34
Warning: simplexml_load_string(): <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /home/***/public_html/***/***.php on line 34
Warning: simplexml_load_string(): ^ in /home/***/public_html/***/***.php on line 34
Warning: simplexml_load_string(): Entity: line 1: parser error : SystemLiteral " or ' expected in /home/***/public_html/***/***.php on line 34
34行目は
$XML = simplexml_load_string($result);
です。
cronjob.deを使ってみても動いている気配がありません。ブラウザでアクセスすると別に何もエラーは出ないのですが。
XMLの読み込みに問題があるのでしょうか?
どうしたらいいのかわからずお手上げ状態です
765:nobodyさん
10/01/03 22:00:13
>>764
"または'のエスケープ処理を忘れていませんか?
766:nobodyさん
10/01/03 22:13:34
>>765
" や ' を \" や \' にすればいいのでしょうか?
767:nobodyさん
10/01/03 22:33:27
>>762
cron-jobは、日本のBotで負荷が異常に増えたのに対して、~.jp規制をかけているようです。
phpなどの実行URLか、登録メールアドレスが日本のドメインの場合強制排除しているとか。
ソースはほかの開発者さんのツイートなので曖昧ですが、~.jpを使っていない私が
全く規制されていないのも納得できました。
768:nobodyさん
10/01/03 23:21:18
まあ頻繁に話題に出て皆一斉にそれ使ってりゃ規制されんのも当然か。
769:nobodyさん
10/01/04 01:31:21
>>345>>352と全く同じ状況なんだが対処法がさっぱりわからない
出来てる人はどうやってるんだろうか…?
770:nobodyさん
10/01/04 01:59:32
エラーはなんて出るの?
771:769
10/01/04 02:12:01
俺に聞いてると仮定して答えるけど
エラーは出てない、ポストも問題ない、ただin_reply_to_status_idが付与されないだけなんだ
Basic認証の時は出来てたんだけどなぁ
772:nobodyさん
10/01/04 03:03:11
>>771
自分はこれで出来てるけどどうだろう
$req = $to->OAuthRequest($host,array("status"=>$aaa,"in_reply_to_status_id"=>"$bbb"));
773:769
10/01/04 07:01:43
"in_reply_to_status_id"=>$bbb を "in_reply_to_status_id"=>"$bbb" に変えたら出来た!
単純な話で情けないな…。>>772ありがとう
774:nobodyさん
10/01/04 09:56:27
なんだそりゃ。型によって処理分けたりしてるんかね
775:nobodyさん
10/01/04 10:13:46
sutatusは基本文字列だから通ってもidは基本数値型だから蹴るみたいな?
どっちにしろ送るときゃ文字列なのにおかしなことをしてるな。
しかも黙って蹴ってるってのがなんだかやな感じだな。
776:nobodyさん
10/01/04 10:48:00
>>767
land.toとかだと~.jpじゃないけど消されるよね
単純に~.jpで弾いてるわけだもないのかな?
777:nobodyさん
10/01/04 11:43:15
FileQでcron設定してみたんだがリプライしても沈黙したまんまだ。
手動なら動くということはファイル自体は問題ないんだよな…?
なにがあかんの……
778:nobodyさん
10/01/04 13:20:42
cronjob.deって、登録申込したあとメール来るのにどれくらいかかる?
1日とか待たなきゃいけないのかな…
全然来ないのでちゃんと申込出来てるのかわかんなくなって来た
779:nobodyさん
10/01/04 16:20:35
>>778
メールはすぐ来た。が、その後すぐアカウントロックされてしまった。
cron-jobでロックされた人が流れてるからかもしれん
>776
自分は.comドメインだけど鯖がロリポ
鯖IPかアクセスしたIPで日本かどうか判断してるのかも
780:778
10/01/04 17:00:18
>>779
違うメアドで登録してみたら今度はすぐに来た
今のところアカロックはされてないみたいだけど
cron-job.orgのときみたいにログイン出来なくなっちゃったの?
781:nobodyさん
10/01/04 19:08:24
Gmailで登録してるけどcron-job.orgもcronjob.deも垢消されてないぞ
ただもうcron-job.orgは設定するそばから消えるけど
>>777
コマンド欄にURLそのまま打ち込んでないか?
ちょっと上の方見て来い
782:nobodyさん
10/01/04 19:46:04
cron-job、ログインできないのにちゃんと回ってるみたいでTL反応とかし続けてる…
同じ状況の奴いる?
783:nobodyさん
10/01/04 19:51:34
>>648
>>649
あなた方のやり取りなかったら、ゴール目前で諦めてた。ありがとう。
784:nobodyさん
10/01/04 19:53:07
phpだけじゃマルコフ無理なん
785:nobodyさん
10/01/04 20:57:33
FileQで外部サイトのphp回せる?
curl使えない?何のこと?とか思ってたらリプライ用のファイルも回せないってことなんだよな?
お金払っちゃったぜ/(^O^)\
786:nobodyさん
10/01/04 22:02:45
>>782
うちのとこもそう。
まったくいじれないのにそのまま動いてるから移行もできない状態…
とりあえず自然にオフになるの待ってる。
787:nobodyさん
10/01/04 22:06:20
cron-job.org設定ではerfolgreichってなっているけれど動いてない。
誰か助けて
788:nobodyさん
10/01/04 22:24:40
>>345>>352は俺です。
>>769
掘り返してくれてありがとう
>>772
ありがとう出来たよ!
型が違うのかと思ってintvalかませたりとかは試してたんだけど単純な話は単純な話だったんだな…
789:nobodyさん
10/01/04 22:27:08
botみかけたけれどcron-job.org今調子わるいのか?
790:nobodyさん
10/01/04 22:29:00
むしろ今のcron-job.orgは絶好調
791:nobodyさん
10/01/04 22:31:20
>>790
それはギャグで言っているのか?
792:nobodyさん
10/01/04 22:57:17
うちのは問題なしだけど、蹴られないうちにファイル名変えようかな…botていうフォルダだから
向こうに用途悟られて消されかねないし
793:779
10/01/04 23:07:46
自分はcron-jobはログインできるんだけど
2つ動かしてたのがどうしても1つしか設定できなくなった
それで.deでアカウント作ったけど速攻でロックされた
deで表示された文を翻訳すると再登録するな+問題あると訴えるみたいな感じだったから
それはねーおwと思いつつ再登録してない
他にもcronサービスあるから皆が上手く分散できるといいんだが…
794:nobodyさん
10/01/04 23:27:24
cronも大事なんだが、リプライのOAuth化で躓いてる…
色々削ったり位置を変えてみたけどお手上げだ
795:nobodyさん
10/01/04 23:30:47
>>794
あーおなじ
定時ポストのみ対応できてつまずいた
796:nobodyさん
10/01/04 23:48:55
定時postとリプライはOAuth対応出来たけどTLに反応が上手くいかん
まあそれ以前にcron探しでbot止まってるから意味ないけどな…
797:nobodyさん
10/01/05 00:18:46
あいまいでよくわからんが具体的にどの辺でつまってんだ?
798:nobodyさん
10/01/05 00:25:47
webcron.orgからFileQにしてみたが、
ここは凄いな。1分間隔で動くし1年で1000円ぐらいだし
cronの使い方がよくわからなかったが、
>>744>>745の書き込みですんなりできた。
799:nobodyさん
10/01/05 00:36:34
>>797
795だけど私は実行してもエラー出ないけどリプライをしてくれない状態
自分で組んだのですがAPIでは動いてくれているので、恐らく組み込みがうまくできていないのではないかと…
800:nobodyさん
10/01/05 00:47:23
>>797
794です。自分も>>799と同じくエラーが出ずAPIの状態…
curlを削ってもいいと聞いたので少しずつ削ってその都度試してみたけど駄目だった
801:nobodyさん
10/01/05 00:47:51
FileQいいなと思うけどcurlが駄目ってとこで引っかかるのが辛いな
802:nobodyさん
10/01/05 01:37:59
curlだけじゃなく他にもダメなのありそうだしな。
803:nobodyさん
10/01/05 01:38:48
OAuthは認証した後はbasic認証後と同じようにAPIに投げればいいのかな
804:nobodyさん
10/01/05 03:15:16
リプライとかTLはポスト部分だけOAuthに投げてそれ以外は以前のままで使ってる
805:nobodyさん
10/01/05 04:34:41
SDNさんのOAuthでのAPI偽装スクリプト使わせてもらおうと思ったんだけど
PHPでOAuthを使う準備の所で、test.php叩いても真っ白い画面でソースも何も出てこないエラーになる
使ってる鯖はステップサーバーでPHP5、対応してないスクリプトなのかと思ったけど
他の同じような環境の鯖で叩くと
・ソ
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /usr/home/akairin5/public_html/twitterOAuth.php on line 21
というエラーが帰ってくる
しかし特に閉じ忘れなども無い気がするんだけど……
誰か同じようなエラーで対応した人いませんですか
色々と考えたけど、自分の経験値では完全に詰みました……
806:nobodyさん
10/01/05 04:35:41
ふああああああああああああああああああああああああorz
しくじったアカウント消し忘れたorz
うう、見なかったことにorz
でも助言お願いしますorz
807:nobodyさん
10/01/05 04:50:40
ここはうっかりさんが多いインターネットですね
808:nobodyさん
10/01/05 09:46:47
>>805
どんまいとしか言えないwww
けど自分も真っ白のページが出てくることがたまにある
809:nobodyさん
10/01/05 10:34:19
>>805
文字コード違うとか?
810:805
10/01/05 11:35:24
どんまいありがとうございますorz
>>809
最初にDLしたものをそのままUPしたらだめだったので、
文字コードをUTF-8、改行コードも念のためLF固定にして再UPしたんだけどダメで、
更に.htaccess置いてサーバーの方で改行コードを固定してもダメでした。
SDNさんのHP注意書きの様に、スクリプトのバージョン違いかとも思って
2度ほど該当バージョンの物をDLし直したんですがダメでした。
白くなるエラーは私も何度か遭遇して、その度に閉じ忘れとかが原因な事が多かったので
今回もそうなのかなぁと思ったのですが……
配布されているものに間違いがあるとは見た限り思えなくて…
ステップサーバーのPHP注意に、白くなるエラーは、PHP5に対応してないスクリプトの可能性アリ
というのがあったので、疑っても見ましたが、それも無いと思いますし……
謎です
とりあえず、自分でも、OAuth調べ中ですが、お心当たりある方居ましたら
ご助言お願いしますorz
811:nobodyさん
10/01/05 12:04:38
うちのOAuthはよくサスペンドにされるんだけど…なんか問題あんのかなあ
812:nobodyさん
10/01/05 14:17:40
ウチはSDNさんのところを参考に
定期発言もリプライも全部OAuth認証に変えてみたけど、設置もその後も順調だ
やっぱりサーバーとかの環境によってだいぶ差があるんだな
813:nobodyさん
10/01/05 19:05:30
>>782 ノシ
814:nobodyさん
10/01/05 21:16:43
こんなとこ見つけたんだけど、使ってる人いる?
URLリンク(mywebcron-com.loopiasecure.com)
815:nobodyさん
10/01/05 22:09:45
>>814
cron-job.orgがダメになってそこに移った
@ページだとほとんど動かなかったから、他の鯖に変えたら動きだした
たまに起動しないけど無料なら想定の範囲内だと思う
816:nobodyさん
10/01/05 22:23:38
あんまり広まるとまた規制されそうだが…
SetCronJobでぐぐると幸せになれるかもしれない
ところで、bardothodolさんのスクリプトが元のリプライソースでcurl使わずにOAuth化できますか?
2つあるpost関数のうち下方にあるcurlは削れてちゃんとクライアント名が変わったんだけど、
上の関数と$usernameと$passwordを削ったらpostできなかったんで、OAuth化できたのかできてないのか分からない状態です
こんな状態だけどクライアント名変えるだけでいいっていうならソースとか晒すけど…
FileQを使いたいので curl使わずにOAuth化できればいいな
どなたかご助言願います
817:nobodyさん
10/01/05 22:36:06
あと少しで完成なんだけどTLに反応するやつだけ上手くいかない…
$oyasumi = array("台詞1","台詞2","台詞3");
$tadaima = array("台詞1","台詞2","台詞3");
if($reply_name != $username){
if( !preg_match ( "/@[a-zA-Z0-9-_]{3,}/", $var ) ){
if(preg_match( "/おやすむ|おやすみなさい|おやすみます|寝る|寝ます/u", $var )){
$key = array_rand($oyasumi);
$post = $oyasumi[$key];
$message = "@".$reply_name." ".$post;
tweet($message ,$username,$password);
}
if(preg_match( "/ただいま|今.*帰ってき/u", $var )){
$key = array_rand($tadaima);
$post = $oyasumi[$key];
$message = "@".$reply_name." ".$post;
tweet($message ,$username,$password);
}
ここで下の反応語句いれても上ので反応してしまう
色々なところで調べたりいじったりしたんだけどちょっと症状が違うのか上手いこといかない
馬鹿らしいこと聞いているとは思うんですが手がつけれないので…
誰かわかる方いたらお願いします
818:nobodyさん
10/01/05 22:56:20
>>817
中カッコが足りなくて閉じ切ってないのでなんともいえない。
しいていえばpreg_matchがおかしいんじゃない?
あとはちゃんとマッチしてるか確認するために
if($reply_name != $username){
if( !preg_match ( "/@[a-zA-Z0-9-_]{3,}/", $var ) ){
if(preg_match( "/おやすむ|おやすみなさい|おやすみます|寝る|寝ます/u", $var )){
echo "oyasumi <br>";
$key = array_rand($oyasumi);
$post = $oyasumi[$key];
$message = "@".$reply_name." ".$post;
echo "$post $message<br>";
tweet($message ,$username,$password);
}
if(preg_match( "/ただいま|今.*帰ってき/u", $var )){
echo "tadaima <br>";
$key = array_rand($tadaima);
$post = $oyasumi[$key];
$message = "@".$reply_name." ".$post;
echo "$post $message<br>";
tweet($message ,$username,$password);
}
こんな感じでecho入れてブラウザ上で動かしてちゃんと反応するか調べる。ちゃんと動いていれば
oyasumi
台詞1 @reply_name 台詞1
みたいに出力されるはず
819:nobodyさん
10/01/05 22:56:35
twitterOAuth.php自体にcurlが使われてるからSDNさんのとこの方法でOAuthにするとFileQでは動かせなくなっちゃうのかな…
FileQにみんなでcurl使えるように嘆願するか?w
それとスレチだけどなんで日本には外国みたいなwebcronサービスがないんだろ
お金かかってもいいからあったら便利なのに
820:nobodyさん
10/01/05 23:02:52
>>817
「ただいま」の $post = $oyasumi[$key];
「おやすみ(oyasumi)」になってるよ
あと、
$oyasumi = array("台詞1","台詞2","台詞3");
$tadaima = array("台詞1","台詞2","台詞3");
if($reply_name != $username){
if( !preg_match ( "/@[a-zA-Z0-9-_]{3,}/", $var ) ){
if(preg_match( "/おやすむ|おやすみ|おやすみます|寝る|寝ます/u", $var )){
$key = array_rand($oyasumi);
$post = $oyasumi[$key];
$message = "@".$reply_name." ".$post;
tweet($message ,$username,$password);
}
if(preg_match( "/ただいま|今.*帰ってき/u", $var )){
$key = array_rand($tadaima);
$post = $tadaima[$key];
$message = "@".$reply_name." ".$post;
tweet($message ,$username,$password);
}
}
}
$i--;
}
↑閉じ方をこうしてみた。
直るかどうかはこの前後のソース次第かもしれないけど…
821:nobodyさん
10/01/05 23:06:38
>818
早速ありがとう!
ソース変なところからだった…ごめんなさい。
$i = count($XML)-1;
$j = 0;
while($i >= $j) {
$var = $XML->status[$i]->text;
$reply_name = $XML->status[$i]->user->screen_name;
$name = $XML->status[$i]->user->name;
省略(さっきのソース)
}
}
$i--;
}
長いから省略しました。
これで閉じ切ってるかな…?
とりあえず教えてもらった方法やってまた頑張ってみます!
822:nobodyさん
10/01/05 23:11:35
>820
うわっ!本当だ…すっごい恥ずかしいこれ
そこ直したら戻った気がする。一応返してきたからこれで様子見ます!
本当ありがとう…
823:nobodyさん
10/01/05 23:18:50
>>819
リプライソースからcurlを消せばいいと思ってた…
そうか twitterOAuth.php自体にcurlがあったorz
5分間隔でいいならSet~とかでいけるけど、やっぱ5分だと取得漏れが多い気がする
そしてwebcronでリプライ動かしたら破産する
自分で設定するしかないか
824:nobodyさん
10/01/05 23:22:23
>>728あたりが安定した国内のcronサービスを作ってくれる とかいう夢を一瞬見た
無料は申し訳ないからできればカンパとかしたい
825:nobodyさん
10/01/05 23:22:50
>>823
GAEは?
826:nobodyさん
10/01/05 23:30:51
ググッたらこんなんあったけど、まだ試してない
URLリンク(blog.makotokw.com)
827:nobodyさん
10/01/05 23:37:52
>>825
GAEにしようとしたんだが、Google App Engine Launcherを起動すると
See the logfire 'C:\~GoogleAppEngineLauncher.exe.log' for details
というエラーが出るから積んだよ
再インストールしてもエラー中のlogを消してもだめだった
問題は山積みだ…
828:nobodyさん
10/01/05 23:54:54
logの中身みたの?
829:nobodyさん
10/01/06 01:25:16
>>828
logの中はこんな感じのが何行か…
Traceback (most recent call last):
File "GoogleAppEngineLauncher.py", line 42, in <module>
File "wx\_core.pyc", line 7913, in __init__
File "wx\_core.pyc", line 7487, in _BootstrapApp
File "launcher\app.pyc", line 53, in OnInit
File "launcher\app.pyc", line 97, in _CreateModels
File "launcher\maintable.pyc", line 35, in __init__
File "launcher\maintable.pyc", line 86, in _LoadProjects
File "launcher\project.pyc", line 63, in ProjectWithConfigParser
File "launcher\project.pyc", line 260, in _LoadFromConfigParser
File "ConfigParser.pyc", line 520, in get
ConfigParser.NoOptionError: No option 'name' in section: '1'
さっぱりなのでweb上のcronに頼ることにするよ
聞いてくれてありがとう
830:nobodyさん
10/01/06 15:02:29
オプションのnameがないんじゃね?
831:DAWNTO_Windy-melt ◆Windy/f9HNwg
10/01/06 15:53:39
>>824
わざわざありがとうございます。
本格的に設計開始しましたが、あったらうれしい機能など教えていただけると開発が早く進みます
832:nobodyさん
10/01/06 20:41:01
>>831
乙
横レスだけど
cronjobみたいなシンプルなコンパネがあるとうれしいな
833:nobodyさん
10/01/07 02:21:36
>>831
楽しみにしてます
かなりのユーザーがいくと思うので負担が大きいかもしれませんが…
cron-job.orgのようにCtrlで時間を細かく選択できたら便利かと思います
時間は1~2分間隔希望です
834:nobodyさん
10/01/07 02:37:41
>>831
もし有料にする場合は、銀行振込にも対応してほしい。
クレカ無いから…。
835:nobodyさん
10/01/07 09:20:32
この流れはひどい
836:nobodyさん
10/01/07 10:59:33
bot製作とは程遠いな
837:nobodyさん
10/01/07 12:01:35
ド素人の質問ですみません。
Kotobuki Lab.さんのページを参考にしてGAEでcronを実行したいのですが
プロジェクト名すら作成例と同じにして丸コピしているのに、うまくいきません。
同じページを参考にしてうまくいった方はいますか?
変えているのはtestcronServlet.javaの11行目、testcronServletをTestcronServlet
にしたのと、botのURLだけです。
現在Logsでは2分おきにWarning No handlers matched this URL.が出っ放し、
Cron Jobsでも常にon time failedとなっています。←これがどういう状態なのかもいまいちつかめてません…
ぐぐったら海外で同じ状態のひとを見つけたのですが、具体的な解答はなされていないようなので、
どうか助言をお願いします。
838:nobodyさん
10/01/07 13:07:48
>>837
そのページ見てGAEにチャレンジしたけどうまくいったよ
○○Serblet.javaのファイル名は頭1文字目が大文字じゃないと上手くいかなかった気がする
839:nobodyさん
10/01/07 13:08:57
スペルミスってた
Ser「b」letじゃなくてSer「v」letね…
840:nobodyさん
10/01/07 14:39:50
>>837
Warning No handlers matched this URL.
ってことはURLが間違ってるって事じゃないのかな
アドレス間違ってるかもしくはGAEからのアクセス弾いちゃってるとかじゃない?
841:nobodyさん
10/01/07 15:21:15
>>837>>840
プログラムのURLが合ってても、cron.xmlの方で指定間違えてたら
Warning No handlers matched this URL.って出るよ
>>837はもう一度パス見直してみ
842:nobodyさん
10/01/07 23:18:40
>>814
全然動かないんだが...
843:nobodyさん
10/01/07 23:26:01
FileQとphpだけで人間によく間違えられるbot作った俺が通りますよー
844:nobodyさん
10/01/07 23:57:56
>>843
自慢したいだけなら二度と来ないでください
845:nobodyさん
10/01/08 00:42:38
>>844
リプライ返しはあいさつに対してのみ行う場合なら人間っぽいbot簡単に作れるよー。
まず「つぶやき収集bot」を作って、あらゆるツイートを収集し、リプライツイートや時々内容のツイートを取り除きテキストファイルに順に格納していく。
時々内容のツイートを取り除く方法は、まずニュースサイトの記事をyahooの形態素解析APIを使って名詞を抜き出し辞書を作っておく。
そして「つぶやき収集bot」が収集したツイートも形態素解析し名詞を抜き出し、あらかじめ作った辞書を検索しその名詞が見つかればそのツイートは取り除く。
あとはテキストファイルに格納したツイートを適当に抜き出ししゃべらせる。
846:nobodyさん
10/01/08 00:47:33
問題は人間の質問に答えられるbotをどう作るかだろう。
あるいは人間とマトモな会話ができるbot。
これはかなり時間がかかりそうだ。
847:nobodyさん
10/01/08 01:51:52
手間をかけずに楽しめるbotを作る方がおもしろい。
848:nobodyさん
10/01/08 02:14:44
自分に向けられた発言への類推は難しいよな。
品詞ごとに分けておおまかな意味を推測させようかと考えてはみたが
>>846
マトモに会話してるように見えるbotなら人工無脳にいくつかあるけど
あれらを今から作るってのは手間だしマルコフ連鎖で繋げてそれっぽく見せるのがせいぜいだろうな。
辞書登録してやるとどうしても反応できるワードには限りがあるし。
本気で知能やろうとするとと個人でやるには大変だ。
849:nobodyさん
10/01/08 02:48:09
さくらサーバーでTLに反応するPHPのcron動かしてる人っていますか?
リプライとかは平気なのにTL反応のcronだけ削除されてしまいます
中身は銀さんのをほぼ丸写ししただけ。なにが悪いんだろう?
850:nobodyさん
10/01/08 04:10:34
>>849
cronの実行間隔が短すぎるんじゃねーの?
851:nobodyさん
10/01/08 04:35:57
>>850
リプライは3分おきで動いてるのにTLは10分にしても消されました
もっと長くすれば大丈夫かもしれないけどTL反応の間隔が10分以上では遅すぎるし・・・
852:nobodyさん
10/01/08 04:58:44
さくらに聞けよ
853:nobodyさん
10/01/08 05:32:19
>>851
周期が1時間以内だと、消される方が正常
3分で消えないっておかしいな
854:nobodyさん
10/01/08 06:00:29
>>853
そうなのか・・・じゃあさくらサーバー使ってる人でもcronは別な所で動かしてるってことなんですかね?
リプライは平気なのにTLはダメっていうのが不思議だけど、諦めて他の方法で動かすことにします
855:nobodyさん
10/01/08 08:05:52
>>848
俺の目標は、ある人が人間と思ってフォローした人たちが全員botだった、という状況を作ることなのだよ。
856:nobodyさん
10/01/08 08:14:21
遅くなりましたが>>837です
>>841さんのいうcron.xmlでの指定ミスが原因だったようで、urlのところを直したら
すんなり動いてくれました。web.xmlからURLを確認する過程自体をすっとばしていたという、
なんともお粗末な理由でした…
助言をくださった方、ありがとうございます。botが動いて感激です。
857:nobodyさん
10/01/08 10:56:08
cron-job.orgからGAEに変えたんだけど、
GAEのログにファビコンが無いっていうエラーが出まくる
何かファイル追加してファビコンを指定すればいいらしいんだけど
具体的な方法がわからない…どこかに参考になるサイトとかないかな?
858:nobodyさん
10/01/08 12:15:40
>>854
さくらだけど消されてないよ。
GAEで動かしてるからかな?
>>857
ブラウザでアクセスするのやめる
859:nobodyさん
10/01/08 12:18:38
あ、すまん。
さくらの人が消されたのはcronの方か。
勘違いしてた
860:nobodyさん
10/01/08 17:10:10 voJUVX7V
ごめん、OAuthの話に戻るんだけどさ
SDNさんを参考にして、定時はいけたんだけどリプライとTLがいまいちなんだ。
エラーも出ないでクライアント名とかリプライ元つきで返してくれているんだけど、
なんか叩くとめっちゃ返してくる…
前に答えたやつにも重複して返すし、tmpがうまく読めてないんかな。
初心者ですまない…元々銀次さんの所のコピペに頼りきりだったからどうしてすれば良いかわからないんだ。
教えてくれると凄く幸せになれるんだが…
861:nobodyさん
10/01/08 17:41:13
>>860
銀さんとこのリプライソースでいいんだな?
リプライソースの中の
$ch = curl_init();
(中略)
curl_close($ch);
を全部消して、function tweetをSDNさんとこのソースに
tweetの引数は$message以外を削除、って感じで行けると思う
もちろん細かいところは適宜修正してくれ
862:nobodyさん
10/01/08 17:57:17 voJUVX7V
>>861
ありがと。
でもごめん、その通りにしたら
<?xml version="1.0" encoding="UTF-8" ?>
- <hash>
<request>/statuses/update.xml</request>
<error>Incorrect signature</error>
</hash>
て@ページでエラーでたんだけどorz
function tweetの中が間違ってるんかな。
それともrequire_onceの場所がおかしいとか…?
もう訳わからんよ…細かいところの修正が出来てないからかな。
頭悪くてごめんな。
一回貼ったほうがわかりやすい?
863:nobodyさん
10/01/08 18:02:23
>>862
見た方が早いことは早いかも
864:nobodyさん
10/01/08 18:13:36
>>862
あーごめん
$ch = curl_init();
(中略)
curl_close($ch);
は消さなくてもいいや(OAuth認証でTL取得しない場合は)
消した場合(OAuth認証でTLを取得する場合)は
$XML = simplexml_load_string($result);
のところも変えないと駄目
865:nobodyさん
10/01/08 18:32:53 voJUVX7V
>>864
お、ごめん長くて貼れなくて苦戦してた…
$XML = simplexml_load_string($result);
の部分なんだけど、ごめんどういじれば良い?
866:nobodyさん
10/01/08 18:44:15
SDNさんとこのをそのまま使うんならこんな感じかな。ソース汚いけど
if(!empty($line)){
$last_id = $line;
}else{
$cnt = "1";
}
$consumer_key = "consumer_key"; // Consumer keyの値
$consumer_secret = "consumer_secret"; // Consumer secretの値
$access_token = "access_token"; // Access Tokenの値
$access_token_secret = "access_token_secret"; // Access Token Secretの値
// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
// TwitterからGETする
if(($cnt != null)&&($last_id != null)){
$req = $to->OAuthRequest($host,array("count"=>$pcount,"since_id"=>$last_id),"GET");
}else if(($cnt != null)&&($last_id == null)){
$req = $to->OAuthRequest($host,array("count"=>$cnt),"GET");
}else if(($cnt == null)&&($last_id != null)){
$req = $to->OAuthRequest($host,array("since_id"=>$last_id),"GET");
}else{
$req = $to->OAuthRequest($host,array(),"GET");
}
$XML = simplexml_load_string($req);
867:nobodyさん
10/01/08 18:45:34
うおっと、またミスった
$pcountになってるところは$cntで…orz
868:nobodyさん
10/01/08 20:09:05 voJUVX7V
>>867
うわーごめん、何かほんと頭悪いみたい。
TLとかリプライいじってみたけど、返事しないわ…orz
そもそも基本的なこと間違えてる気がしてならない…
ちょっと基本的な事勉強してくるわ、協力してくれてありがと。
869:nobodyさん
10/01/08 23:45:40
銀次さんのとこの方法は重くなるからcronに向かないな。
さくらで勝手に削除されたのもそのせいだと思う
問題はその重いスクリプトを多くの人が参考にしてるってことだ
870:nobodyさん
10/01/09 00:01:26
自分でOAuthの実装してたんだけど、
アクセストークンと認証トークンの取得までいけた。
で、APIアクセスしようとおもったら
Incorrect signatureっていわれた
これってoauth_signatureの作り方が間違ってるのかな?
871:nobodyさん
10/01/09 00:08:52
>>870
自分もその表示が出て、対処方法が全然判らなかったから
一度全部消して、また最初からやり直したらいけたよ。
全然参考になってないけど…体験者より。
872:nobodyさん
10/01/09 00:09:55
>>871
マジか・・・
873:nobodyさん
10/01/09 00:15:30
ついったは人工無能の分野でも研究対象になんのかな
874:nobodyさん
10/01/09 00:19:34
ぜんぜんならない、効率悪い。
しかし、話題性があるから薄っぺらな内容でも
凄い事のようにマスコミが持ち上げてくれる。
875:nobodyさん
10/01/09 00:26:56
シグネチャ作るときのURLが固定だったのが原因だった
直したらTweetできたやったあああああああ
876:nobodyさん
10/01/09 01:43:50
>>869
PHPにアクセスするとしょっちゅうタイムアウトエラーが出るんだけど、これもそのせいかな?
そのおかげでcronがちゃんと動いていてもポストされないみたいなんだ
877:nobodyさん
10/01/09 02:05:23
>>876
869じゃないけどたぶんそのせいだと思う。
cron-jobはただ単に指定したURLを叩くだけだったから、特に削除されるとかないし組み合わせ的には最適だったと思うよ。
878:nobodyさん
10/01/09 04:04:37
>>860-868あたりを読んで自分なりに実装したんだけどちっとも動いてくれない…。
//ポスト部分の関数
// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret,$message);
function tweet($username,$password,$id)
{
$message = urlencode($message);
$ch = curl_init();
★$req = $to->OAuthRequest("URLリンク(twitter.com)",array("status"=>"$message"),"POST");
curl_close($ch);
}
header("Content-Type: application/xml");
echo $req;
という風にしたら「Fatal error: Call to a member function OAuthRequest() on a non-object in★の行」というエラーが出てきてしまう…。
OAuthでリプライできてる方、ポスト部分はどうなってますでしょうか。
鯖はロリポでPHP5みたいです。
879:nobodyさん
10/01/09 04:05:19
わあなんだか余計な改行が挟まれてる
見にくくてすいません…
880:nobodyさん
10/01/09 11:14:41
>>878
function tweet$username,$password,$id)を、
function tweet($consumer_key,$consumer_secret,$access_token,$access_token_secret,$message,$to)にするか、
$toをfunction内に書けば多分エラーが出なくなるはず
urlencodeは書いておいたほうがいいかもしれないけど、とりあえずcurlは書かなくておk
でもこれだといちいち呼び出さなきゃいけないから、適当なところに$toと$reqを書いたほうが楽だし軽くなると思う
881:nobodyさん
10/01/09 12:06:30
ここの人たちはわかってるんだろうけど、最近は特定ワードを拾ってきて
無差別でフォローしてない相手にもリプライするbotが目に付くようになったね。
ああいうつまんないことで反感買って印象悪くするのは避けたいもんだね。
882:nobodyさん
10/01/09 12:08:43
プログラミングができなくても~を参考にbot作ってます。
話しかけられた時、指定した単語が入ってないと「もう一回言って?」みたいな反応させたいんだけど、
こういう時はどうすればよいですか。
883:nobodyさん
10/01/09 12:27:07
>>882
話しかけられた内容に指定ワードがあるかを検索したらいいだけだと思うが
884:nobodyさん
10/01/09 12:55:12
>>882
phaさんが設置したbot用掲示板に書いてある
すこしはログ見るとかしてみないか?
885:882
10/01/09 12:59:27
本当だ、ちゃんと見てなかった・・・失礼しました
886:nobodyさん
10/01/09 15:19:11
8bitさんのスクリプトをOAuthで動かしたくていろいろ弄ってるんだけどうまくいかない
「ライブラリを読み込む」の部分をSDNさんの「twitterOAuth.phpを読み込む」に
「Twitterからタイムラインを取得」をSDNさんの「例えば、TLを取得するのなら」に
それぞれ変更してるんだけど
Warning: array_reverse() [function.array-reverse]: The argument should be an array in /home~.php on line 33
($reply = array_reverse($reply);の行)
Warning: Invalid argument supplied for foreach() in /home~.php on line 41
(foreach($reply as $rep){ の行)
というエラーが出る。これってTLが読み込めてないってことなのかな?
もしかしたら全然見当違いなことしてるかもしれない・・・
887:nobodyさん
10/01/09 15:55:13
自分宛以外のリプレイで「@nantoka こんにちわ」という文にbotが「こんにちわ」に
反応しないようにするにはどうしたらいいのでしょうか…
if( $screen_name == $username){ //POSTが自分のPOSTだった場合にサブルーチンから抜ける
return;
}
if( preg_match("/\@$username/",$text)){
//POST内容に「/」で囲まれた中で書かれた文字列(この場合$username=@botのアカウント(自分へのリプライ))を探し、あった場合に次の処理に入る。無かったら対応する括弧以降へ飛ぶ
if( preg_match("/RT/",$text)){ //POST内に「RT」があるかどうか調べる
return; //「RT」がPOST内にあったので、処理を中断してサブルーチンから抜ける
}
ここらへんを変更するのかな?と思って色々触ってるのですが、どうしてもできません…
888:nobodyさん
10/01/09 17:27:25
>>880
ありがとうございます。
URLリンク(mini.bitter.jp)
アドバイスを見ながら書いてみたものが上のURLの物になります($toをfunction tweet()の下に入れてみました)
が、このようにすると
XML パースエラー: 要素が見つかりません。
URL: http://~oauth_reply.php
行番号: 1, 列番号: 1:
というエラーが出てきてしまいます。このエラーでググってみてもイマイチこの場合と結びつかないというか…。
889:nobodyさん
10/01/09 20:41:00
oAuthにむりに固執しなくていいんじゃない?
890:nobodyさん
10/01/09 21:58:48
6月以降はベーシック認証が「非推奨」になるんだっけ
どうしたもんかな…
891:nobodyさん
10/01/09 22:17:16
きちんと検証してないけど、こんな感じで動かないかな?
<?php
$username = "1111";
$key = "3333";
$consumer_key = "4444";
$consumer_secret = "5555";
$access_token = "6666";
$access_token_secret = "7777";
$filename = "data/data.dat";
$host = "URLリンク(twitter.com)";
$fp = @fopen($filename,'rb') or die("ファイルが開けません");
flock($fp, LOCK_EX);
$line = fgets($fp, 64);
fclose($fp);
if(!empty($line)){
$last_id=$line;
}else{
$cnt = "1";
}
$XML = getObjOAuth($host,$cnt,$last_id,$consumer_key,$consumer_secret,$consumer_secret,$access_token,$access_token_secret);
892:nobodyさん
10/01/09 22:18:02
>>891の続き
$i = count($XML)-1;
$j = 0;
while($i >= $j) {
$var = $XML->status[$i]->text;
$com = ereg_replace("\@$username", "", $var);
$id= $XML->status[$i]->id;
$reply_name = $XML->status[$i]->user->screen_name;
$name = $XML->status[$i]->user->name;
$message = serif($reply_name,$name,$com);
//かえって来た値がnullじゃない場合のみ投稿する
if ($message != null){
tweetOAuth($message,$id,$key,$consumer_key,$consumer_secret,$consumer_secret,$access_token,$access_token_secret);
}
$i--;
}
$string = $XML->status[0]->id;
if(!empty($string)){
$dat = (string)$string;
file_put_contents($filename,$dat,LOCK_EX);
}
function serif($reply_name,$name,$com){
(省略)
}
893:nobodyさん
10/01/09 22:19:03
>>892の続き
//OAuth経由でTwitterに投稿する
function tweetOAuth($message,$id,$key,$consumer_key,$consumer_secret,$consumer_secret,$access_token,$access_token_secret){
require_once("twitterOAuth.php");
$message = mb_convert_encoding($message, "UTF-8","ASCII,JIS,UTF-8,EUC-JP,SJIS");
// OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
// TwitterへPOSTする。パラメーターは配列に格納する
$req = $to->OAuthRequest("URLリンク(twitter.com)",array("status"=>$message,"in_reply_to_status_id"=>"$id"),"POST");
}
//OAuth経由でTwitterから取得
function getObjOAuth($host,$cnt,$last_id,$consumer_key,$consumer_secret,$consumer_secret,$access_token,$access_token_secret){
require_once("twitterOAuth.php");
// OAuthオブジェクト生成
$to = new TwitterOAuth($host,$consumer_key,$consumer_secret,$access_token,$access_token_secret);
// TwitterからGETする
if(($cnt != null)&&($last_id != null)){
$req = $to->OAuthRequest($host,array("count"=>$cnt,"since_id"=>$last_id),"GET");
}else if(($cnt != null)&&($last_id == null)){
$req = $to->OAuthRequest($host,array("count"=>$cnt),"GET");
}else if(($cnt == null)&&($last_id != null)){
$req = $to->OAuthRequest($host,array("since_id"=>$last_id),"GET");
}else{
$req = $to->OAuthRequest($host,array(),"GET");
}
$req_array = simplexml_load_string($req);
return $req_array;
}
?>
894:nobodyさん
10/01/09 22:31:57
>>887
8bitnoteさんとこのスクリプトだと思うけどそこは関係ないよ
その下の
elseif( preg_match("/眠い/",$text)){ //上記で調べた自分へのリプライがなかった場合にこの処理に移る。POST内容に眠いが含まれていたら次の処理に移る
の前に@が含まれるpostを弾く処理を入れればいいはず
895:888
10/01/10 01:00:53
>>891-893
ソースありがとうございます!
891さんのソースをコピペして動かしてみた結果、Arrayという文字だけはPOSTしてくれるようになりました。
もうちょっとどうにかしてこようとおもいます。
ありがとうございました!
896:nobodyさん
10/01/10 01:20:14
>>894
回答ありがとうございます
このPHPにはbotへの@リプライとTLから特定単語を拾ってリプライする動きを書いてます
@が含まれるpostを弾くと、このbotへのリプライに反応する事ができなくなってしまいます…
また
if( $screen_name != $username){ //POSTが自分のPOSTではなかった場合にサブルーチンから抜ける
return;
}
を打ってみたのですがやはりエラーが出ました
897:nobodyさん
10/01/10 01:56:39
>>896
「botへのリプライ以外の」@を弾くだけだから大丈夫なはずだけど…
ちなみにうちではこんな感じで、反応語のチェックはswitchで書いてる
if( $screen_name == $username){ //POSTが自分のPOSTだった場合にサブルーチンから抜ける
return;
}if( preg_match("/\@$username/",$text)){ //POST内容にry
(略)
}elseif(! preg_match("/^[0-5]{0,1}$/",$now_g)){ //botが寝てる0~5時台でなければTL反応させる
switch(true){
case preg_match("/\@/",$text) : return; //他の人への@ならサブルーチンから抜ける←これでbot宛以外のリプライには反応しない
break;
(略)
default : return;
break;
}
}
else{return;}
898:nobodyさん
10/01/10 05:42:07
>>891の通りにやってみたら、PHPにアクセスすると真っ白の画面が出るようになってしまった
エラー表示されないから何が何だか・・・
899:nobodyさん
10/01/10 05:42:42
>>891の
$username = "1111";
$key = "3333";
が何だかわからないんだけど、ごめん参考元?ってなにになるのかな?
900:nobodyさん
10/01/10 10:42:09
>>899
えっ
901:nobodyさん
10/01/10 12:03:57
>>899
ごめん$key要らない・・・
自分は複数BOT作ってて複数でも使いまわせるようにしてるんで、その名残だ
要らないところ削除して直したつもりが残ってたみたい
902:nobodyさん
10/01/10 12:17:50
>>898
>>891のソースにはどこにも出力命令が無いんだから
ブラウザでアクセスして何も表示されないのは当たり前だろ
903:nobodyさん
10/01/10 16:18:50
>>902
ごめん。真っ白になるだけでポストしないからどこかにエラーが出るはずだと思ったんだけど
さっき確認したら今まで普通に動いていた別のスクリプトでも同じ現象が起こった
そっちは弄ってないから原因は>>891ではないみたい
904:nobodyさん
10/01/10 23:13:36
自動フォロー返し時にDM送るようにしてるんだけど
たまにフォローだけしてDM送られなかったりフォロー失敗してDMだけ送られたりする
この問題解消するときってどうすりゃいいのかな
905:nobodyさん
10/01/11 17:34:10
すみません初心者で簡単な質問ですが、分かる方は教えて頂けると助かります…
(例)「おかえり、今日の夕飯は○○ですよ」
という文章で、○○の部分をランダムで変えたいのですがプログラムが分かりません
$mesi = array("和食","洋食","中華");
と書いて、
$mes['night'] = array( //夜の時間に発言
"おかえり、今日の夕飯は $mesi ですよ");
とやっているのですが、「おかえり、今日の夕飯はArrayですよ」と表示されてしまいます
906:DAWNTO_Windy-melt ◆Windy/f9HNwg
10/01/11 17:40:24
>>905
> $mesi = array("和食","洋食","中華");
>
> と書いて、
>
> $mes['night'] = array( //夜の時間に発言
> "おかえり、今日の夕飯は $mesi ですよ");
$mesi = array("和食","洋食","中華");
$num = array_rand($mesi,1);
$mes['night'] = array(
"おかえり、今日の夕飯は $mesi[$num] ですよ");
でいいと思う。
907:nobodyさん
10/01/11 18:02:52
>>906
早い回答ありがとう!
ついでに聞いておきたいんですが、$num = array_rand($mesi,1);の1ってなんの意味?
この中から1つ選ぶ…って事?
908:nobodyさん
10/01/11 18:07:19
つ公式PHPマニュアル
909:nobodyさん
10/01/11 18:12:07
API叩いた後に応答情報あるでしょ。
それが正しく帰ってきてればOKでいいじゃん。
910:nobodyさん
10/01/11 18:25:16
php叩いても成功した時はなにも文章が出てきません…
そしてまた行き詰ったんだが、>>906やり方でやってみたら
ときどき何もランダム単語表示されない時がある…
「おかえり、今日の夕飯は ですよ」
みたいな感じ
911:nobodyさん
10/01/11 18:36:05
飯抜きだったんだよ
912:nobodyさん
10/01/11 23:35:54
だれうま
913:nobodyさん
10/01/11 23:48:16
>>910だが、自力でどうにかなった
>>906の方法じゃないけどなぜか出来たのでこれで十分だ
914:nobodyさん
10/01/12 01:54:55
自己解決したままじゃなくてどうやって解決したまで書かないと
915:nobodyさん
10/01/12 06:32:37
>>849ですが8bitさんのスクリプトを使ってみたらさくらでもcron消されませんでした
GAEやろうとして行き詰まってたところだったから助かった!