377d21f5df33840a364d2205329ff43eafe3f058
[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 the python-dev package 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
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 take a look at `Issue #10`_ and let me know if the workaround doesn't work for you.
55
56 Usage
57 -----
58
59 The stream
60 ^^^^^^^^^^
61
62 Just type
63
64 .. code:: bash
65
66 rainbowstream
67
68 and see your stream.
69
70 I shipped a feature which can display **tweet's images directly on terminal**.
71 You can try it with:
72
73 .. code:: bash
74
75 rainbowstream -iot # Or rainbowstream --image-on-term
76
77 You also can change the config key ``IMAGE_ON_TERM`` to ``True`` inside the app
78 to enable above feature (see `config management`_ section).
79
80 In the first time you will be asked for authorization of Rainbow Stream
81 app at Twitter. Just click the “Authorize access” button and paste PIN
82 number to the terminal, the rainbow will start.
83
84 The interactive mode
85 ^^^^^^^^^^^^^^^^^^^^
86
87 While your personal stream is continued, you are also ready to tweet,
88 search, reply, retweet… directly from console. Simply type “h” and hit
89 the Enter key to see the help.
90
91 Input is in interactive mode. It means that you can use arrow key to
92 move up and down history, tab-autocomplete or 2 tab to view available
93 suggestion. Input history from previous run is available as well.
94
95 Here is full list of supported command:
96
97 **Explore Commands**
98
99 - ``trend`` will show global trending topics. ``trend US`` will show
100 trends in United States while ``trend JP Tokyo`` will show trends in
101 Tokyo/Japan.
102
103 - ``home`` will show your timeline. ``home 10`` will print exactly 10
104 tweets.
105
106 - ``mentions`` will show mentions timeline. ``mentions 7`` will show 7
107 mention tweets.
108
109 - ``whois @dtvd88`` will show profile of @dtvd88.
110
111 - ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print
112 exactly 9 tweets.
113
114 - ``s noah`` will search the word *‘noah’*. Result will come back with
115 highlight. Search can be performed with or without hashtag.
116
117 **Tweet Commands**
118
119 - ``t the rainbow is god's promise to noah`` will tweet exactly *‘the
120 rainbow is god’s promise to noah’*.
121
122 - ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of
123 each tweet beside the time.
124
125 - ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added,
126 the quote will be cancelled.
127
128 - ``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.
129
130 - ``rep 12 Really`` will reply *‘Really’* to the tweet with *[id=12]*.
131
132 - ``fav 12`` will favorite the tweet with *[id=12]*.
133
134 - ``ufav 12`` will unfavorite tweet with *[id=12]*.
135
136 - ``del 12`` will delete tweet with *[id=12]*.
137
138 - ``show image 12`` will show the image in tweet with *[id=12]* in your
139 OS’s image viewer.
140
141 - ``open 12`` will open url in tweet with *[id=12]* in your
142 OS’s default browser.
143
144 **Direct Messages Commands**
145
146 - ``inbox`` will show inbox messages. ``inbox 7`` will show newest 7
147 messages.
148
149 - ``sent`` will show sent messages. ``sent 7`` will show newest 7
150 messages.
151
152 - ``mes @dtvd88 hi`` will send a ``hi`` message to @dtvd88.
153
154 - ``trash 5`` will remove message with *[message\_id=5]*
155
156 **Friends and followers Commands**
157
158 - ``ls fl`` will list all your followers (people who are following
159 you).
160
161 - ``ls fr`` will list all your friends (people who you are following).
162
163 - ``fl @dtvd88`` will follow @dtvd88.
164
165 - ``ufl @dtvd88`` will unfollow @dtvd88.
166
167 - ``mute @dtvd88`` will mute @dtvd88.
168
169 - ``unmute @dtvd88`` will unmute @dtvd88.
170
171 - ``muting`` will list muting users.
172
173 - ``block @dtvd88`` will block @dtvd88.
174
175 - ``unblock @dtvd88`` will unblock @dtvd88.
176
177 - ``report @dtvd88`` will report @dtvd88 as a spam account.
178
179 **Twitter list**
180
181 - ``list`` will show all lists you are belong to.
182
183 - ``list home`` will show timeline of list. You will be asked for list's name.
184
185 - ``list all_mem`` will show list's all members.
186
187 - ``list all_sub`` will show list's all subscribers.
188
189 - ``list add`` will add specific person to a list owned by you.
190
191 - ``list rm`` will remove specific person from a list owned by you.
192
193 - ``list sub`` will subscribe you to a specific list.
194
195 - ``list unsub`` will unsubscribe you from a specific list.
196
197 - ``list own`` will show all list owned by you.
198
199 - ``list new`` will create a new list.
200
201 - ``list update`` will update a list owned by you.
202
203 - ``list del`` will delete a list owned by you.
204
205 **Switching Stream Commands**
206
207 - ``switch public #AKB48`` will switch current stream to public stream
208 and track keyword ``AKB48``
209
210 - ``switch public #AKB48 -f`` will do exactly as above but will ask you
211 to provide 2 list:
212
213 ``Only nicks`` decide what nicks will be include only.
214
215 ``Ignore nicks``\ decide what nicks will be exclude.
216
217 - ``switch public #AKB48 -d`` will apply filter to *ONLY\_LIST* and
218 *IGNORE\_LIST*. You can setup 2 list above at ``config.py``
219
220 - ``switch mine`` will switch current stream to personal stream. ``-f``
221 and ``-d`` will work as well.
222
223 **Smart shell**
224
225 - Put anything to terminal, the app will try to eval and display result as a python interactive shell.
226
227 + ``142857*2`` or ``101**3`` like a calculator.
228 + Even ``cal`` will show the calendar for current month.
229 + Put ``order_rainbow('anything')`` or ``random_rainbow('wahahaha')`` will make more fun :)
230
231 **Config Management**
232
233 - ``theme`` will list available themes.
234
235 + ``theme monokai`` will apply *monokai* theme immediately.
236 + Changed theme will be remember as the next time's default theme.
237
238 - ``config`` will list all config key.
239
240 + ``config ASCII_ART`` will output current value of *ASCII_ART* config key.
241 + ``config TREND_MAX default`` will output default value of *TREND_MAX* config key.
242 + ``config CUSTOM_CONFIG drop`` will drop *CUSTOM_CONFIG* config key.
243 + ``config IMAGE_ON_TERM = true`` will set value of *IMAGE_ON_TERM* config key to *True*.
244
245 **Screening Commands**
246
247 - ``h`` will show the help.
248
249 - ``p`` will pause the stream.
250
251 - ``r`` will unpause the stream.
252
253 - ``c`` will clear the screen.
254
255 - ``q`` will quit.
256
257 Theme customization
258 ^^^^^^^^^^^^^^^^^^^
259
260 Rainbow Stream is shipped with some default themes.
261 You can either change theme by ``theme`` command or create your favorite one.
262
263 Theme’s screenshot:
264
265 - Monokai
266
267 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
268 :alt: monokai
269
270 - Solarized
271
272 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
273 :alt: solarized
274
275 - Tomorrow Night
276
277 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
278 :alt: tomorrownight
279
280 - Larapaste
281
282 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
283 :alt: larapaste
284
285 For detaile information, see `theme usage and customization`_.
286
287 Config explanation
288 ^^^^^^^^^^^^^^^^^^
289
290 Rainbow Stream has a config file located at ``~/.rainbow_config.json``.
291 You can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
292
293 - ``THEME``: current theme.
294
295 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
296
297 - ``HIDE_PROMPT``: Hide prompt after receiving a tweet or not.
298
299 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
300
301 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
302
303 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
304
305 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
306
307 - ``TREND_MAX``: default trends to display on 'trend' command.
308
309 - ``LIST_MAX``: default tweets to display on 'list home' command.
310
311 - ``ONLY_LIST``: filter list on 'switch' command.
312
313 - ``IGNORE_LIST``: ignore list on 'switch' command.
314
315 - ``HISTORY_FILENAME``: name of file which stores input history.
316
317 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
318
319 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
320
321 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
322
323 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
324
325 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
326
327 - ``FORMAT``: display format for tweet and message.
328
329 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
330 + ``DISPLAY``: decide how tweet will be printed.
331
332 + ``#name``: Twitter's name
333 + ``#nick``: Twitter's screen name
334 + ``#clock``: Datetime
335 + ``#rt_count``: retweets count
336 + ``#fa_count``: favorites count
337 + ``#id``: ID
338 + ``#fav``: favorited symbol
339 + ``#fav``: favorited symbol
340 + ``#tweet``: Tweet's content
341 + ``#sender_name``: Message's sender name
342 + ``#sender_nick``: Message's sender screen name
343 + ``#to``: '>>>' symbol
344 + ``#recipient_name``: Message's recipient name
345 + ``#recipient_nick``: Message's recipient screen name
346
347
348 Development
349 -----------
350
351 If you want to build a runnable version yourself, follow these simple
352 steps
353
354 - `Create your own Twitter Application`_
355 - Get your Twitter application’s API key and secret
356 - Fork github's repo and clone in your system.
357 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
358 following content
359
360 .. code:: python
361
362 # Consumer information
363 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
364 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
365
366 - Use pip to install in local
367
368 .. code:: bash
369
370 # cd to directory which contains setup.py (cloned directory)
371 virtualenv venv # Python3 users: use -p to specify python3
372 source venv/bin/activate
373 pip install -e .
374 which rainbowstream # /this-directory/venv/bin/rainbowstream
375 pip list | grep rainbowstream # rainbowstream (0.x.x, /this-directory)
376 # Remove ~/.rainbow_oauth if exists
377 rainbowstream # local version of rainbowstream
378
379 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
380 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
381 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
382 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
383 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
384 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
385 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#the-interactive-mode
386 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
387 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
388 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
389