したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

TwitterBotPHP質問スレ

1pha:2009/12/01(火) 17:51:42
http://pha22.net/text/twitterbot.html
でphaが公開しているPHPのTwitterスクリプトについて、
スレッド立てるほどじゃない質問はこちらにどうぞー。
phaがときどき巡回しますが対応が遅れることも多いので、質問に答えてくれる人も募集しています!

2610:2009/12/01(火) 21:22:03
早速掲示板のほうお邪魔致します。
先日DLさせていただいたver1.41のpost_random.phpで
{timeline_id}のタグを使うとbot自身のidが引き当てられてしまうことがあります。
修正可能でしょうか?
お手数ですがよろしくお願いします。

3pha:2009/12/01(火) 21:34:47
>>2
すみません、それミスです。数日以内に修正します。。。

4SIVA:2009/12/02(水) 00:08:22
早速コチラに記載させていただきます。
一度サーバー上のデータを消去して、再度1.41をアップロードしたところ、リプライは返すようになりましたが、二重リプライは解消されませんでした;;
PHPのバージョンはVer.5.2.10です。

以下、エラー文です。
PHP Warning: preg_match(): Compilation failed: unmatched parentheses at offset 2 in /フォルダ先/reply_random.php on line 170

以上、御報告にて失礼致します。
何卒宜しく御願い致します。

5tom:2009/12/02(水) 11:58:38
以前ブログのコメント欄に質問させていただいた者です。
移動されたとのことですので、2回の書き込みをコピペさせていただきます。

-------
tom 2009/11/27 15:10
初めまして。現在こちらのスクリプトを使用し、bot制作を行わせていただいてます。
post_randomに関してはなんの問題も無く作動しているのですがreply_randomとreply_patternがブラウザからの手動でも上手く動かず、行き詰ってしまいました。
reply_randomでは「2分以内に受け取った@はないようです。」、
reply_patternでは何も表示しない空白のページとなってしまいます。
空白のページのソースは
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY></BODY></HTML>
となっておりました。

reply_patternの中身はいじっておらず、初期のサンプルがそのまま入っております。
自分でも引き続き調べてみますが、もし解決法をご存知の方がいらっしゃれば教えていただけないでしょうか。
よろしくお願いいたします。

-------
tom 2009/11/27 19:18
ponさん、お返事ありがとうございます。
reply_patternは実行しても何も表示しされないのが正解なのですね。無知で申し訳ありませんでした。

reply_randomのほうは、タイムラグなどを考え
1、@付きで話しかけた直後に実行
2、@付きで話しかけた後1分程待ってから実行
3、@付きで話しかけた後1分30秒ほど待ってから実行
と既に3パターン試しているのですが、どれも「2分以内に受け取った@はないようです。」の表示がでてきてしまいまして……

バージョンは1.41、PHPは5.2.11を使用しております。
引き続きどうぞよろしくお願いいたします。

-------
以上が前回までの書き込みとなります。

以降もいろいろ思考錯誤しているのですが解決の糸口がみえず……
お力を貸していただけないでしょうか?
よろしくお願いいたします。

6めい:2009/12/02(水) 15:30:09
初めまして、お邪魔いたします。
早速質問で申し訳ないのですが
サーバーにファイルを上げて「post_random.php」を実行しても
「Twitterへの投稿に失敗しました。パスワードやユーザー名をもう一度チェックしてみてください。」
と出てしまって動作しません。IDとパスワードはあっているのですが…
手動で動かさない、台詞はローテーションしないようにしたいので
「form.php」と「post_rotation.php」はサーバーにアップロードしておりません。
もしかして「発言を書き込んだファイル」は1つでなくてはならないのでしょうか?
(「reply_random.php」と「post_random.php」で別々の「○○○.txt」を適用しているのですが…)
ちなみにサーバーはhttp://wing2.jp/をお借りしています。

またcronはhttp://www.cron-job.org/のものをお借りしているのですが
「スクリプトの URL」を記入する欄で詰まってしまいました。
http://example.com/○○○.phpの「○○○.php」は
@pha様の配布されているzipの中のファイルのどれに当たるのでしょうか。
(とりあえず現在はpost_random.phpを実行しています)

