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.
- data/.gitignore +24 -0
- data/Gemfile +3 -0
- data/README.mkdn +52 -0
- data/Rakefile +15 -0
- data/atig.gemspec +25 -0
- data/bin/atig +74 -0
- data/docs/OMakefile +32 -0
- data/docs/OMakeroot +45 -0
- data/docs/_static/allow.png +0 -0
- data/docs/_static/emacs.png +0 -0
- data/docs/_static/irc_setting.png +0 -0
- data/docs/_static/irssi.png +0 -0
- data/docs/_static/limechat.png +0 -0
- data/docs/_static/limechat_s.png +0 -0
- data/docs/_static/oauth_channel.png +0 -0
- data/docs/_static/screenshot.png +0 -0
- data/docs/_static/structure.png +0 -0
- data/docs/_static/verify.png +0 -0
- data/docs/changelog.rst +96 -0
- data/docs/commandline_options.rst +21 -0
- data/docs/commands.rst +84 -0
- data/docs/conf.py +194 -0
- data/docs/config.rst +159 -0
- data/docs/feature.rst +41 -0
- data/docs/graphics.graffle +1995 -0
- data/docs/hacking_guide.rst +43 -0
- data/docs/index.rst +109 -0
- data/docs/irc.rst +31 -0
- data/docs/options.rst +75 -0
- data/docs/quickstart.rst +89 -0
- data/docs/resize.sh +7 -0
- data/docs/tiarra.rst +2 -0
- data/docs/tig.rst +21 -0
- data/lib/atig.rb +19 -0
- data/lib/atig/agent.rb +8 -0
- data/lib/atig/agent/agent.rb +38 -0
- data/lib/atig/agent/clenup.rb +23 -0
- data/lib/atig/agent/dm.rb +35 -0
- data/lib/atig/agent/following.rb +45 -0
- data/lib/atig/agent/full_list.rb +20 -0
- data/lib/atig/agent/list.rb +55 -0
- data/lib/atig/agent/list_status.rb +46 -0
- data/lib/atig/agent/mention.rb +13 -0
- data/lib/atig/agent/other_list.rb +18 -0
- data/lib/atig/agent/own_list.rb +18 -0
- data/lib/atig/agent/stream_follow.rb +38 -0
- data/lib/atig/agent/timeline.rb +13 -0
- data/lib/atig/agent/user_stream.rb +31 -0
- data/lib/atig/basic_twitter.rb +116 -0
- data/lib/atig/bitly.rb +52 -0
- data/lib/atig/channel.rb +5 -0
- data/lib/atig/channel/channel.rb +17 -0
- data/lib/atig/channel/dm.rb +14 -0
- data/lib/atig/channel/list.rb +76 -0
- data/lib/atig/channel/mention.rb +20 -0
- data/lib/atig/channel/retweet.rb +28 -0
- data/lib/atig/channel/timeline.rb +74 -0
- data/lib/atig/command.rb +21 -0
- data/lib/atig/command/autofix.rb +58 -0
- data/lib/atig/command/command.rb +24 -0
- data/lib/atig/command/command_helper.rb +95 -0
- data/lib/atig/command/destroy.rb +44 -0
- data/lib/atig/command/dm.rb +31 -0
- data/lib/atig/command/favorite.rb +27 -0
- data/lib/atig/command/info.rb +50 -0
- data/lib/atig/command/limit.rb +15 -0
- data/lib/atig/command/location.rb +23 -0
- data/lib/atig/command/name.rb +18 -0
- data/lib/atig/command/option.rb +37 -0
- data/lib/atig/command/refresh.rb +18 -0
- data/lib/atig/command/reply.rb +37 -0
- data/lib/atig/command/retweet.rb +63 -0
- data/lib/atig/command/search.rb +51 -0
- data/lib/atig/command/spam.rb +26 -0
- data/lib/atig/command/status.rb +41 -0
- data/lib/atig/command/thread.rb +44 -0
- data/lib/atig/command/time.rb +32 -0
- data/lib/atig/command/uptime.rb +32 -0
- data/lib/atig/command/user.rb +42 -0
- data/lib/atig/command/user_info.rb +27 -0
- data/lib/atig/command/version.rb +49 -0
- data/lib/atig/command/whois.rb +39 -0
- data/lib/atig/db/db.rb +60 -0
- data/lib/atig/db/followings.rb +131 -0
- data/lib/atig/db/listenable.rb +22 -0
- data/lib/atig/db/lists.rb +76 -0
- data/lib/atig/db/roman.rb +30 -0
- data/lib/atig/db/sized_uniq_array.rb +62 -0
- data/lib/atig/db/sql.rb +35 -0
- data/lib/atig/db/statuses.rb +147 -0
- data/lib/atig/db/transaction.rb +47 -0
- data/lib/atig/exception_util.rb +26 -0
- data/lib/atig/gateway.rb +62 -0
- data/lib/atig/gateway/channel.rb +99 -0
- data/lib/atig/gateway/session.rb +326 -0
- data/lib/atig/http.rb +95 -0
- data/lib/atig/ifilter.rb +7 -0
- data/lib/atig/ifilter/expand_url.rb +74 -0
- data/lib/atig/ifilter/retweet.rb +14 -0
- data/lib/atig/ifilter/retweet_time.rb +16 -0
- data/lib/atig/ifilter/sanitize.rb +18 -0
- data/lib/atig/ifilter/strip.rb +15 -0
- data/lib/atig/ifilter/utf7.rb +26 -0
- data/lib/atig/ifilter/xid.rb +36 -0
- data/lib/atig/levenshtein.rb +49 -0
- data/lib/atig/monkey.rb +4 -0
- data/lib/atig/oauth-patch.rb +40 -0
- data/lib/atig/oauth.rb +55 -0
- data/lib/atig/ofilter.rb +4 -0
- data/lib/atig/ofilter/escape_url.rb +102 -0
- data/lib/atig/ofilter/footer.rb +20 -0
- data/lib/atig/ofilter/geo.rb +17 -0
- data/lib/atig/ofilter/short_url.rb +47 -0
- data/lib/atig/option.rb +90 -0
- data/lib/atig/scheduler.rb +79 -0
- data/lib/atig/search.rb +22 -0
- data/lib/atig/search_twitter.rb +21 -0
- data/lib/atig/sized_hash.rb +33 -0
- data/lib/atig/stream.rb +66 -0
- data/lib/atig/twitter.rb +79 -0
- data/lib/atig/twitter_struct.rb +63 -0
- data/lib/atig/unu.rb +27 -0
- data/lib/atig/update_checker.rb +53 -0
- data/lib/atig/url_escape.rb +62 -0
- data/lib/atig/util.rb +16 -0
- data/lib/atig/version.rb +3 -0
- data/lib/memory_profiler.rb +77 -0
- data/spec/command/autofix_spec.rb +35 -0
- data/spec/command/destroy_spec.rb +98 -0
- data/spec/command/dm_spec.rb +28 -0
- data/spec/command/favorite_spec.rb +55 -0
- data/spec/command/limit_spec.rb +27 -0
- data/spec/command/location_spec.rb +25 -0
- data/spec/command/name_spec.rb +19 -0
- data/spec/command/option_spec.rb +133 -0
- data/spec/command/refresh_spec.rb +22 -0
- data/spec/command/reply_spec.rb +79 -0
- data/spec/command/retweet_spec.rb +66 -0
- data/spec/command/spam_spec.rb +27 -0
- data/spec/command/status_spec.rb +44 -0
- data/spec/command/thread_spec.rb +91 -0
- data/spec/command/time_spec.rb +52 -0
- data/spec/command/uptime_spec.rb +55 -0
- data/spec/command/user_info_spec.rb +42 -0
- data/spec/command/user_spec.rb +50 -0
- data/spec/command/version_spec.rb +67 -0
- data/spec/command/whois_spec.rb +78 -0
- data/spec/db/followings_spec.rb +100 -0
- data/spec/db/listenable_spec.rb +32 -0
- data/spec/db/lists_spec.rb +104 -0
- data/spec/db/roman_spec.rb +17 -0
- data/spec/db/sized_uniq_array_spec.rb +63 -0
- data/spec/db/statuses_spec.rb +180 -0
- data/spec/ifilter/expand_url_spec.rb +44 -0
- data/spec/ifilter/retweet_spec.rb +28 -0
- data/spec/ifilter/retweet_time_spec.rb +25 -0
- data/spec/ifilter/sanitize_spec.rb +25 -0
- data/spec/ifilter/sid_spec.rb +29 -0
- data/spec/ifilter/strip_spec.rb +23 -0
- data/spec/ifilter/tid_spec.rb +29 -0
- data/spec/ifilter/utf7_spec.rb +30 -0
- data/spec/levenshtein_spec.rb +24 -0
- data/spec/ofilter/escape_url_spec.rb +50 -0
- data/spec/ofilter/footer_spec.rb +32 -0
- data/spec/ofilter/geo_spec.rb +33 -0
- data/spec/ofilter/short_url_spec.rb +127 -0
- data/spec/option_spec.rb +91 -0
- data/spec/sized_hash_spec.rb +45 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/update_checker_spec.rb +55 -0
- 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を指定した場合は、再接続を行ないません。
|
data/docs/quickstart.rst
ADDED
|
@@ -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
data/docs/tiarra.rst
ADDED
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,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
|