add color for my nick and fix https open bug
[rainbowstream.git] / docs / index.rst
1 Rainbow Stream
2 --------------
3
4 .. image:: http://img.shields.io/pypi/dm/rainbowstream.svg?style=flat
5 :target: https://pypi.python.org/pypi/rainbowstream
6
7 .. image:: http://img.shields.io/pypi/v/rainbowstream.svg?style=flat
8 :target: https://pypi.python.org/pypi/rainbowstream
9
10 Terminal-based Twitter Client. Realtime tweetstream, compose, search ,
11 favorite … and much more fun directly from terminal.
12
13 This package is built on the top of `Python Twitter Tool`_ and `Twitter API`_,
14 can run on Python 2.7.x and 3.x .
15
16 Install
17 -------
18
19 The quick way
20 ^^^^^^^^^^^^^
21
22 You will need Python and pip (2.7.x or 3.x).
23
24 .. code:: bash
25
26 sudo pip install rainbowstream
27 # Python 3 users: sudo pip3 install rainbowstream
28
29 The recommended way
30 ^^^^^^^^^^^^^^^^^^^
31
32 Use `virtualenv`_
33
34 .. code:: bash
35
36 virtualenv venv
37 # Python 3 users : use -p to specify your Python 3 localtion as below
38 # virtualenv -p /usr/bin/python3 venv
39 source venv/bin/activate
40 pip install rainbowstream
41
42 Troubleshooting
43 ^^^^^^^^^^^^^^^
44
45 If you use Linux, you might need to install some packages if you haven't already.
46 For debian-based distros, these can be installed with
47
48 .. code:: bash
49
50 sudo apt-get install python-dev libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev
51
52 Besides, Mac OSX Maverick with Xcode 5.1 has a well-known `clang unknown argument`_ problem with
53 the ``Pillow`` package installation - a dependency of this app.
54 If you are in this case, I recommend taking a look at `Issue #10`_ and let me know if this workaround doesn't work for you.
55
56 .. code:: bash
57
58 export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future
59
60 If installation in *the quick way* doesn't work:
61
62 - ``sudo pip uninstall rainbowstream``
63 - use the *virtualenv way* above
64 - `create an issue`_ and provide:
65
66 + Your OS
67 + Your Python version
68
69 Usage
70 -----
71
72 The stream
73 ^^^^^^^^^^
74
75 Just type
76
77 .. code:: bash
78
79 rainbowstream
80
81 and see your stream.
82
83 I shipped a feature which can display **tweet's images directly on terminal**.
84 You can try it with:
85
86 .. code:: bash
87
88 rainbowstream -iot # Or rainbowstream --image-on-term
89
90 You also can change the config key ``IMAGE_ON_TERM`` to ``True`` inside the app
91 to enable above feature,
92 change ``IMAGE_SHIFT`` to set image's margin (relative to your terminal's width)
93 or ``IMAGE_MAX_HEIGHT`` to control max height of every image.
94 (see `config management`_ section).
95
96 In the first time you will be asked for authorization of Rainbow Stream
97 app at Twitter. Just click the “Authorize access” button and paste PIN
98 number to the terminal, the rainbow will start.
99
100 The interactive mode
101 ^^^^^^^^^^^^^^^^^^^^
102
103 While your personal stream is continued, you are also ready to tweet,
104 search, reply, retweet… directly from console. Simply type “h” and hit
105 the Enter key to see the help.
106
107 Input is in interactive mode. It means that you can use arrow key to
108 move up and down history, tab-autocomplete or 2 tab to view available
109 suggestion. Input history from previous run is available as well.
110
111 Here is full list of supported command:
112
113 **Explore Commands**
114
115 - ``trend`` will show global trending topics. ``trend US`` will show
116 trends in United States while ``trend JP Tokyo`` will show trends in
117 Tokyo/Japan.
118
119 - ``home`` will show your timeline. ``home 10`` will print exactly 10
120 tweets.
121
122 - ``mentions`` will show mentions timeline. ``mentions 7`` will show 7
123 mention tweets.
124
125 - ``whois @dtvd88`` will show profile of @dtvd88.
126
127 - ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print
128 exactly 9 tweets.
129
130 - ``s noah`` will search the word *‘noah’*. Result will come back with
131 highlight. Search can be performed with or without hashtag.
132
133 **Tweet Commands**
134
135 - ``t the rainbow is god's promise to noah`` will tweet exactly *‘the
136 rainbow is god’s promise to noah’*.
137
138 - ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of
139 each tweet beside the time.
140
141 - ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added,
142 the quote will be cancelled.
143
144 - ``allrt 12 20`` will list 20 newest retweets of the tweet with *[id=12]*. If the number of retweets is not specified, 5 newest retweets will be listed instead.
145
146 - ``conversation 12`` will show the chain of replies prior to the tweet with *[id=12]*.
147
148 - ``rep 12 Really`` will reply *‘Really’* to the tweet with *[id=12]*.
149
150 - ``fav 12`` will favorite the tweet with *[id=12]*.
151
152 - ``ufav 12`` will unfavorite tweet with *[id=12]*.
153
154 - ``del 12`` will delete tweet with *[id=12]*.
155
156 - ``show image 12`` will show the image in tweet with *[id=12]* in your
157 OS’s image viewer.
158
159 - ``open 12`` will open url in tweet with *[id=12]* in your
160 OS’s default browser.
161
162 **Direct Messages Commands**
163
164 - ``inbox`` will show inbox messages. ``inbox 7`` will show newest 7 messages.
165
166 - ``thread 2`` will show full thread with [id=2].
167
168 - ``mes @dtvd88 hi`` will send a ``hi`` message to @dtvd88.
169
170 - ``trash 5`` will remove message with *[message\_id=5]*
171
172 **Friends and followers Commands**
173
174 - ``ls fl`` will list all your followers (people who are following
175 you).
176
177 - ``ls fr`` will list all your friends (people who you are following).
178
179 - ``fl @dtvd88`` will follow @dtvd88.
180
181 - ``ufl @dtvd88`` will unfollow @dtvd88.
182
183 - ``mute @dtvd88`` will mute @dtvd88.
184
185 - ``unmute @dtvd88`` will unmute @dtvd88.
186
187 - ``muting`` will list muting users.
188
189 - ``block @dtvd88`` will block @dtvd88.
190
191 - ``unblock @dtvd88`` will unblock @dtvd88.
192
193 - ``report @dtvd88`` will report @dtvd88 as a spam account.
194
195 **Twitter list**
196
197 - ``list`` will show all lists you are belong to.
198
199 - ``list home`` will show timeline of list. You will be asked for list's name.
200
201 - ``list all_mem`` will show list's all members.
202
203 - ``list all_sub`` will show list's all subscribers.
204
205 - ``list add`` will add specific person to a list owned by you.
206
207 - ``list rm`` will remove specific person from a list owned by you.
208
209 - ``list sub`` will subscribe you to a specific list.
210
211 - ``list unsub`` will unsubscribe you from a specific list.
212
213 - ``list own`` will show all list owned by you.
214
215 - ``list new`` will create a new list.
216
217 - ``list update`` will update a list owned by you.
218
219 - ``list del`` will delete a list owned by you.
220
221 **Switching Stream Commands**
222
223 - ``switch public #AKB48`` will switch current stream to public stream
224 and track keyword ``AKB48``
225
226 - ``switch public #AKB48 -f`` will do exactly as above but will ask you
227 to provide 2 list:
228
229 ``Only nicks`` decide what nicks will be include only.
230
231 ``Ignore nicks``\ decide what nicks will be exclude.
232
233 - ``switch public #AKB48 -d`` will apply filter to *ONLY\_LIST* and
234 *IGNORE\_LIST*. You can setup 2 list above at ``config.py``
235
236 - ``switch mine`` will switch current stream to personal stream. ``-f``
237 and ``-d`` will work as well.
238
239 **Smart shell**
240
241 - Put anything to terminal, the app will try to eval and display result as a python interactive shell.
242
243 + ``142857*2`` or ``101**3`` like a calculator.
244 + Even ``cal`` will show the calendar for current month.
245 + Put ``order_rainbow('anything')`` or ``random_rainbow('wahahaha')`` will make more fun :)
246
247 **Config Management**
248
249 - ``theme`` will list available themes.
250
251 + ``theme monokai`` will apply *monokai* theme immediately.
252 + Changed theme will be remember as the next time's default theme.
253
254 - ``config`` will list all config key.
255
256 + ``config ASCII_ART`` will output current value of *ASCII_ART* config key.
257 + ``config TREND_MAX default`` will output default value of *TREND_MAX* config key.
258 + ``config CUSTOM_CONFIG drop`` will drop *CUSTOM_CONFIG* config key.
259 + ``config IMAGE_ON_TERM = true`` will set value of *IMAGE_ON_TERM* config key to *True*.
260
261 **Screening Commands**
262
263 - ``h`` will show the help.
264
265 - ``p`` will pause the stream.
266
267 - ``r`` will unpause the stream.
268
269 - ``c`` will clear the screen.
270
271 - ``q`` will quit.
272
273 Theme customization
274 ^^^^^^^^^^^^^^^^^^^
275
276 Rainbow Stream is shipped with some default themes.
277 You can either change theme by ``theme`` command or create your favorite one.
278
279 Theme’s screenshot:
280
281 - Monokai
282
283 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
284 :alt: monokai
285
286 - Solarized
287
288 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
289 :alt: solarized
290
291 - Tomorrow Night
292
293 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
294 :alt: tomorrownight
295
296 - Larapaste
297
298 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
299 :alt: larapaste
300
301 For detaile information, see `theme usage and customization`_.
302
303 Config explanation
304 ^^^^^^^^^^^^^^^^^^
305
306 Rainbow Stream has a custom config file located at ``~/.rainbow_config.json`` which will be loaded **after** its `default config`_. You are free to change anything on your custom config, but if you messed up with JSON format, the app would still works fine. Simply overwrite your custom config withe the `default config`_ to solve format problems.
307
308 You also can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
309
310 - ``HEARTBEAT_TIMEOUT``: after this timeout (count by minutes), the stream will automatically hangup.
311
312 - ``IMAGE_ON_TERM``: display tweet's image directly on terminal.
313
314 - ``THEME``: current theme.
315
316 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
317
318 - ``HIDE_PROMPT``: hide prompt after receiving a tweet or not.
319
320 - ``PREFIX``: display string of prompt.
321
322 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
323
324 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
325
326 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
327
328 - ``CONVERSATION_MAX``: max tweet in a 'conversation' thread.
329
330 - ``QUOTE_FORMAT``: format when quote a tweet
331
332 + ``#comment``: Your own comment about the tweet
333 + ``#owner``: owner's username with '@'
334 + ``#tweet``: original tweet
335
336 - ``THREAD_META_LEFT``: format for meta information of messages from partner which is display in the left of screen.
337
338 - ``THREAD_META_RIGHT``: format for meta information of messages from you which is display in the right of screen.
339
340 - ``THREAD_MIN_WIDTH``: minimum width of a message frame.
341
342 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
343
344 - ``TREND_MAX``: default trends to display on 'trend' command.
345
346 - ``LIST_MAX``: default tweets to display on 'list home' command.
347
348 - ``ONLY_LIST``: filter list on 'switch' command.
349
350 - ``IGNORE_LIST``: ignore list on 'switch' command.
351
352 - ``HISTORY_FILENAME``: name of file which stores input history.
353
354 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
355
356 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
357
358 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
359
360 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
361
362 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
363
364 - ``FORMAT``: display format for tweet and message.
365
366 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
367 + ``DISPLAY``: decide how tweet will be printed.
368
369 + ``#name``: Twitter's name
370 + ``#nick``: Twitter's screen name
371 + ``#clock``: Datetime
372 + ``#rt_count``: retweets count
373 + ``#fa_count``: favorites count
374 + ``#id``: ID
375 + ``#fav``: favorited symbol
376 + ``#fav``: favorited symbol
377 + ``#tweet``: Tweet's content
378 + ``#sender_name``: Message's sender name
379 + ``#sender_nick``: Message's sender screen name
380 + ``#to``: '>>>' symbol
381 + ``#recipient_name``: Message's recipient name
382 + ``#recipient_nick``: Message's recipient screen name
383
384
385 Development
386 -----------
387
388 If you want to build a runnable version yourself, follow these simple
389 steps
390
391 - `Create your own Twitter Application`_
392 - Get your Twitter application’s API key and secret
393 - Fork github's repo and clone in your system.
394 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
395 following content
396
397 .. code:: python
398
399 # Consumer information
400 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
401 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
402
403 - Use pip to install in local
404
405 .. code:: bash
406
407 # cd to directory which contains setup.py (cloned directory)
408 virtualenv venv # Python3 users: use -p to specify python3
409 source venv/bin/activate
410 pip install -e .
411 which rainbowstream # /this-directory/venv/bin/rainbowstream
412 pip list | grep rainbowstream # rainbowstream (0.x.x, /this-directory)
413 # Remove ~/.rainbow_oauth if exists
414 rainbowstream # local version of rainbowstream
415
416 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
417 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
418 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
419 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
420 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
421 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
422 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#config-explanation
423 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
424 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
425 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
426 .. _default config: https://github.com/DTVD/rainbowstream/blob/master/rainbowstream/colorset/config
427