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