Print twitter errors
[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 You might want to use rainbowstream via an **HTTP/SOCKS proxy**. Proxy settings are
101 provided as follows:
102
103 .. code:: bash
104
105 rainbowstream --proxy-host localhost --proxy-port 1337 --proxy-type HTTP
106 # or using the short form:
107 rainbowstream -ph localhost -pp 1337 -pt HTTP
108
109 Both ``--proxy-port`` and ``--proxy-type`` can be omitted. In this case default
110 proxy port ``8080`` and default proxy type ``SOCKS5`` are used.
111
112 The interactive mode
113 ^^^^^^^^^^^^^^^^^^^^
114
115 While your personal stream is continued, you are also ready to tweet,
116 search, reply, retweet… directly from console. Simply type “h” and hit
117 the Enter key to see the help.
118
119 Input is in interactive mode. It means that you can use arrow key to
120 move up and down history, tab-autocomplete or 2 tab to view available
121 suggestion. Input history from previous run is available as well.
122
123 Here is full list of supported command:
124
125 **Explore Commands**
126
127 - ``trend`` will show global trending topics. ``trend US`` will show trends in United States while ``trend JP Tokyo`` will show trends in Tokyo/Japan.
128
129 - ``home`` will show your timeline. ``home 10`` will print exactly 10 tweets.
130
131 - ``notification`` will show your notification from the time you started RainbowStream.
132
133 - ``mentions`` will show mentions timeline. ``mentions 7`` will show 7 mention tweets.
134
135 - ``whois @dtvd88`` will show profile of @dtvd88.
136
137 - ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print exactly 9 tweets.
138
139 - ``s noah`` will search the word *‘noah’*. Result will come back with highlight. Search can be performed with or without hashtag.
140
141 **Tweet Commands**
142
143 - ``t the rainbow is god's promise to noah`` will tweet exactly *‘the rainbow is god’s promise to noah’*.
144
145 - ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of each tweet beside the time.
146
147 - ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added, the quote will be cancelled.
148
149 - ``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.
150
151 - ``conversation 12`` will show the chain of replies prior to the tweet with *[id=12]*.
152
153 - ``rep 12 Really`` will reply *‘Really’* to the tweet with *[id=12]*.
154
155 - ``fav 12`` will favorite the tweet with *[id=12]*.
156
157 - ``ufav 12`` will unfavorite tweet with *[id=12]*.
158
159 - ``share 12`` will copy link to tweet with *[id=12]* to your clipboard if you are on a Mac, or display it directly if you are on Linux.
160
161 - ``del 12`` will delete tweet with *[id=12]*.
162
163 - ``show image 12`` will show the image in tweet with *[id=12]* in your OS’s image viewer.
164
165 - ``open 12`` will open url in tweet with *[id=12]* in your OS’s default browser.
166
167 **Direct Messages Commands**
168
169 - ``inbox`` will show inbox messages. ``inbox 7`` will show newest 7 messages.
170
171 - ``thread 2`` will show full thread with [id=2].
172
173 - ``mes @dtvd88 hi`` will send a ``hi`` message to @dtvd88.
174
175 - ``trash 5`` will remove message with *[message\_id=5]*
176
177 **Friends and followers Commands**
178
179 - ``ls fl`` will list all your followers (people who are following you).
180
181 - ``ls fr`` will list all your friends (people who you are following).
182
183 - ``fl @dtvd88`` will follow @dtvd88.
184
185 - ``ufl @dtvd88`` will unfollow @dtvd88.
186
187 - ``mute @dtvd88`` will mute @dtvd88.
188
189 - ``unmute @dtvd88`` will unmute @dtvd88.
190
191 - ``muting`` will list muting users.
192
193 - ``block @dtvd88`` will block @dtvd88.
194
195 - ``unblock @dtvd88`` will unblock @dtvd88.
196
197 - ``report @dtvd88`` will report @dtvd88 as a spam account.
198
199 **Twitter list**
200
201 - ``list`` will show all lists you are belong to.
202
203 - ``list home`` will show timeline of list. You will be asked for list's name.
204
205 - ``list all_mem`` will show list's all members.
206
207 - ``list all_sub`` will show list's all subscribers.
208
209 - ``list add`` will add specific person to a list owned by you.
210
211 - ``list rm`` will remove specific person from a list owned by you.
212
213 - ``list sub`` will subscribe you to a specific list.
214
215 - ``list unsub`` will unsubscribe you from a specific list.
216
217 - ``list own`` will show all list owned by you.
218
219 - ``list new`` will create a new list.
220
221 - ``list update`` will update a list owned by you.
222
223 - ``list del`` will delete a list owned by you.
224
225 **Switching Stream Commands**
226
227 - ``switch public #AKB48`` will switch current stream to public stream and track keyword ``AKB48``
228
229 - ``switch public #AKB48 -f`` will do exactly as above but will ask you 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 mine`` will switch current stream to personal stream. ``-f`` will work as well.
236
237 - ``switch list`` will switch to a Twitter list's stream. You will be asked for list name.
238
239 **Smart shell**
240
241 - Put anything to terminal, the app will try to eval and display result as a python interactive shell.
242
243 + ``142857*2`` or ``101**3`` like a calculator.
244 + Even ``cal`` will show the calendar for current month.
245 + Put ``order_rainbow('anything')`` or ``random_rainbow('wahahaha')`` will make more fun :)
246
247 **Config Management**
248
249 - ``theme`` will list available themes.
250
251 + ``theme monokai`` will apply *monokai* theme immediately.
252 + Changed theme will be remember as the next time's default theme.
253
254 - ``config`` will list all config key.
255
256 + ``config ASCII_ART`` will output current value of *ASCII_ART* config key.
257 + ``config TREND_MAX default`` will output default value of *TREND_MAX* config key.
258 + ``config CUSTOM_CONFIG drop`` will drop *CUSTOM_CONFIG* config key.
259 + ``config IMAGE_ON_TERM = true`` will set value of *IMAGE_ON_TERM* config key to *True*.
260
261 **Screening Commands**
262
263 - ``h`` will show the help.
264
265 - ``p`` will pause the stream.
266
267 - ``r`` will unpause the stream.
268
269 - ``c`` will clear the screen.
270
271 - ``q`` will quit.
272
273 Theme customization
274 ^^^^^^^^^^^^^^^^^^^
275
276 Rainbow Stream is shipped with some default themes.
277 You can either change theme by ``theme`` command or create your favorite one.
278
279 Theme’s screenshot:
280
281 - Monokai
282
283 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Monokai.png
284 :alt: monokai
285
286 - Solarized
287
288 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/Solarized.png
289 :alt: solarized
290
291 - Tomorrow Night
292
293 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/TomorrowNight.png
294 :alt: tomorrownight
295
296 - Larapaste
297
298 .. figure:: https://raw.githubusercontent.com/DTVD/rainbowstream/master/screenshot/themes/larapaste.png
299 :alt: larapaste
300
301 For detaile information, see `theme usage and customization`_.
302
303 Config explanation
304 ^^^^^^^^^^^^^^^^^^
305
306 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.
307
308 You also can view or set a new value of every config key by ``config`` command (See **Interactive mode** section above).
309
310 - ``HEARTBEAT_TIMEOUT``: after this timeout (count by minutes), the stream will automatically hangup.
311
312 - ``IMAGE_ON_TERM``: display tweet's image directly on terminal.
313
314 - ``THEME``: current theme.
315
316 - ``ASCII_ART``: diplay your twitter name by ascii art at stream begin or not.
317
318 - ``HIDE_PROMPT``: hide prompt after receiving a tweet or not.
319
320 - ``PREFIX``: display string of prompt.
321
322 - ``SEARCH_TYPE``: search type in 'search' command ('mixed','recent','popular').
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 - ``THREAD_META_LEFT``: format for meta information of messages from partner which is display in the left of screen.
339
340 - ``THREAD_META_RIGHT``: format for meta information of messages from you which is display in the right of screen.
341
342 - ``THREAD_MIN_WIDTH``: minimum width of a message frame.
343
344 - ``NOTIFY_FORMAT``: format of a notification.
345
346 - ``MESSAGES_DISPLAY``: default messages to display on 'inbox' or 'sent' command.
347
348 - ``TREND_MAX``: default trends to display on 'trend' command.
349
350 - ``LIST_MAX``: default tweets to display on 'list home' command.
351
352 - ``ONLY_LIST``: filter list on 'switch' command. Eg: ["@fat","mdo"]
353
354 - ``IGNORE_LIST``: ignore list on 'switch' command. Eg: ["@fat"]
355
356 - ``HISTORY_FILENAME``: name of file which stores input history.
357
358 - ``IMAGE_SHIFT``: left and right margin of image in '-iot'/'--image-on-term' mode.
359
360 - ``IMAGE_MAX_HEIGHT``: max height of image in '-iot'/'--image-on-term' mode.
361
362 - ``STREAM_DELAY``: seconds to wait before displaying another tweet, will drop all tweets while waiting. This value can be used to slow down the stream.
363
364 - ``USER_DOMAIN``: user URL of Twitter Streaming API.
365
366 - ``PUBLIC_DOMAIN``: public URL of Twitter Streaming API.
367
368 - ``SITE_DOMAIN``: site URL of Twitter Streaming API.
369
370 - ``FORMAT``: display format for tweet and message.
371
372 + ``CLOCK_FORMAT``: time format, see `Python's strftime format`_.
373 + ``DISPLAY``: decide how tweet will be printed.
374
375 + ``#name``: Twitter's name
376 + ``#nick``: Twitter's screen name
377 + ``#clock``: Datetime
378 + ``#rt_count``: retweets count
379 + ``#fa_count``: favorites count
380 + ``#id``: ID
381 + ``#fav``: favorited symbol
382 + ``#fav``: favorited symbol
383 + ``#tweet``: Tweet's content
384 + ``#sender_name``: Message's sender name
385 + ``#sender_nick``: Message's sender screen name
386 + ``#to``: '>>>' symbol
387 + ``#recipient_name``: Message's recipient name
388 + ``#recipient_nick``: Message's recipient screen name
389
390 In every format, you can use unicode characters like ``\u2665``.
391 Mac users also can use emoji characters as well (Ex: ``::zap::``).
392 See `Emoji cheatsheet`_ for details.
393
394 Development
395 -----------
396
397 If you want to build a runnable version yourself, follow these simple
398 steps
399
400 - `Create your own Twitter Application`_
401 - Get your Twitter application’s API key and secret
402 - Fork github's repo and clone in your system.
403 - Create a file ``consumer.py`` in ```rainbowstream```_ folder with
404 following content
405
406 .. code:: python
407
408 # Consumer information
409 CONSUMER_KEY = 'APIKey' # Your Twitter application's API key
410 CONSUMER_SECRET = 'APISecret' # Your Twitter application's API secret
411
412 - Use pip to install in local
413
414 .. code:: bash
415
416 # cd to directory which contains setup.py (cloned directory)
417 virtualenv venv # Python3 users: use -p to specify python3
418 source venv/bin/activate
419 pip install -e .
420 which rainbowstream # /this-directory/venv/bin/rainbowstream
421 # Remove ~/.rainbow_oauth if exists
422 rainbowstream # local version of rainbowstream
423
424 .. _Create your own Twitter Application: https://apps.twitter.com/app/new
425 .. _``rainbowstream``: https://github.com/DTVD/rainbowstream/tree/master/rainbowstream
426 .. _Python Twitter Tool: http://mike.verdone.ca/twitter/
427 .. _Twitter API: https://dev.twitter.com/docs/api/1.1
428 .. _theme usage and customization: https://github.com/DTVD/rainbowstream/blob/master/theme.md
429 .. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
430 .. _config management: http://rainbowstream.readthedocs.org/en/latest/#config-explanation
431 .. _Python's strftime format: https://docs.python.org/2/library/time.html#time.strftime
432 .. _clang unknown argument: http://kaspermunck.github.io/2014/03/fixing-clang-error/
433 .. _Issue #10: https://github.com/DTVD/rainbowstream/issues/10
434 .. _default config: https://github.com/DTVD/rainbowstream/blob/master/rainbowstream/colorset/config
435 .. _Emoji cheatsheet: http://www.emoji-cheat-sheet.com/