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