ignore some FORMAT on config command and display direct link in share function inside...
[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 tweet with *[id=12]* to your clipboard.
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 public #AKB48 -d`` will apply filter to *ONLY\_LIST* and *IGNORE\_LIST*. You can setup 2 list above at ``config.py``
224
225 - ``switch mine`` will switch current stream to personal stream. ``-f`` and ``-d`` will work as well.
226
227 - ``switch list`` will switch to a Twitter list's stream. You will be asked for list name.
228
229 **Smart shell**
230
231 - Put anything to terminal, the app will try to eval and display result as a python interactive shell.
232
233 + ``142857*2`` or ``101**3`` like a calculator.
234 + Even ``cal`` will show the calendar for current month.
235 + Put ``order_rainbow('anything')`` or ``random_rainbow('wahahaha')`` will make more fun :)
236
237 **Config Management**
238
239 - ``theme`` will list available themes.
240
241 + ``theme monokai`` will apply *monokai* theme immediately.
242 + Changed theme will be remember as the next time's default theme.
243
244 - ``config`` will list all config key.
245
246 + ``config ASCII_ART`` will output current value of *ASCII_ART* config key.
247 + ``config TREND_MAX default`` will output default value of *TREND_MAX* config key.
248 + ``config CUSTOM_CONFIG drop`` will drop *CUSTOM_CONFIG* config key.
249 + ``config IMAGE_ON_TERM = true`` will set value of *IMAGE_ON_TERM* config key to *True*.
250
251 **Screening Commands**
252
253 - ``h`` will show the help.
254
255 - ``p`` will pause the stream.
256
257 - ``r`` will unpause the stream.
258
259 - ``c`` will clear the screen.
260
261 - ``q`` will quit.
262
263 Theme customization
264 ^^^^^^^^^^^^^^^^^^^
265
266 Rainbow Stream is shipped with some default themes.
267 You can either change theme by ``theme`` command or create your favorite one.
268
269 Theme’s screenshot:
270
271 - Monokai
272
273 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
274 :alt: monokai
275
276 - Solarized
277
278 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
279 :alt: solarized
280
281 - Tomorrow Night
282
283 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
284 :alt: tomorrownight
285
286 - Larapaste
287
288 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
289 :alt: larapaste
290
291 For detaile information, see `theme usage and customization`_.
292
293 Config explanation
294 ^^^^^^^^^^^^^^^^^^
295
296 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.
297
298 You also can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
299
300 - ``HEARTBEAT_TIMEOUT``: after this timeout (count by minutes), the stream will automatically hangup.
301
302 - ``IMAGE_ON_TERM``: display tweet's image directly on terminal.
303
304 - ``THEME``: current theme.
305
306 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
307
308 - ``HIDE_PROMPT``: hide prompt after receiving a tweet or not.
309
310 - ``PREFIX``: display string of prompt.
311
312 - ``SEARCH_TYPE``: search type in 'search' command ('mixed','recent','popular').
313
314 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
315
316 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
317
318 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
319
320 - ``CONVERSATION_MAX``: max tweet in a 'conversation' thread.
321
322 - ``QUOTE_FORMAT``: format when quote a tweet
323
324 + ``#comment``: Your own comment about the tweet
325 + ``#owner``: owner's username with '@'
326 + ``#tweet``: original tweet
327
328 - ``THREAD_META_LEFT``: format for meta information of messages from partner which is display in the left of screen.
329
330 - ``THREAD_META_RIGHT``: format for meta information of messages from you which is display in the right of screen.
331
332 - ``THREAD_MIN_WIDTH``: minimum width of a message frame.
333
334 - ``NOTIFY_FORMAT``: format of a notification.
335
336 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
337
338 - ``TREND_MAX``: default trends to display on 'trend' command.
339
340 - ``LIST_MAX``: default tweets to display on 'list home' command.
341
342 - ``ONLY_LIST``: filter list on 'switch' command.
343
344 - ``IGNORE_LIST``: ignore list on 'switch' command.
345
346 - ``HISTORY_FILENAME``: name of file which stores input history.
347
348 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
349
350 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
351
352 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
353
354 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
355
356 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
357
358 - ``FORMAT``: display format for tweet and message.
359
360 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
361 + ``DISPLAY``: decide how tweet will be printed.
362
363 + ``#name``: Twitter's name
364 + ``#nick``: Twitter's screen name
365 + ``#clock``: Datetime
366 + ``#rt_count``: retweets count
367 + ``#fa_count``: favorites count
368 + ``#id``: ID
369 + ``#fav``: favorited symbol
370 + ``#fav``: favorited symbol
371 + ``#tweet``: Tweet's content
372 + ``#sender_name``: Message's sender name
373 + ``#sender_nick``: Message's sender screen name
374 + ``#to``: '>>>' symbol
375 + ``#recipient_name``: Message's recipient name
376 + ``#recipient_nick``: Message's recipient screen name
377
378 In every format, you can use unicode characters like ``\u2665``.
379 Mac users also can use emoji characters as well (Ex: ``::zap::``).
380 See `Emoji cheatsheet`_ for details.
381
382 Development
383 -----------
384
385 If you want to build a runnable version yourself, follow these simple
386 steps
387
388 - `Create your own Twitter Application`_
389 - Get your Twitter application’s API key and secret
390 - Fork github's repo and clone in your system.
391 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
392 following content
393
394 .. code:: python
395
396 # Consumer information
397 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
398 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
399
400 - Use pip to install in local
401
402 .. code:: bash
403
404 # cd to directory which contains setup.py (cloned directory)
405 virtualenv venv # Python3 users: use -p to specify python3
406 source venv/bin/activate
407 pip install -e .
408 which rainbowstream # /this-directory/venv/bin/rainbowstream
409 # Remove ~/.rainbow_oauth if exists
410 rainbowstream # local version of rainbowstream
411
412 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
413 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
414 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
415 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
416 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
417 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
418 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#config-explanation
419 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
420 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
421 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
422 .. _default config: https://github.com/DTVD/rainbowstream/blob/master/rainbowstream/colorset/config
423 .. _Emoji cheatsheet: http://www.emoji-cheat-sheet.com/