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