545002b4aef76bf1255d13f48bf33d0dfa98e9fd
[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 Available commands are listed in `Read The Docs`_.
258
259 Theme customization
260 ^^^^^^^^^^^^^^^^^^^
261
262 Rainbow Stream is shipped with some default themes.
263 You can either change theme by ``theme`` command or create your favorite one.
264
265 Theme’s screenshot:
266
267 - Monokai
268
269 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
270 :alt: monokai
271
272 - Solarized
273
274 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
275 :alt: solarized
276
277 - Tomorrow Night
278
279 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
280 :alt: tomorrownight
281
282 - Larapaste
283
284 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
285 :alt: larapaste
286
287 For detaile information, see `theme usage and customization`_.
288
289 Config explanation
290 ^^^^^^^^^^^^^^^^^^
291
292 Rainbow Stream has a config file located at ``~/.rainbow_config.json``.
293 You can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
294
295 - ``THEME``: current theme.
296
297 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
298
299 - ``HIDE_PROMPT``: Hide prompt after receiving a tweet or not.
300
301 - ``SEARCH_MAX_RECORD``: max tweets can display on 'search' command.
302
303 - ``HOME_TWEET_NUM``: default tweets to display on 'home' command.
304
305 - ``RETWEETS_SHOW_NUM``: default tweets to display on 'allrt' command.
306
307 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
308
309 - ``TREND_MAX``: default trends to display on 'trend' command.
310
311 - ``LIST_MAX``: default tweets to display on 'list home' command.
312
313 - ``ONLY_LIST``: filter list on 'switch' command.
314
315 - ``IGNORE_LIST``: ignore list on 'switch' command.
316
317 - ``HISTORY_FILENAME``: name of file which stores input history.
318
319 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
320
321 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
322
323 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
324
325 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
326
327 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
328
329 - ``FORMAT``: display format for tweet and message.
330
331 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
332 + ``DISPLAY``: decide how tweet will be printed.
333
334 + ``#name``: Twitter's name
335 + ``#nick``: Twitter's screen name
336 + ``#clock``: Datetime
337 + ``#id``: ID
338 + ``#fav``: favorited symbol
339 + ``#tweet``: Tweet's content
340 + ``#sender_name``: Message's sender name
341 + ``#sender_nick``: Message's sender screen name
342 + ``#to``: '>>>' symbol
343 + ``#recipient_name``: Message's recipient name
344 + ``#recipient_nick``: Message's recipient screen name
345
346
347 Development
348 -----------
349
350 If you want to build a runnable version yourself, follow these simple
351 steps
352
353 - `Create your own Twitter Application`_
354 - Get your Twitter application’s API key and secret
355 - Fork github's repo and clone in your system.
356 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
357 following content
358
359 .. code:: python
360
361 # Consumer information
362 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
363 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
364
365 - Use pip to install in local
366
367 .. code:: bash
368
369 # cd to directory which contains setup.py (cloned directory)
370 virtualenv venv # Python3 users: use -p to specify python3
371 source venv/bin/activate
372 pip install -e .
373 which rainbowstream # /this-directory/venv/bin/rainbowstream
374 pip list | grep rainbowstream # rainbowstream (0.x.x, /this-directory)
375 # Remove ~/.rainbow_oauth if exists
376 rainbowstream # local version of rainbowstream
377
378 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
379 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
380 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
381 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
382 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
383 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
384 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#the-interactive-mode
385 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
386 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
387 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
388