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