【Twitter】 BOT製作支援スレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/27(日) 14:15:59ID:Dz08qoo4[公式] http://twitter.com/
[Twitter 開発ブログ 日本語版] http://twitterjp.blogspot.com/
*どの言語でもOKですがソースを書く際は何の言語なのかも記載してください。
*初心者のために、なるべくぶつ切りのソースではなく全体的に載せてほしいです。
0751nobodyさん
2010/01/01(金) 09:53:36ID:???サイトからコピペしたときによくあたるんだけど、、文字エンコーディング関連でエラーが出る事がある。
¥がそのままの時はバックスラッシュに変換してみて。linux環境での実話。
SJISをviで読み込ませたら¥記号のままでエスケープできずに狂ったことがあった。
FedoraはUTF8だったので
:%s/¥/\\/g
:set fileencoding=utf8
で保存し直した。
0752nobodyさん
2010/01/01(金) 11:29:43ID:???アップローダー(CyberDuck)を使って、パブリック_htmlへアップロードした。
>>751
うーん見た感じ\とかエンコードとかは大丈夫みたいなんだが…。でも返信ありがとう。
0753nobodyさん
2010/01/01(金) 15:27:24ID:???エラーの文をコピペしてみれ
スクリプトの記述ミスがいけないのか、文字化けなのか、そもそもそこのサーバーのPHPで使えない関数が含まれてるのか
0754nobodyさん
2010/01/01(金) 23:15:29ID:???・cron-job消された!手間かけるの面倒!
→FileQ
・cron-job消された!手間をかけるのは厭わない
→GAE
・そもそもcron-job使ってません^^
→自鯖とか各自の鯖のcron
・cron?なにそれこわい
→PC起動したまま延々とリロード
かな?
0755nobodyさん
2010/01/02(土) 19:48:02ID:???0756nobodyさん
2010/01/03(日) 00:06:15ID:???0757nobodyさん
2010/01/03(日) 05:35:49ID:???zeroweb(happy888.net)だと、うまく時間内にキャッチできてない→反応しない
昔から借りてる某レンタル鯖は反応するけどその後2回ほどreplyしてしまうし
鯖によって本当にマチマチ…
ちなみにどの間隔も変わらない感じした
0758nobodyさん
2010/01/03(日) 10:03:12ID:???Fatal error: Call to undefined function curl_init() in /home/tre666/public_html/***/***.php on line 46
46行目は $ch = curl_init();
やっぱcurlが使えないってことでおk?
0759nobodyさん
2010/01/03(日) 10:04:31ID:???0760nobodyさん
2010/01/03(日) 10:11:34ID:???curl未対応だな。FileQは
0761nobodyさん
2010/01/03(日) 13:37:31ID:???トレ君か よろしく
0762nobodyさん
2010/01/03(日) 15:48:44ID:???今朝、持ってる全てのアカウントが消されてて別のメアドでアカウント取ったんだが、新しいcronを設定する端から消されて行くw
アカウント取れたからには個人を特定されて弾かれてる訳ではないだろうし
BOT本体だけでなく、30分に一回フォロー用phpを回すだけのアカウントも消されていたのもそのせいかも
0763nobodyさん
2010/01/03(日) 18:45:10ID:???変な汗でた よろしくお願いします
FileQを諦めるかwebcronにするか自力で設定するか…
1日数回の定時postはwebcronにしてたんだけど、リプライはさすがに消費量が激しいので無理だな
0764nobodyさん
2010/01/03(日) 21:45:57ID:???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の読み込みに問題があるのでしょうか?
どうしたらいいのかわからずお手上げ状態です
0767nobodyさん
2010/01/03(日) 22:33:27ID:???cron-jobは、日本のBotで負荷が異常に増えたのに対して、〜.jp規制をかけているようです。
phpなどの実行URLか、登録メールアドレスが日本のドメインの場合強制排除しているとか。
ソースはほかの開発者さんのツイートなので曖昧ですが、〜.jpを使っていない私が
全く規制されていないのも納得できました。
0768nobodyさん
2010/01/03(日) 23:21:18ID:???0770nobodyさん
2010/01/04(月) 01:59:32ID:???0771769
2010/01/04(月) 02:12:01ID:???エラーは出てない、ポストも問題ない、ただin_reply_to_status_idが付与されないだけなんだ
Basic認証の時は出来てたんだけどなぁ
0772nobodyさん
2010/01/04(月) 03:03:11ID:???自分はこれで出来てるけどどうだろう
$req = $to->OAuthRequest($host,array("status"=>$aaa,"in_reply_to_status_id"=>"$bbb"));
0773769
2010/01/04(月) 07:01:43ID:???単純な話で情けないな…。>>772ありがとう
0774nobodyさん
2010/01/04(月) 09:56:27ID:???0775nobodyさん
2010/01/04(月) 10:13:46ID:???どっちにしろ送るときゃ文字列なのにおかしなことをしてるな。
しかも黙って蹴ってるってのがなんだかやな感じだな。
0777nobodyさん
2010/01/04(月) 11:43:15ID:???手動なら動くということはファイル自体は問題ないんだよな…?
なにがあかんの……
0778nobodyさん
2010/01/04(月) 13:20:42ID:???1日とか待たなきゃいけないのかな…
全然来ないのでちゃんと申込出来てるのかわかんなくなって来た
0779nobodyさん
2010/01/04(月) 16:20:35ID:???メールはすぐ来た。が、その後すぐアカウントロックされてしまった。
cron-jobでロックされた人が流れてるからかもしれん
>776
自分は.comドメインだけど鯖がロリポ
鯖IPかアクセスしたIPで日本かどうか判断してるのかも
0780778
2010/01/04(月) 17:00:18ID:???違うメアドで登録してみたら今度はすぐに来た
今のところアカロックはされてないみたいだけど
cron-job.orgのときみたいにログイン出来なくなっちゃったの?
0781nobodyさん
2010/01/04(月) 19:08:24ID:???ただもうcron-job.orgは設定するそばから消えるけど
>>777
コマンド欄にURLそのまま打ち込んでないか?
ちょっと上の方見て来い
0782nobodyさん
2010/01/04(月) 19:46:04ID:???同じ状況の奴いる?
0784nobodyさん
2010/01/04(月) 19:53:07ID:???0785nobodyさん
2010/01/04(月) 20:57:33ID:???curl使えない?何のこと?とか思ってたらリプライ用のファイルも回せないってことなんだよな?
お金払っちゃったぜ/(^O^)\
0786nobodyさん
2010/01/04(月) 22:02:45ID:???うちのとこもそう。
まったくいじれないのにそのまま動いてるから移行もできない状態…
とりあえず自然にオフになるの待ってる。
0787nobodyさん
2010/01/04(月) 22:06:20ID:???誰か助けて
0788nobodyさん
2010/01/04(月) 22:24:40ID:???>>769
掘り返してくれてありがとう
>>772
ありがとう出来たよ!
型が違うのかと思ってintvalかませたりとかは試してたんだけど単純な話は単純な話だったんだな…
0789nobodyさん
2010/01/04(月) 22:27:08ID:???0790nobodyさん
2010/01/04(月) 22:29:00ID:???0792nobodyさん
2010/01/04(月) 22:57:17ID:???向こうに用途悟られて消されかねないし
0793779
2010/01/04(月) 23:07:46ID:???2つ動かしてたのがどうしても1つしか設定できなくなった
それで.deでアカウント作ったけど速攻でロックされた
deで表示された文を翻訳すると再登録するな+問題あると訴えるみたいな感じだったから
それはねーおwと思いつつ再登録してない
他にもcronサービスあるから皆が上手く分散できるといいんだが…
0794nobodyさん
2010/01/04(月) 23:27:24ID:???色々削ったり位置を変えてみたけどお手上げだ
0796nobodyさん
2010/01/04(月) 23:48:55ID:???まあそれ以前にcron探しでbot止まってるから意味ないけどな…
0797nobodyさん
2010/01/05(火) 00:18:46ID:???0798nobodyさん
2010/01/05(火) 00:25:47ID:???ここは凄いな。1分間隔で動くし1年で1000円ぐらいだし
cronの使い方がよくわからなかったが、
>>744>>745の書き込みですんなりできた。
0799nobodyさん
2010/01/05(火) 00:36:34ID:???795だけど私は実行してもエラー出ないけどリプライをしてくれない状態
自分で組んだのですがAPIでは動いてくれているので、恐らく組み込みがうまくできていないのではないかと…
0800nobodyさん
2010/01/05(火) 00:47:23ID:???794です。自分も>>799と同じくエラーが出ずAPIの状態…
curlを削ってもいいと聞いたので少しずつ削ってその都度試してみたけど駄目だった
0801nobodyさん
2010/01/05(火) 00:47:51ID:???0802nobodyさん
2010/01/05(火) 01:37:59ID:???0803nobodyさん
2010/01/05(火) 01:38:48ID:???0804nobodyさん
2010/01/05(火) 03:15:16ID:???0805nobodyさん
2010/01/05(火) 04:34:41ID:???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
というエラーが帰ってくる
しかし特に閉じ忘れなども無い気がするんだけど……
誰か同じようなエラーで対応した人いませんですか
色々と考えたけど、自分の経験値では完全に詰みました……
0806nobodyさん
2010/01/05(火) 04:35:41ID:???しくじったアカウント消し忘れたorz
うう、見なかったことにorz
でも助言お願いしますorz
0807nobodyさん
2010/01/05(火) 04:50:40ID:???0810805
2010/01/05(火) 11:35:24ID:???>>809
最初にDLしたものをそのままUPしたらだめだったので、
文字コードをUTF-8、改行コードも念のためLF固定にして再UPしたんだけどダメで、
更に.htaccess置いてサーバーの方で改行コードを固定してもダメでした。
SDNさんのHP注意書きの様に、スクリプトのバージョン違いかとも思って
2度ほど該当バージョンの物をDLし直したんですがダメでした。
白くなるエラーは私も何度か遭遇して、その度に閉じ忘れとかが原因な事が多かったので
今回もそうなのかなぁと思ったのですが……
配布されているものに間違いがあるとは見た限り思えなくて…
ステップサーバーのPHP注意に、白くなるエラーは、PHP5に対応してないスクリプトの可能性アリ
というのがあったので、疑っても見ましたが、それも無いと思いますし……
謎です
とりあえず、自分でも、OAuth調べ中ですが、お心当たりある方居ましたら
ご助言お願いしますorz
0811nobodyさん
2010/01/05(火) 12:04:38ID:???0812nobodyさん
2010/01/05(火) 14:17:40ID:???定期発言もリプライも全部OAuth認証に変えてみたけど、設置もその後も順調だ
やっぱりサーバーとかの環境によってだいぶ差があるんだな
0814nobodyさん
2010/01/05(火) 21:16:43ID:???ttps://mywebcron-com.loopiasecure.com/
0815nobodyさん
2010/01/05(火) 22:09:45ID:???cron-job.orgがダメになってそこに移った
@ページだとほとんど動かなかったから、他の鯖に変えたら動きだした
たまに起動しないけど無料なら想定の範囲内だと思う
0816nobodyさん
2010/01/05(火) 22:23:38ID:???SetCronJobでぐぐると幸せになれるかもしれない
ところで、bardothodolさんのスクリプトが元のリプライソースでcurl使わずにOAuth化できますか?
2つあるpost関数のうち下方にあるcurlは削れてちゃんとクライアント名が変わったんだけど、
上の関数と$usernameと$passwordを削ったらpostできなかったんで、OAuth化できたのかできてないのか分からない状態です
こんな状態だけどクライアント名変えるだけでいいっていうならソースとか晒すけど…
FileQを使いたいので curl使わずにOAuth化できればいいな
どなたかご助言願います
0817nobodyさん
2010/01/05(火) 22:36:06ID:???$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);
}
ここで下の反応語句いれても上ので反応してしまう
色々なところで調べたりいじったりしたんだけどちょっと症状が違うのか上手いこといかない
馬鹿らしいこと聞いているとは思うんですが手がつけれないので…
誰かわかる方いたらお願いします
0818nobodyさん
2010/01/05(火) 22:56:20ID:???中カッコが足りなくて閉じ切ってないのでなんともいえない。
しいていえば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
みたいに出力されるはず
0819nobodyさん
2010/01/05(火) 22:56:35ID:???FileQにみんなでcurl使えるように嘆願するか?w
それとスレチだけどなんで日本には外国みたいなwebcronサービスがないんだろ
お金かかってもいいからあったら便利なのに
0820nobodyさん
2010/01/05(火) 23:02:52ID:???「ただいま」の $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--;
}
↑閉じ方をこうしてみた。
直るかどうかはこの前後のソース次第かもしれないけど…
0821nobodyさん
2010/01/05(火) 23:06:38ID:???早速ありがとう!
ソース変なところからだった…ごめんなさい。
$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--;
}
長いから省略しました。
これで閉じ切ってるかな…?
とりあえず教えてもらった方法やってまた頑張ってみます!
0822nobodyさん
2010/01/05(火) 23:11:35ID:???うわっ!本当だ…すっごい恥ずかしいこれ
そこ直したら戻った気がする。一応返してきたからこれで様子見ます!
本当ありがとう…
0823nobodyさん
2010/01/05(火) 23:18:50ID:???リプライソースからcurlを消せばいいと思ってた…
そうか twitterOAuth.php自体にcurlがあったorz
5分間隔でいいならSet〜とかでいけるけど、やっぱ5分だと取得漏れが多い気がする
そしてwebcronでリプライ動かしたら破産する
自分で設定するしかないか
0824nobodyさん
2010/01/05(火) 23:22:23ID:???無料は申し訳ないからできればカンパとかしたい
0826nobodyさん
2010/01/05(火) 23:30:51ID:???ttp://blog.makotokw.com/2010/01/03/oauth%E5%AF%BE%E5%BF%9C%E3%80%81curl%E3%81%AA%E3%81%97%E3%81%A7%E5%8B%95%E3%81%8Fphp-twitter-library-php-twient%E3%82%92%E5%85%AC%E9%96%8B/
0827nobodyさん
2010/01/05(火) 23:37:52ID:???GAEにしようとしたんだが、Google App Engine Launcherを起動すると
See the logfire 'C:\〜GoogleAppEngineLauncher.exe.log' for details
というエラーが出るから積んだよ
再インストールしてもエラー中のlogを消してもだめだった
問題は山積みだ…
0828nobodyさん
2010/01/05(火) 23:54:54ID:???0829nobodyさん
2010/01/06(水) 01:25:16ID:???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に頼ることにするよ
聞いてくれてありがとう
0830nobodyさん
2010/01/06(水) 15:02:29ID:???0831DAWNTO_Windy-melt ◆Windy/f9HNwg
2010/01/06(水) 15:53:39ID:???わざわざありがとうございます。
本格的に設計開始しましたが、あったらうれしい機能など教えていただけると開発が早く進みます
0833nobodyさん
2010/01/07(木) 02:21:36ID:???楽しみにしてます
かなりのユーザーがいくと思うので負担が大きいかもしれませんが…
cron-job.orgのようにCtrlで時間を細かく選択できたら便利かと思います
時間は1〜2分間隔希望です
0835nobodyさん
2010/01/07(木) 09:20:32ID:???0836nobodyさん
2010/01/07(木) 10:59:33ID:???0837nobodyさん
2010/01/07(木) 12:01:35ID:???Kotobuki Lab.さんのページを参考にしてGAEでcronを実行したいのですが
プロジェクト名すら作成例と同じにして丸コピしているのに、うまくいきません。
同じページを参考にしてうまくいった方はいますか?
変えているのはtestcronServlet.javaの11行目、testcronServletをTestcronServlet
にしたのと、botのURLだけです。
現在Logsでは2分おきにWarning No handlers matched this URL.が出っ放し、
Cron Jobsでも常にon time failedとなっています。←これがどういう状態なのかもいまいちつかめてません…
ぐぐったら海外で同じ状態のひとを見つけたのですが、具体的な解答はなされていないようなので、
どうか助言をお願いします。
0838nobodyさん
2010/01/07(木) 13:07:48ID:???そのページ見てGAEにチャレンジしたけどうまくいったよ
○○Serblet.javaのファイル名は頭1文字目が大文字じゃないと上手くいかなかった気がする
0839nobodyさん
2010/01/07(木) 13:08:57ID:???Ser「b」letじゃなくてSer「v」letね…
0840nobodyさん
2010/01/07(木) 14:39:50ID:???Warning No handlers matched this URL.
ってことはURLが間違ってるって事じゃないのかな
アドレス間違ってるかもしくはGAEからのアクセス弾いちゃってるとかじゃない?
0841nobodyさん
2010/01/07(木) 15:21:15ID:???プログラムのURLが合ってても、cron.xmlの方で指定間違えてたら
Warning No handlers matched this URL.って出るよ
>>837はもう一度パス見直してみ
0843nobodyさん
2010/01/07(木) 23:26:01ID:???0845nobodyさん
2010/01/08(金) 00:42:38ID:???リプライ返しはあいさつに対してのみ行う場合なら人間っぽいbot簡単に作れるよー。
まず「つぶやき収集bot」を作って、あらゆるツイートを収集し、リプライツイートや時々内容のツイートを取り除きテキストファイルに順に格納していく。
時々内容のツイートを取り除く方法は、まずニュースサイトの記事をyahooの形態素解析APIを使って名詞を抜き出し辞書を作っておく。
そして「つぶやき収集bot」が収集したツイートも形態素解析し名詞を抜き出し、あらかじめ作った辞書を検索しその名詞が見つかればそのツイートは取り除く。
あとはテキストファイルに格納したツイートを適当に抜き出ししゃべらせる。
0846nobodyさん
2010/01/08(金) 00:47:33ID:???あるいは人間とマトモな会話ができるbot。
これはかなり時間がかかりそうだ。
0847nobodyさん
2010/01/08(金) 01:51:52ID:???0848nobodyさん
2010/01/08(金) 02:14:44ID:???品詞ごとに分けておおまかな意味を推測させようかと考えてはみたが
>>846
マトモに会話してるように見えるbotなら人工無脳にいくつかあるけど
あれらを今から作るってのは手間だしマルコフ連鎖で繋げてそれっぽく見せるのがせいぜいだろうな。
辞書登録してやるとどうしても反応できるワードには限りがあるし。
本気で知能やろうとするとと個人でやるには大変だ。
0849nobodyさん
2010/01/08(金) 02:48:09ID:???リプライとかは平気なのにTL反応のcronだけ削除されてしまいます
中身は銀さんのをほぼ丸写ししただけ。なにが悪いんだろう?
■ このスレッドは過去ログ倉庫に格納されています