atig 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|