fix bug with ONLY_LIST and IGNORE_LIST
[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 trends in United States while ``trend JP Tokyo`` will show trends in Tokyo/Japan.
116
117 - ``home`` will show your timeline. ``home 10`` will print exactly 10 tweets.
118
119 - ``notification`` will show your notification from the time you started RainbowStream.
120
121 - ``mentions`` will show mentions timeline. ``mentions 7`` will show 7 mention tweets.
122
123 - ``whois @dtvd88`` will show profile of @dtvd88.
124
125 - ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print exactly 9 tweets.
126
127 - ``s noah`` will search the word *‘noah’*. Result will come back with highlight. Search can be performed with or without hashtag.
128
129 **Tweet Commands**
130
131 - ``t the rainbow is god's promise to noah`` will tweet exactly *‘the rainbow is god’s promise to noah’*.
132
133 - ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of each tweet beside the time.
134
135 - ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added, the quote will be cancelled.
136
137 - ``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.
138
139 - ``conversation 12`` will show the chain of replies prior to the tweet with *[id=12]*.
140
141 - ``rep 12 Really`` will reply *‘Really’* to the tweet with *[id=12]*.
142
143 - ``fav 12`` will favorite the tweet with *[id=12]*.
144
145 - ``ufav 12`` will unfavorite tweet with *[id=12]*.
146
147 - ``share 12`` will copy link to tweet with *[id=12]* to your clipboard if you are on a Mac, or display it directly if you are on Linux.
148
149 - ``del 12`` will delete tweet with *[id=12]*.
150
151 - ``show image 12`` will show the image in tweet with *[id=12]* in your OS’s image viewer.
152
153 - ``open 12`` will open url in tweet with *[id=12]* in your OS’s default browser.
154
155 **Direct Messages Commands**
156
157 - ``inbox`` will show inbox messages. ``inbox 7`` will show newest 7 messages.
158
159 - ``thread 2`` will show full thread with [id=2].
160
161 - ``mes @dtvd88 hi`` will send a ``hi`` message to @dtvd88.
162
163 - ``trash 5`` will remove message with *[message\_id=5]*
164
165 **Friends and followers Commands**
166
167 - ``ls fl`` will list all your followers (people who are following you).
168
169 - ``ls fr`` will list all your friends (people who you are following).
170
171 - ``fl @dtvd88`` will follow @dtvd88.
172
173 - ``ufl @dtvd88`` will unfollow @dtvd88.
174
175 - ``mute @dtvd88`` will mute @dtvd88.
176
177 - ``unmute @dtvd88`` will unmute @dtvd88.
178
179 - ``muting`` will list muting users.
180
181 - ``block @dtvd88`` will block @dtvd88.
182
183 - ``unblock @dtvd88`` will unblock @dtvd88.
184
185 - ``report @dtvd88`` will report @dtvd88 as a spam account.
186
187 **Twitter list**
188
189 - ``list`` will show all lists you are belong to.
190
191 - ``list home`` will show timeline of list. You will be asked for list's name.
192
193 - ``list all_mem`` will show list's all members.
194
195 - ``list all_sub`` will show list's all subscribers.
196
197 - ``list add`` will add specific person to a list owned by you.
198
199 - ``list rm`` will remove specific person from a list owned by you.
200
201 - ``list sub`` will subscribe you to a specific list.
202
203 - ``list unsub`` will unsubscribe you from a specific list.
204
205 - ``list own`` will show all list owned by you.
206
207 - ``list new`` will create a new list.
208
209 - ``list update`` will update a list owned by you.
210
211 - ``list del`` will delete a list owned by you.
212
213 **Switching Stream Commands**
214
215 - ``switch public #AKB48`` will switch current stream to public stream and track keyword ``AKB48``
216
217 - ``switch public #AKB48 -f`` will do exactly as above but will ask you to provide 2 list:
218
219 ``Only nicks`` decide what nicks will be include only.
220
221 ``Ignore nicks``\ decide what nicks will be exclude.
222
223 - ``switch mine`` will switch current stream to personal stream. ``-f`` will work as well.
224
225 - ``switch list`` will switch to a Twitter list's stream. You will be asked for list name.
226
227 **Smart shell**
228
229 - Put anything to terminal, the app will try to eval and display result as a python interactive shell.
230
231 + ``142857*2`` or ``101**3`` like a calculator.
232 + Even ``cal`` will show the calendar for current month.
233 + Put ``order_rainbow('anything')`` or ``random_rainbow('wahahaha')`` will make more fun :)
234
235 **Config Management**
236
237 - ``theme`` will list available themes.
238
239 + ``theme monokai`` will apply *monokai* theme immediately.
240 + Changed theme will be remember as the next time's default theme.
241
242 - ``config`` will list all config key.
243
244 + ``config ASCII_ART`` will output current value of *ASCII_ART* config key.
245 + ``config TREND_MAX default`` will output default value of *TREND_MAX* config key.
246 + ``config CUSTOM_CONFIG drop`` will drop *CUSTOM_CONFIG* config key.
247 + ``config IMAGE_ON_TERM = true`` will set value of *IMAGE_ON_TERM* config key to *True*.
248
249 **Screening Commands**
250
251 - ``h`` will show the help.
252
253 - ``p`` will pause the stream.
254
255 - ``r`` will unpause the stream.
256
257 - ``c`` will clear the screen.
258
259 - ``q`` will quit.
260
261 Theme customization
262 ^^^^^^^^^^^^^^^^^^^
263
264 Rainbow Stream is shipped with some default themes.
265 You can either change theme by ``theme`` command or create your favorite one.
266
267 Theme’s screenshot:
268
269 - Monokai
270
271 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
272 :alt: monokai
273
274 - Solarized
275
276 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
277 :alt: solarized
278
279 - Tomorrow Night
280
281 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
282 :alt: tomorrownight
283
284 - Larapaste
285
286 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
287 :alt: larapaste
288
289 For detaile information, see `theme usage and customization`_.
290
291 Config explanation
292 ^^^^^^^^^^^^^^^^^^
293
294 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.
295
296 You also can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
297
298 - ``HEARTBEAT_TIMEOUT``: after this timeout (count by minutes), the stream will automatically hangup.
299
300 - ``IMAGE_ON_TERM``: display tweet's image directly on terminal.
301
302 - ``THEME``: current theme.
303
304 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
305
306 - ``HIDE_PROMPT``: hide prompt after receiving a tweet or not.
307
308 - ``PREFIX``: display string of prompt.
309
310 - ``SEARCH_TYPE``: search type in 'search' command ('mixed','recent','popular').
311
312 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
313
314 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
315
316 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
317
318 - ``CONVERSATION_MAX``: max tweet in a 'conversation' thread.
319
320 - ``QUOTE_FORMAT``: format when quote a tweet
321
322 + ``#comment``: Your own comment about the tweet
323 + ``#owner``: owner's username with '@'
324 + ``#tweet``: original tweet
325
326 - ``THREAD_META_LEFT``: format for meta information of messages from partner which is display in the left of screen.
327
328 - ``THREAD_META_RIGHT``: format for meta information of messages from you which is display in the right of screen.
329
330 - ``THREAD_MIN_WIDTH``: minimum width of a message frame.
331
332 - ``NOTIFY_FORMAT``: format of a notification.
333
334 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
335
336 - ``TREND_MAX``: default trends to display on 'trend' command.
337
338 - ``LIST_MAX``: default tweets to display on 'list home' command.
339
340 - ``ONLY_LIST``: filter list on 'switch' command. Eg: ["@fat","mdo"]
341
342 - ``IGNORE_LIST``: ignore list on 'switch' command. Eg: ["@fat"]
343
344 - ``HISTORY_FILENAME``: name of file which stores input history.
345
346 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
347
348 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
349
350 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
351
352 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
353
354 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
355
356 - ``FORMAT``: display format for tweet and message.
357
358 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
359 + ``DISPLAY``: decide how tweet will be printed.
360
361 + ``#name``: Twitter's name
362 + ``#nick``: Twitter's screen name
363 + ``#clock``: Datetime
364 + ``#rt_count``: retweets count
365 + ``#fa_count``: favorites count
366 + ``#id``: ID
367 + ``#fav``: favorited symbol
368 + ``#fav``: favorited symbol
369 + ``#tweet``: Tweet's content
370 + ``#sender_name``: Message's sender name
371 + ``#sender_nick``: Message's sender screen name
372 + ``#to``: '>>>' symbol
373 + ``#recipient_name``: Message's recipient name
374 + ``#recipient_nick``: Message's recipient screen name
375
376 In every format, you can use unicode characters like ``\u2665``.
377 Mac users also can use emoji characters as well (Ex: ``::zap::``).
378 See `Emoji cheatsheet`_ for details.
379
380 Development
381 -----------
382
383 If you want to build a runnable version yourself, follow these simple
384 steps
385
386 - `Create your own Twitter Application`_
387 - Get your Twitter application’s API key and secret
388 - Fork github's repo and clone in your system.
389 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
390 following content
391
392 .. code:: python
393
394 # Consumer information
395 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
396 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
397
398 - Use pip to install in local
399
400 .. code:: bash
401
402 # cd to directory which contains setup.py (cloned directory)
403 virtualenv venv # Python3 users: use -p to specify python3
404 source venv/bin/activate
405 pip install -e .
406 which rainbowstream # /this-directory/venv/bin/rainbowstream
407 # Remove ~/.rainbow_oauth if exists
408 rainbowstream # local version of rainbowstream
409
410 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
411 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
412 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
413 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
414 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
415 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
416 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#config-explanation
417 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
418 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
419 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
420 .. _default config: https://github.com/DTVD/rainbowstream/blob/master/rainbowstream/colorset/config
421 .. _Emoji cheatsheet: http://www.emoji-cheat-sheet.com/