「きせーさーち」規制解除時刻計算bot | あわあわのブログ

あわあわのブログ

iPhone脱獄のいろいろ

@post_limit のきせーつーちを使っていたのですが、最近不安定なようで使えなくなってしまったので、自分で規制通知botを作ろうと思いました。

しかし、セクションの概念がよく理解できず、いろいろ試した結果、暫定基準で規制解除時刻を割り出すアルゴリズムを使うことにしました。

まだβ版というか、かなり不安定ですのでそこら辺は承知のうえでお願いします。

【追記 7/16】セクションが分かりました。今までの暫定基準で規制解除時刻を割り出すアルゴリズムに加えて、セクション方式でアルゴリズムを割り出す機能を使えるようにしました。
参考にされてもらったのはこちらの投速チェッカです。りっつ(@ltzz)さんThanks!
投速チェッカ
http://ltzz.info/alpha/tosoku.html



機能


@kisei_search

  • @kisei_searchをフォロー後、「登録」とリプライを送ってください。

    • 登録が完了するとリプライが来て、使えるようになります。


  • セクション内のツイート数が120になった時に通知をします。【修正 9/4】

    • セットアップがされていない場合は通知されません。セットアップは「いつ」または「リセット」をリプライで送った時に行われます。


    • セットアップしたデータはきせーさーちが何らかのエラーで再起動すると消えてしまいます。今の時点ではリジューム機能が無いので再起動した場合にはそのたびセットアップをお願いします。


  • 「ユーザー名いつ」を文頭に含むリプライを送ると最近3時間以内(セクションあたり)のツイート数と、規制解除予定時刻をより正確に測定したものを知らせてくれます。しかし測定できない場合が多いです。また@があっても問題ありません。ほぼ正確ですがエラーが多いです。セットアップが行われていない場合は時間がかかります。

    • 例)「pn1yいつ」「pn1yはいつ解除?」「pn1yいつですか」「@pn1yいつ」


    • 「いつ」単体の場合には自分の解除時刻をしらせます。つまり次のセクションまでの時間を教えてくれるということです。(こちらの場合かなり正確です)


  • 「ユーザー名いつz」を文頭に含むリプライを送ると規制解除時刻を知らせてくれます。また@があっても問題ありません。不正確ですが、エラーは少ないです。(この方法は最近127ツイートに削除されたツイートがなく、規制にかかっているときに有効な方法です)

    • 例)「pn1yいつz」「pn1yはいつz解除?」「pn1yいつzですか」「@pn1yいつz」


    • 「いつz」単体の場合には自分の解除時刻をしらせます。(規制されていない場合は誤差が大きく意味ありません)


  • 「リセット」または「りせっと」を含むリプライを送るとツイートを取得しなおして解除点とセクション内のツイート数を再計算し直します。

    • リセットが完了すると通知が来ます。まだ再計算にはエラーが多いので完了しない時が多いです。


  • またリプのコマンドが合っていて、何らかのエラーが発生した場合にはエラー通知がリプで送られてきます。プログラムのバグの可能性も多いのですが、その場合には再度試してみることをおすすめします。(送られてこない場合もあります)

  • 「フォロー解除」とだけリプを送ることでフォローの解除を行うことができます。

    • フォロー解除が完了するとリプライが来て、フォロー解除が完了したことを通知します。




少し文章が変なのですが、ユーザー名を文頭に含み、「いつ」を含むリプで反応します。

機能は今後追加していく予定です。


注意


自分で使うのを目的として作ったものですので、問題が起きましても一切の責任を負いません。

最初に述べました通り、かなり不安定です。
【追記 7/16】サーバーの通信の不具合があり、時々自動再起動を繰り返すことがあります。

規制解除時刻の通知に関してはかなり誤差があるのを確認しています。
【追記 7/16】セクション方式の導入によって正確に求めることも可能になりました。

セクション方式の計算方法を知っているかたがいましたら教えてくれると嬉しいです。

またバグ、ご要望がありましたら@pn1yまたはコメントで報告をしてもらえると嬉しいです。


更新履歴


kisei_search

#0.1b1 (2012-07-14)
ユーザーストリームでタイムラインを監視して、リプライを検出し、応答するbot基本メソッド
登録メソッド
規制解除時刻の計算メソッド
ログをkisei_search.logに取るメソッド
これらを搭載。

