atig 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/.gitignore +24 -0
  2. data/Gemfile +3 -0
  3. data/README.mkdn +52 -0
  4. data/Rakefile +15 -0
  5. data/atig.gemspec +25 -0
  6. data/bin/atig +74 -0
  7. data/docs/OMakefile +32 -0
  8. data/docs/OMakeroot +45 -0
  9. data/docs/_static/allow.png +0 -0
  10. data/docs/_static/emacs.png +0 -0
  11. data/docs/_static/irc_setting.png +0 -0
  12. data/docs/_static/irssi.png +0 -0
  13. data/docs/_static/limechat.png +0 -0
  14. data/docs/_static/limechat_s.png +0 -0
  15. data/docs/_static/oauth_channel.png +0 -0
  16. data/docs/_static/screenshot.png +0 -0
  17. data/docs/_static/structure.png +0 -0
  18. data/docs/_static/verify.png +0 -0
  19. data/docs/changelog.rst +96 -0
  20. data/docs/commandline_options.rst +21 -0
  21. data/docs/commands.rst +84 -0
  22. data/docs/conf.py +194 -0
  23. data/docs/config.rst +159 -0
  24. data/docs/feature.rst +41 -0
  25. data/docs/graphics.graffle +1995 -0
  26. data/docs/hacking_guide.rst +43 -0
  27. data/docs/index.rst +109 -0
  28. data/docs/irc.rst +31 -0
  29. data/docs/options.rst +75 -0
  30. data/docs/quickstart.rst +89 -0
  31. data/docs/resize.sh +7 -0
  32. data/docs/tiarra.rst +2 -0
  33. data/docs/tig.rst +21 -0
  34. data/lib/atig.rb +19 -0
  35. data/lib/atig/agent.rb +8 -0
  36. data/lib/atig/agent/agent.rb +38 -0
  37. data/lib/atig/agent/clenup.rb +23 -0
  38. data/lib/atig/agent/dm.rb +35 -0
  39. data/lib/atig/agent/following.rb +45 -0
  40. data/lib/atig/agent/full_list.rb +20 -0
  41. data/lib/atig/agent/list.rb +55 -0
  42. data/lib/atig/agent/list_status.rb +46 -0
  43. data/lib/atig/agent/mention.rb +13 -0
  44. data/lib/atig/agent/other_list.rb +18 -0
  45. data/lib/atig/agent/own_list.rb +18 -0
  46. data/lib/atig/agent/stream_follow.rb +38 -0
  47. data/lib/atig/agent/timeline.rb +13 -0
  48. data/lib/atig/agent/user_stream.rb +31 -0
  49. data/lib/atig/basic_twitter.rb +116 -0
  50. data/lib/atig/bitly.rb +52 -0
  51. data/lib/atig/channel.rb +5 -0
  52. data/lib/atig/channel/channel.rb +17 -0
  53. data/lib/atig/channel/dm.rb +14 -0
  54. data/lib/atig/channel/list.rb +76 -0
  55. data/lib/atig/channel/mention.rb +20 -0
  56. data/lib/atig/channel/retweet.rb +28 -0
  57. data/lib/atig/channel/timeline.rb +74 -0
  58. data/lib/atig/command.rb +21 -0
  59. data/lib/atig/command/autofix.rb +58 -0
  60. data/lib/atig/command/command.rb +24 -0
  61. data/lib/atig/command/command_helper.rb +95 -0
  62. data/lib/atig/command/destroy.rb +44 -0
  63. data/lib/atig/command/dm.rb +31 -0
  64. data/lib/atig/command/favorite.rb +27 -0
  65. data/lib/atig/command/info.rb +50 -0
  66. data/lib/atig/command/limit.rb +15 -0
  67. data/lib/atig/command/location.rb +23 -0
  68. data/lib/atig/command/name.rb +18 -0
  69. data/lib/atig/command/option.rb +37 -0
  70. data/lib/atig/command/refresh.rb +18 -0
  71. data/lib/atig/command/reply.rb +37 -0
  72. data/lib/atig/command/retweet.rb +63 -0
  73. data/lib/atig/command/search.rb +51 -0
  74. data/lib/atig/command/spam.rb +26 -0
  75. data/lib/atig/command/status.rb +41 -0
  76. data/lib/atig/command/thread.rb +44 -0
  77. data/lib/atig/command/time.rb +32 -0
  78. data/lib/atig/command/uptime.rb +32 -0
  79. data/lib/atig/command/user.rb +42 -0
  80. data/lib/atig/command/user_info.rb +27 -0
  81. data/lib/atig/command/version.rb +49 -0
  82. data/lib/atig/command/whois.rb +39 -0
  83. data/lib/atig/db/db.rb +60 -0
  84. data/lib/atig/db/followings.rb +131 -0
  85. data/lib/atig/db/listenable.rb +22 -0
  86. data/lib/atig/db/lists.rb +76 -0
  87. data/lib/atig/db/roman.rb +30 -0
  88. data/lib/atig/db/sized_uniq_array.rb +62 -0
  89. data/lib/atig/db/sql.rb +35 -0
  90. data/lib/atig/db/statuses.rb +147 -0
  91. data/lib/atig/db/transaction.rb +47 -0
  92. data/lib/atig/exception_util.rb +26 -0
  93. data/lib/atig/gateway.rb +62 -0
  94. data/lib/atig/gateway/channel.rb +99 -0
  95. data/lib/atig/gateway/session.rb +326 -0
  96. data/lib/atig/http.rb +95 -0
  97. data/lib/atig/ifilter.rb +7 -0
  98. data/lib/atig/ifilter/expand_url.rb +74 -0
  99. data/lib/atig/ifilter/retweet.rb +14 -0
  100. data/lib/atig/ifilter/retweet_time.rb +16 -0
  101. data/lib/atig/ifilter/sanitize.rb +18 -0
  102. data/lib/atig/ifilter/strip.rb +15 -0
  103. data/lib/atig/ifilter/utf7.rb +26 -0
  104. data/lib/atig/ifilter/xid.rb +36 -0
  105. data/lib/atig/levenshtein.rb +49 -0
  106. data/lib/atig/monkey.rb +4 -0
  107. data/lib/atig/oauth-patch.rb +40 -0
  108. data/lib/atig/oauth.rb +55 -0
  109. data/lib/atig/ofilter.rb +4 -0
  110. data/lib/atig/ofilter/escape_url.rb +102 -0
  111. data/lib/atig/ofilter/footer.rb +20 -0
  112. data/lib/atig/ofilter/geo.rb +17 -0
  113. data/lib/atig/ofilter/short_url.rb +47 -0
  114. data/lib/atig/option.rb +90 -0
  115. data/lib/atig/scheduler.rb +79 -0
  116. data/lib/atig/search.rb +22 -0
  117. data/lib/atig/search_twitter.rb +21 -0
  118. data/lib/atig/sized_hash.rb +33 -0
  119. data/lib/atig/stream.rb +66 -0
  120. data/lib/atig/twitter.rb +79 -0
  121. data/lib/atig/twitter_struct.rb +63 -0
  122. data/lib/atig/unu.rb +27 -0
  123. data/lib/atig/update_checker.rb +53 -0
  124. data/lib/atig/url_escape.rb +62 -0
  125. data/lib/atig/util.rb +16 -0
  126. data/lib/atig/version.rb +3 -0
  127. data/lib/memory_profiler.rb +77 -0
  128. data/spec/command/autofix_spec.rb +35 -0
  129. data/spec/command/destroy_spec.rb +98 -0
  130. data/spec/command/dm_spec.rb +28 -0
  131. data/spec/command/favorite_spec.rb +55 -0
  132. data/spec/command/limit_spec.rb +27 -0
  133. data/spec/command/location_spec.rb +25 -0
  134. data/spec/command/name_spec.rb +19 -0
  135. data/spec/command/option_spec.rb +133 -0
  136. data/spec/command/refresh_spec.rb +22 -0
  137. data/spec/command/reply_spec.rb +79 -0
  138. data/spec/command/retweet_spec.rb +66 -0
  139. data/spec/command/spam_spec.rb +27 -0
  140. data/spec/command/status_spec.rb +44 -0
  141. data/spec/command/thread_spec.rb +91 -0
  142. data/spec/command/time_spec.rb +52 -0
  143. data/spec/command/uptime_spec.rb +55 -0
  144. data/spec/command/user_info_spec.rb +42 -0
  145. data/spec/command/user_spec.rb +50 -0
  146. data/spec/command/version_spec.rb +67 -0
  147. data/spec/command/whois_spec.rb +78 -0
  148. data/spec/db/followings_spec.rb +100 -0
  149. data/spec/db/listenable_spec.rb +32 -0
  150. data/spec/db/lists_spec.rb +104 -0
  151. data/spec/db/roman_spec.rb +17 -0
  152. data/spec/db/sized_uniq_array_spec.rb +63 -0
  153. data/spec/db/statuses_spec.rb +180 -0
  154. data/spec/ifilter/expand_url_spec.rb +44 -0
  155. data/spec/ifilter/retweet_spec.rb +28 -0
  156. data/spec/ifilter/retweet_time_spec.rb +25 -0
  157. data/spec/ifilter/sanitize_spec.rb +25 -0
  158. data/spec/ifilter/sid_spec.rb +29 -0
  159. data/spec/ifilter/strip_spec.rb +23 -0
  160. data/spec/ifilter/tid_spec.rb +29 -0
  161. data/spec/ifilter/utf7_spec.rb +30 -0
  162. data/spec/levenshtein_spec.rb +24 -0
  163. data/spec/ofilter/escape_url_spec.rb +50 -0
  164. data/spec/ofilter/footer_spec.rb +32 -0
  165. data/spec/ofilter/geo_spec.rb +33 -0
  166. data/spec/ofilter/short_url_spec.rb +127 -0
  167. data/spec/option_spec.rb +91 -0
  168. data/spec/sized_hash_spec.rb +45 -0
  169. data/spec/spec_helper.rb +35 -0
  170. data/spec/update_checker_spec.rb +55 -0
  171. metadata +326 -0
