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