当方、bot作成、php編集共に全くの初心者なので分かりやすく説明していただけると幸いです。
それでは乱文、長文失礼いたしました。

7pha:2009/12/02(水) 21:18:06
>>4
二重リプライを返して、しかもエラー文が出るのですか?何故だろう・・・
エラー文では()などのカッコがおかしいと書いてるんですが、なんだろう。
reply_pattern.phpがデフォルトのままでもエラーがでますか?

>>5
うーむ、なんだろう・・・
ウェブからリプライ一覧を見た場合にはリプライはちゃんと受け取ってますか?
あと、ためしにcronの間隔を5分くらいにしてみるとどうでしょう。

>>6

>もしかして「発言を書き込んだファイル」は1つでなくてはならないのでしょうか?
>(「reply_random.php」と「post_random.php」で別々の「○○○.txt」を適用しているのですが…)

それは別々で大丈夫です。
tw.txtがデフォルトのままでも投稿がミスになりますか?

>http://example.com/○○○.phpの「○○○.php」は
>@pha様の配布されているzipの中のファイルのどれに当たるのでしょうか。
>(とりあえず現在はpost_random.phpを実行しています)

これはpost_random.phpを指定してください―。

8めい:2009/12/02(水) 21:42:19
素早い対応ありがとうございます。

>「reply_random.php」と「post_random.php」で別々の「○○○.txt」を適用しているのですが…

「reply_random.php」の方は「tw.txt」というファイルを
「post_random.php」の方は「random.txt」というファイルにしてあり
それぞれのファイルもちゃんと用意してあります。

何度もお手数をおかけしてしまい申し訳ありません。

9通りすがり:2009/12/02(水) 22:06:16
>>5
同じ状態(「2分以内に受け取った@はないようです。」と表示される)でしたが
別サーバーを借りて試してみた所、問題なくリプライできました。
無料のPHP可もありますので、一度試してみてはいかがでしょうか。ご参考までに。

それと、サーバーによってはパーミッション設定が違ったりしますので
サーバー側の説明にもう一度目を通すといいかも。

10ca:2009/12/03(木) 02:28:15
初めまして。お世話になっております。
無限ループ防止機能が搭載されたバージョンを使っているのですが、うまく動いてくれないようで、bot同士の会話でループが止まらない状態になってしまいます。設定を1にしてもループは止まりません。何か間違えているのか、それとも私のbotがループ防止の条件を満たしていないのでしょうか、どのような条件でループ防止されているのか詳細をお聞きしたいのですが。

11pha:2009/12/03(木) 06:10:16
先ほど1.42にバージョンアップしました。
http://pha22.net/text/twitterbot.html

修正点は
・タイムラインからid、名前を取得する際に自分の名前を取らないようにしました
・リプライを認識しないバグを修正しました。リプライ周りが1.41でうまく動かなかった方は1.42をお試しください。
・若干動作が軽くなりました
です。
ループ制御についても直ってるかも。。。ちょっと試してください。

>めいさん
うーん、ちょっとわからないです。。。

>caさん
1.42で直ってるかもしれないので試して頂けますか。
ちなみにループ防止の条件は、cronが5分間隔でループが3回までにしている場合、15分以内に3回のリプライを同一人物から貰っている場合に返答しないようにしています。

12めい:2009/12/03(木) 10:55:04
バージョンアップされたものを適用したら無事投稿に成功しました!
ありがとうございました!///

13pha:2009/12/03(木) 11:44:06
>めいさん
おお、よかった!

14yuu:2009/12/03(木) 14:00:52
こんにちは。こちらの配布ファイルを利用させていただいている者です。
pha様のいつも素早いご対応や掲示板での質問への丁寧なご返信にいつも感心と感謝をしております。
どうもありがとうございます。