@@ -0,0 +1,43 @@
1
+ 内部構造
2
+ ==============================
3
+
4
+
5
+ 全体図
6
+ ------------------------------
7
+
8
+ .. image:: _static/structure.png
9
+
10
+ Twitter
11
+ ------------------------------
12
+
13
+ - TwitterのAPIを叩くためのクラス
14
+
15
+ Scheduler
16
+ ------------------------------
17
+
18
+ - API呼び出し回数を最適化するためのクラス(予定)
19
+
20
+
21
+ Agent
22
+ ------------------------------
23
+
24
+ - Twitterから情報を取得し、DBに登録するクラス
25
+ - 例: メインタイムラインを取得し、DBに登録する
26
+
27
+ Db
28
+ ------------------------------
29
+
30
+ Gateway
31
+ ------------------------------
32
+
33
+ Channel
34
+ ------------------------------
35
+
36
+ IFilter
37
+ ------------------------------
38
+
39
+ OFilter
40
+ ------------------------------
41
+
42
+ Command
43
+ ------------------------------
data/docs/index.rst ADDED
@@ -0,0 +1,109 @@
1
+ .. atig documentation master file, created by
2
+ sphinx-quickstart on Mon Mar 15 15:36:01 2010.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ atig.rb : Another Twitter Irc Gateway
7
+ ==================================
8
+ atig.rbはTwitterとIRCを結ぶゲートウェイです。
9
+
10
+ スクリーンショット
11
+ ------------------------------
12
+
13
+ .. image:: _static/limechat_s.png
14
+
15
+ ダウンロード
16
+ ------------------------------
17
+
18
+ - 安定板: `atigrb-0.3.2.tgz`_. ( `過去のバージョン`_ )
19
+ - 開発版: `Github Repository`_.
20
+
21
+ .. _atigrb-0.3.2.tgz: http://github.com/mzp/atig/tarball/v0.3.2
22
+ .. _過去のバージョン: http://github.com/mzp/atig/downloads
23
+ .. _GitHub Repository: http://github.com/mzp/atig
24
+
25
+ 既知のバグ
26
+ ------------------------------
27
+
28
+ - sqlite3-ruby 1.3.0/1.3.1に対応していません。(`Issue 2`_ )
29
+
30
+ .. _Issue 2: http://github.com/mzp/atig/issues#issue/2
31
+
32
+ 特徴
33
+ ------------------------------
34
+
35
+ 必要なのはIRCクライアントだけ
36
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37
+
38
+ - IRCクライアントさえあれば、どこからでもTwitterできます。
39
+ - CUI中毒やEmacs中毒の方でも安心してお使いいただけます。
40
+
41
+ Listsにも対応してます
42
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
+
44
+ - Listsはチャンネルになります。
45
+
46
+ 大抵のOSで動きます
47
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
+
49
+ - Rubyで書いてあるので大抵のOSで動作します。
50
+
51
+ IRC用のソフトが流用できます。
52
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53
+
54
+ - 既存のIRC用のソフトを流用することができます。
55
+ - 例えば、IRCプロキシであるTiarraと連携させることで、24時間Twitterのログがとることが可能です。
56
+
57
+
58
+
59
+ .. 構造化された設計
60
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61
+
62
+ ~ tig.rbよりいいよ
63
+
64
+ その他のドキュメント
65
+ ------------------------------
66
+ .. toctree::
67
+ :maxdepth: 2
68
+
69
+ quickstart
70
+ feature
71
+ irc
72
+ commandline_options
73
+ options
74
+ commands
75
+ config
76
+ tig
77
+ changelog
78
+
79
+ バグ、疑問点、不満点を見つけたときは
80
+ ------------------------------------
81
+
82
+ こんな場合は、mzpまで気軽にご連絡ください。
83
+ できる範囲でサポートします。
84
+
85
+ - atig.rbの挙動がおかしい
86
+ - 設定の仕方がよく分からない
87
+ - 欲しい機能がなかった
88
+ - atig.rbに足りないクールな機能を実装したぜ
89
+
90
+ 連絡方法は以下のものがあります。それ以外の方法でもmzpまでに届けばかまいません。
91
+
92
+ - Githubの `Issues`_ に登録する。
93
+ - `@mzp`_ 宛につぶやく。
94
+ - `Blog`_ の適当なページにコメントをつける
95
+ - Githubでforkして、pull requestを送る
96
+
97
+ .. _Issues: http://github.com/mzp/atig/issues
98
+ .. _@mzp: http://twitter.com/mzp/
99
+ .. _Blog: http://d.hatena.ne.jp/mzp/
100
+
101
+
102
+ Indices and tables
103
+ ==================
104
+
105
+ * :ref:`genindex`
106
+ * :ref:`search`
107
+
108
+
109
+ .. |heart| replace:: ♥
data/docs/irc.rst ADDED
@@ -0,0 +1,31 @@
1
+ IRCコマンド
2
+ ==============================
3
+
4
+ nickなどの扱い
5
+ ------------------------------
6
+
7
+ - nick: OAuthのプロファイル名、ベーシック認証時のユーザ名
8
+ - real: クライアントオプション。詳細は :doc:`options` を参照してください。
9
+ - pass: ベーシック認証時のパスワード
10
+
11
+ IRCコマンドとの対応
12
+ ------------------------------
13
+
14
+ \/invite ``screen_name`` ``channel``
15
+ ``channel`` がメインチャンネル(通常は#twitter)の場合、ユーザ ``screen_name`` をフォローします。 同時にユーザ一覧の更新も行なうので、「follow ``screen_name`` 」と発言するよりも便利です。
16
+
17
+ ``channel`` がリストチャンネルの場合、ユーザ ``screen_name`` をリストに追加します。
18
+
19
+ \/kick ``screen_name`` ``channel``
20
+ ``channel`` がメインチャンネル(通常は#twitter)の場合、ユーザ ``screen_name`` をリムーブします。
21
+
22
+ ``channel`` がリストチャンネルの場合、ユーザ ``screen_name`` をリストから削除します。
23
+
24
+ \/whois ``screen_name``
25
+ ``screen_name`` の情報を表示します。ID番号、名前、自己紹介、現在地などを表示します。
26
+
27
+ \/topic ``topic``
28
+ :doc:`commands` の `autofix` へのエイリアスです。
29
+ ``topic`` が前回の発言と類似している場合、古い発言を上書きします。
30
+ \/who ``channel``
31
+ ``channel`` の参加者の情報を表示します。ID番号、名前などを表示します。
data/docs/options.rst ADDED
@@ -0,0 +1,75 @@
1
+ クライアントオプション
2
+ ==================================
3
+
4
+ 概要
5
+ ------------------------------
6
+ realnameのユーザ名の後ろにいろいろと書くことで、各オプションを有効にできます。
7
+
8
+ 例えば次のようにすると、tidオプションとonlyオプションが有効になります。 ::
9
+
10
+ twitter {
11
+ host: localhost
12
+ port: 19876
13
+ name: mzp tid only
14
+ }
15
+
16
+ :doc:`commands` のoptコマンドを用いると、実行中に変更できます。
17
+
18
+ 発言関係
19
+ ------------------------------
20
+ tid
21
+ 各発言にtidを表示します。tidは特定の発言へreplyする場合などに利用します。
22
+
23
+ :doc:`commands` も参照してください。
24
+ sid
25
+ 各発言にsidを表示します。sidはtidと同様に利用できます。
26
+
27
+ sidは ``ユーザ名``:\ ``id`` という書式にです。そのため、
28
+ ユーザ名の補完機能のあるクライアントではtidより入力が容易です。
29
+
30
+ フォロワー関係
31
+ ------------------------------
32
+ only
33
+ 指定すると片思い表示機能を有効にします。有効にしていると、自分が一方的
34
+ にフォローしている人に ``+o`` がつきます。たいていのクライアントだと
35
+ ``@`` がつきます。
36
+
37
+ 発言関連
38
+ ------------------------------
39
+ footer=\ ``footer``
40
+ 発言の末尾に、 ``footer`` を追加します。
41
+ ただし ``footer`` がfalseの場合は、追加しません。
42
+ old_style_reply
43
+ @nickで始まる発言が、@nick の最新の発言へのreplyとなるモードに切り替えます。
44
+
45
+ URL短縮関係
46
+ ------------------------------
47
+
48
+ 発言中の長いURLを自動で短縮します。どの短縮URLサービスを用いて短縮する
49
+ か、どの程度の長さのURLを短縮するか、などが設定できます。
50
+
51
+ bitlify=\ ``size``
52
+ ``size``\ 字以上のURLを http://bit.ly\ によって短縮します。
53
+ bitlify
54
+ |len|\ 字以上のURLを http://bit.ly\ によって短縮します。
55
+ bitlify=\ ``api_key``:\ ``api_key``:\ ``size``
56
+ ``size``\ 字以上のURLを http://bit.ly のAPIによって短縮します。
57
+ APIを利用して短縮すると、ユーザページに短縮したURLが記録されたりします。
58
+ 詳しくは、 http://bit.ly のSign up for bit.lyを読んでください。
59
+ bitlify=\ ``api_key``:\ ``api_key``
60
+ |len|\ 字以上のURLを http://bit.ly のAPIによって短縮します。
61
+ unuify= \ ``size``
62
+ ``size`` 字以上のURLを http://u.nu によって短縮します。
63
+ unuify
64
+ |len| 字以上のURLを http://u.nu によって短縮します。
65
+
66
+ .. |len| replace:: 20
67
+
68
+ システム関係
69
+ ------------------------------
70
+ api_base=\ ``api_base``
71
+ Twitterのエントリポイントを指定します。実行中の変更には対応していません。指定しない場合は、https://api.twitter.com/1/が用いられます。
72
+ .. stream_api_base=\ ``api_base``
73
+ Stream APIのエントリポイントを指定します。実行中の変更には対応していません。指定しない場合は、http://stream.twitter.com/1/'が用いられます。
74
+ stream_timeout=\ ``timeout``
75
+ Stream APIの接続は一定時間ごとに再接続を行ないます。その時間間隔を指定します。0を指定した場合は、再接続を行ないません。
@@ -0,0 +1,89 @@
1
+ クイックスタート
2
+ ================
3
+
4
+ 必要なソフトウェア
5
+ ------------------------------
6
+ 以下のものが必要です。
7
+
8
+ - Ruby 1.8/1.9
9
+ - Sqlite3
10
+ - 適当なIRCクライアント(例: `LimeChat`_ )
11
+
12
+ .. _LimeChat: http://limechat.net/
13
+
14
+ またRubyには次のライブラリがインストールされている必要があります。
15
+
16
+ - oauth
17
+ - sqlite3-ruby
18
+ - json(Ruby 1.8の場合, Ruby 1.9の場合は不要)
19
+ - rspec(単体テストを実行する場合, 開発者以外は不要)
20
+ - rake(単体テストを実行する場合, 開発者以外は不要)
21
+
22
+ インストール
23
+ ------------
24
+
25
+ リリース版
26
+ ~~~~~~~~~~
27
+ `GitHub`_ からダウンロードしてください。
28
+
29
+ .. _GitHub: http://github.com/mzp/atig/downloads
30
+
31
+
32
+ trunk版
33
+ ~~~~~~~~~~
34
+ githubからpullしてください。::
35
+
36
+ $ git pull http://mzp.github.com/atig
37
+
38
+ 使ってみる
39
+ ----------
40
+
41
+ 起動
42
+ ~~~~~~~~~
43
+ コマンドラインから起動します。::
44
+
45
+ $ cd atig
46
+ $ ruby atig.rb -d
47
+ I, [2010-04-05T07:22:07.861527 #62002] INFO -- : Host: localhost Port:16668
48
+
49
+ 接続
50
+ ~~~~~~~~~
51
+ IRCクライアントで、localhost:16668に接続します。
52
+
53
+ - nickname: Twitterのユーザ名
54
+ - login name: 使ってないので適当に
55
+ - real name: :doc:`options` 。tidがおすすめです。
56
+ - password: 空欄
57
+ - 詳しくは :doc:`irc` を参照してください。
58
+
59
+ .. image:: _static/irc_setting.png
60
+
61
+
62
+
63
+ OAuth認証
64
+ ~~~~~~~~~
65
+ 初回接続時のみ、OAuthで認証させる必要があります。
66
+ 接続時に#oauthにjoinされ、認証用のURLが表示されます。
67
+
68
+ .. image:: _static/oauth_channel.png
69
+
70
+ 表示されたURLにアクセスし、atig.rbに認証を与えます。
71
+
72
+ .. image:: _static/allow.png
73
+
74
+ 7桁の数字が表示されるので、それを#oauthに入力します。
75
+
76
+ .. image:: _static/verify.png
77
+
78
+ 発言してみる
79
+ ~~~~~~~~~~~~
80
+ - #twitterで発言すると、Twitterに投稿されます。
81
+ - :doc:`commands` を用いると、RTやreplyが行なえます。
82
+
83
+ さらに詳しい使い方
84
+ --------------------
85
+
86
+ - Tiarraと連携させると、発言のログを取ることができす。
87
+ - `God`_ などと連携させると、atig.rbを常駐(デーモン化)させることができます。
88
+
89
+ .. _God: http://god.rubyforge.org/
data/docs/resize.sh ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+ for i in $@; do
3
+ echo $i
4
+ mv $i $i.$$
5
+ convert -resize 300x300 $i.$$ $i
6
+ rm -f $i.$$
7
+ done
data/docs/tiarra.rst ADDED
@@ -0,0 +1,2 @@
1
+ Tiarraとの連携
2
+ ==============
data/docs/tig.rst ADDED
@@ -0,0 +1,21 @@
1
+ tig.rbとの違い
2
+ ==================================
3
+ atig.rbは `tig.rb`_ から派生したプロジェクトです。
4
+
5
+ .. _tig.rb: http://github.com/cho45/net-irc
6
+
7
+ そのため基本的な機能は同様ですが、いくつかの細かい点が異なります。
8
+
9
+ 機能の違い
10
+ ------------------------------
11
+
12
+ - 認証にxAuthではなくOAuthを使う。
13
+ - ツイートを指定するのにtidだけでなくsidが使える。 sidは :doc:`options` の `sid` を参照してください。
14
+ - 一部の :doc:`commands` の名前が異なる。例: tig.rbだと `list` 、atig.rbでは `user`\ 。
15
+ - 自分への言及を表示する `#mention` チャンネルや、リツイートを表示する `#retweet` チャンネルがある。 :doc:`config` の「チャンネルの変更」で変更できます。
16
+ - 自分への言及が `#twitter` チャンネルに表示されません。
17
+
18
+ その他の違い
19
+ ------------------------------
20
+ - クラス単位でファイルを分割しているます。たぶん、コードをいじりやすいはず。
21
+ - :doc:`commands` は本体のコードを触らずに拡張可能(たぶん)
data/lib/atig.rb ADDED
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+ $KCODE = "u" unless defined? ::Encoding # json use this
3
+
4
+ require 'rubygems'
5
+ require 'sqlite3'
6
+ require 'net/irc'
7
+ require 'oauth'
8
+ require 'json'
9
+
10
+ require 'atig/version'
11
+ require 'atig/monkey'
12
+ require 'atig/twitter'
13
+ require 'atig/scheduler'
14
+ require 'atig/agent'
15
+ require 'atig/ifilter'
16
+ require 'atig/ofilter'
17
+ require 'atig/command'
18
+ require 'atig/channel'
19
+ require 'atig/gateway'
data/lib/atig/agent.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'atig/agent/full_list'
2
+ require 'atig/agent/following'
3
+ require 'atig/agent/list_status'
4
+ require 'atig/agent/mention'
5
+ require 'atig/agent/dm'
6
+ require 'atig/agent/timeline'
7
+ require 'atig/agent/clenup'
8
+ require 'atig/agent/user_stream'
@@ -0,0 +1,38 @@
1
+ # -*- mode:ruby; coding:utf-8 -*-
2
+
3
+ require 'atig/util'
4
+
5
+ module Atig
6
+ module Agent
7
+ class Agent
8
+ include Util
9
+
10
+ def initialize(context, api, db)
11
+ @log = context.log
12
+ @api = api
13
+ @prev = nil
14
+
15
+ log :info, "initialize"
16
+
17
+ @api.repeat( interval ) do|t|
18
+ q = { :count => 200 }
19
+ if @prev
20
+ q.update :since_id => @prev
21
+ else
22
+ q.update :count => 20
23
+ end
24
+
25
+ sources = t.get( path, q)
26
+
27
+ sources.reverse_each do|s|
28
+ db.statuses.transaction do|d|
29
+ d.add :source => source, :status => s, :user => s.user
30
+ end
31
+ end
32
+
33
+ @prev = sources.first.id if sources && !sources.empty?
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end