atig 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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