ところで私も>10のca様と同様、1.41から実装された無限ループ防止機能が
うまく機能していないように感じていました。
それで、素人考えで恐縮なのですが、ループ防止の条件を拝見して少し思ったことがあったので
書き込ませていただきます。

>ちなみにループ防止の条件は、cronが5分間隔でループが3回までにしている場合、15分以内に3回のリプライを同一人物から貰っている場合に返答しないようにしています。

この条件ですと、仮に相手のbotもcronが同じ5分間隔で動かされていた場合には、
お互いのやりとりは10分ごとになると思うので、
絶えず最初の1回分がリセットされてしまって、ループしてしまうことにはならないでしょうか…?
全然的外れな事を言っていたら申し訳ありません。


それと、以前もどなたかが質問されていたような気がするのですが、
新しい掲示板に移行されたということで改めて質問させていただきます。

post_random.phpを使用し、tw.txtに
『@{follower_id} {follower_name}さん、こんにちは。』
というような記述のセリフをいくつか入れて、
ランダムにフォロワーに名前入りで話しかけるようにしたいと思っているのですが、
この記述では、{follower_id}と{follower_name}がそれぞれランダムに選ばれてしまい、
Aさんのid宛に別人のBさんの名前で呼びかけてしまったりします。
{following_name}や{timeline_name}でも試しましたが同様でした。

idとnameを同じ一人の物に組み合わせるにはどうしたらよいでしょうか?
現在は{follower_name}は使わず、@{follower_id}のみで名前は入れないセリフにして無事動作しています。
できたら名前入りで呼びかけられるようにしたいので、
もし何か対処法がございましたらご回答いただけますと大変嬉しいです。

15sk:2009/12/03(木) 14:08:42
はじめまして。
サーバーのことやプログラムについて全くの無知で申し訳ないのですが、よろしくお願いします。
サーバーにファイルをアップロードし、post_random.phpを実行したところ、
Warning: require_once(Services/Twitter.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/www/htdocs/(ユーザーID)/public_html/post_random.php on line 36
という文と、
Fatal error: require_once() [function.require]: Failed opening required 'Services/Twitter.php' (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/(ユーザーID)/public_html/post_random.php on line 36
というものが表示されます。
post_random.phpの36行目について何も変更等はしていません。
サーバーはhttp://atpages.jp/のものをレンタルしています。
対応を教えて頂けますでしょうか。本当に申し訳ありません。

16545:2009/12/03(木) 17:36:54
はじめまして。
cgiの知識がほとんどないままにbotを作り始めた初心者です。
どうしてもうまくいかずに行き詰ってしまったため、どうかご回答をお願いします…!
ちなみにサーバーはゼロウェブサーバーを、cronはWebcron.orgを使用しています。(3ユーロ支払いました)

ファイルを編集・FTPを使ってアップするところまではできました。
また、1時間に発言をポストできるように設定し、こちらは正常に動いています。
ですが、二分間感覚で設定したcronだけがうまく動いてくれません。
最初のうちに1度だけリプライがあって「やった!」と喜んだのもつかの間、それ以降1度も返さなくなってしまいました。ためしに違うIDから話しかけてもらってもやはりリプライはありません。
1度動いていただけに、何が悪いのかさっぱりわからない状態です。
何か変わったかというとその1度の発言のあとにWebcronにユーロを支払い、2分間隔に変えた位です…(最初は5分に設定していました)

ここでつまずいて1日が終了してしまいました。
お手数おかけいたしますが、どうかアドバイスをお願い致します!

17名無しさん:2009/12/03(木) 18:30:17
>545さま

横レス失礼します。

cronではなく、reply_random.phpに手動でアクセスしてもうまく動かないのでしょうか?
もし手動でちゃんとリプライが返ってくるようなら、cron側の問題ではないかと思います。
最初1度リプライが返ってきたと書かれていらっしゃるので、
プログラムに問題があるようには思えないのですが…。

もしかしたら、リプライ用に用意された言葉が少ないために
POSTが重複してしまって規制にあっているのかも…?とも思いましたが、どうでしょうか。
お役に立てなかったらごめんなさい。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板