#0.1b2 (2012-07-14)
on start upを追加。
起動時にアップデートが通常の再起動かを確認して、メッセージを変更する。
コンソール表示を追加。

#0.1b3 (2012-07-15)
管理者からメッセージを取得して代理でつぶやく機能を追加。
フォロー解除メソッドの追加。
起動時のアップデートか通常の再起動かを確認するときのバグを修正。みょん(@myuon_myon)さんThanks!

#0.1b4 (2012-07-15)
アドミン用レスポンスメソッドを追加。
セクション方式の規制解除時間の計算メソッドをアドミンコマンドとして追加。
アドミンコマンド実行時は通常コマンドを実行しないように修正。
エラーをログに取るコードにあったバグを修正。

#0.1b5 (2012-07-16)
セクション方式のアルゴリズムを修正。
アルゴリズムの変更点は、1セクションを3時間とし、セクションのはじめのツイートを解除点として、セクションの開始位置を設定する。それぞれのセクションの開始位置を計算して、最新の解除点に3時間加算した時刻を規制解除時刻とする。

#0.2b1 (2012-07-16)
セクション方式のアルゴリズムをアドミンコマンドから通常コマンドへ変更。
引数のユーザー名の前に@が入っているときは戻り値にも@を含ませるように修正。

#0.2b2 (2012-07-16)
登録されてない人でもコマンドが使えてしまっていたバグを修正。
follow,unfollow,parse errorなどのコンソール表示を追加。
follow,unfollow,unfollow forciblyのログを記録するように追加。

#0.2b3 (2012-07-16)
「いつ」でセクション方式の測定メソッドを呼び出すように変更。
「いつz」で暫定基準方式の測定メソッドを呼び出すように変更。
セクション方式のアルゴリズムで取得するツイート数の上限を200ツイートから3200に変更。
アルゴリズムの変更点はtwitter apiのoptionでpageを利用して上限を引き上げられるように変更。

#0.2b4 (2012-07-17)
解除点が最新のツイートになった時に解除時間がマイナスになるバグを修正。
アルゴリズムの変更点はunlocknumが0で最新のツイートを示すとき3時間加算するループに入らないため、0の時の条件分岐を追加しバグを修正。

#0.2b5 (2012-07-17)
セクションあたりのポスト数を規制されていない場合には通知する機能を追加。
アルゴリズムの変更点は最新のツイートのオブジェクトを取得して位置を特定し、送られてきたリプの分の1を加算して127以下の場合かつ、ターゲットが本人ではない時に通知内容にセクション内のツイート数を追加するように変更。
解除点が最新のツイートでかつ、最新のツイートが現在時刻より3時間以上前の場合に、規制解除時刻を求めてマイナスになるバグを修正。
アルゴリズムの変更点はセクション内のツイート数が0の時、現在時刻と比較して3時間以上前なのかを調べる条件分岐を追加しバグを修正。
すこしリプの日本語を変更。

#0.3b1 (2012-08-09)
ツイート取得時にユーザーデータを更新するメソッドを追加。
メソッドではユーザーのセクション内のポスト数と前回の解除点の時刻を記録する処理、セクション内のツイート数が115の時に通知する処理を実装。
リプライの応答メソッドもユーザーデータから取得するように変更。
新アルゴリズムの規制解除時刻割り出しメソッドもリプライ専用のデータ処理を行なっていたものを一般化し引数と戻り値を変更。
idにリプライを送るメソッドを追加。
その他ユーザーデータの取得メソッド追加による細かな変更。

#0.3b2 (2012-09-04)
レスポンス取得メソッドから、フォロー、アンフォロー、リセット、規制解除時刻取得、を分離しそれぞれを個別のメソッドに変更。
ユーザーの追加、削除メソッドをさらに分離し、ユーザー管理メソッドとして追加。
ユーザー管理用にフォローリストを定義。
ユーザー管理のデーターチェックメソッドからイニシャライズメソッドを分離。
アドミンコマンドメソッドをメインスレッドから分離。
スレッドごとの例外処理からエラー処理メソッドを分離。
ユーザーストリーム接続時にフォローリストを更新しるよう変更。
レスポンス取得メソッドの検索方法を変更し高速化。
ユーザーの確認にユーザーリストを呼び出し確認することでリプライを高速化。
規制解除測定アルゴリズムにおける多数のバグを修正。
リプライコメントをよりわかりやすく変更。
エラー時にリプライを送るように追加。