56b97a5b6490983f3292acba2d7dd244fa60235d
[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 config file located at ``~/.rainbow_config.json``.
309 You can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
310
311 - ``HEARTBEAT_TIMEOUT``: after this timeout (count by minutes), the stream will automatically hangup.
312
313 - ``IMAGE_ON_TERM``: display tweet's image directly on terminal.
314
315 - ``THEME``: current theme.
316
317 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
318
319 - ``HIDE_PROMPT``: hide prompt after receiving a tweet or not.
320
321 - ``PREFIX``: display string of prompt.
322
323 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
324
325 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
326
327 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
328
329 - ``CONVERSATION_MAX``: max tweet in a 'conversation' thread.
330
331 - ``QUOTE_FORMAT``: format when quote a tweet
332
333 + ``#comment``: Your own comment about the tweet
334 + ``#owner``: owner's username with '@'
335 + ``#tweet``: original tweet
336
337 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
338
339 - ``TREND_MAX``: default trends to display on 'trend' command.
340
341 - ``LIST_MAX``: default tweets to display on 'list home' command.
342
343 - ``ONLY_LIST``: filter list on 'switch' command.
344
345 - ``IGNORE_LIST``: ignore list on 'switch' command.
346
347 - ``HISTORY_FILENAME``: name of file which stores input history.
348
349 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
350
351 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
352
353 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
354
355 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
356
357 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
358
359 - ``FORMAT``: display format for tweet and message.
360
361 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
362 + ``DISPLAY``: decide how tweet will be printed.
363
364 + ``#name``: Twitter's name
365 + ``#nick``: Twitter's screen name
366 + ``#clock``: Datetime
367 + ``#rt_count``: retweets count
368 + ``#fa_count``: favorites count
369 + ``#id``: ID
370 + ``#fav``: favorited symbol
371 + ``#fav``: favorited symbol
372 + ``#tweet``: Tweet's content
373 + ``#sender_name``: Message's sender name
374 + ``#sender_nick``: Message's sender screen name
375 + ``#to``: '>>>' symbol
376 + ``#recipient_name``: Message's recipient name
377 + ``#recipient_nick``: Message's recipient screen name
378
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 pip list | grep rainbowstream # rainbowstream (0.x.x, /this-directory)
408 # Remove ~/.rainbow_oauth if exists
409 rainbowstream # local version of rainbowstream
410
411 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
412 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
413 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
414 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
415 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
416 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
417 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#config-explanation
418 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
419 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
420 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
421