Command-line tool that instantly fetches Stack Overflow results when an exception is thrown

Overview

rebound

Rebound is a command-line tool that instantly fetches Stack Overflow results when an exception is thrown. Just use the rebound command to execute your file.

Placeholder Demo

Featured in: 50 Most Popular Python Projects in 2018, the top of r/Python, awesome-cli-apps, awesome-shell, terminals-are-sexy, and awesome-mac.

Installation

Requires Python 3.0 or higher.

Rebound works on MacOS, Linux, and Windows (if you use Cygwin). You can install it with pip:

$ pip install rebound-cli

or apt-get if you're using Linux:

$ sudo apt-get install rebound-cli

Usage

Running a file with rebound is just as easy as running it normally:

$ rebound [file_path]

This will execute the file, pull the error message, and let you browse related Stack Overflow questions and answers without leaving the terminal.

Supported file types: Python, Node.js, Ruby, Golang, and Java.

Contributing

To make a contribution, fork the repo, make your changes and then submit a pull request. Please try to adhere to the existing style. If you've discovered a bug or have a feature request, create an issue.

Pending Features:

  • Improved text formatting (i.e. for duplicate questions, markdown, blockquotes, clickable links, etc.)
  • Improved search result accuracy by extracting potential search terms from the stack trace
  • Support for more languages

How it Works

Rebound is written in Python and built on Urwid. Beautiful Soup is used to scrape Stack Overflow content and subprocess for catching compiler errors.

Acknowledgements

Special thanks to @rndusr for helping with the scrollbar.

Issues
  • IndexError: List index out of range

    IndexError: List index out of range

    On pressing ENTER key after selecting any of the answers it shows 'IndexError: list index out of range' Screenshot from 2019-08-27 19-55-08

    opened by agcy1210 13
  • Add random UA

    Add random UA

    Two ways to generate random UA, use 'fake-useragent' module, which is reound_FAKE_UA.py or use a list of UA, which is user_agent and random choice in rebound.py

    opened by leon332157 6
  • get_search_results(soup) Index Error

    get_search_results(soup) Index Error

    I have altered your code a bit for my own use, but this function is still from your source code and I don't think I caused the error. It worked two weeks ago, and I tried running it yesterday without any changes in the past two weeks and it's broken now. Did stack overflow change something breaking the search?

    Using search_stackoverflow(query) with a query of "python nltk tokenize" I get an error inside the function, get_search_results(soup),

    Here's an excerpt of the traceback,

     in get_search_results
    title_container = result.find_all("div", class_="result-link")[0].find_all("span")[0].find_all("a")[0]                                                                                                                                   
    IndexError: list index out of range         
    

    There are values in results, and result.find_all("div", class_="result-link")[0], but result.find_all("div", class_="result-link")[0].find_all("span") returns none so index zero doesn't exist hence the error.

    Did something change, if so what needs to be changed to get it working again?

    opened by KeithTheEE 5
  • Won't run on Windows

    Won't run on Windows

    Hi there, I am very interested in your work and tried it on my Windows 10 box. Unfortunatly there seems to be some issues related to the close_fds working on Windows?

    [email protected] MINGW64 /d/dev_workspace/Learning OpenCV/OpenCV Python Bindings/features
    $ rebound lab_optical_flow.py
    Traceback (most recent call last):
      File "d:\python\python36-32\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "d:\python\python36-32\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "D:\Python\Python36-32\Scripts\rebound.exe\__main__.py", line 9, in <module>
      File "d:\python\python36-32\lib\site-packages\rebound\rebound.py", line 766, in main
        output, error = execute([language] + sys.argv[1:]) # Compiles the file and pipes stdout
      File "d:\python\python36-32\lib\site-packages\rebound\rebound.py", line 124, in execute
        bufsize=1
      File "d:\python\python36-32\lib\subprocess.py", line 624, in __init__
        "close_fds is not supported on Windows platforms"
    ValueError: close_fds is not supported on Windows platforms if you redirect stdin/stdout/stderr
    

    Also tried with powershell and cmd, both without any luck :-(

    Trying to change the argument from True to False :

    def execute(command):
        """Executes a given command and clones stdout/err to both variables and the
        terminal (in real-time)."""
        process = Popen(
            command,
            cwd=None,
            shell=False,
            close_fds=False,  # does not work
            stdout=PIPE,
            stderr=PIPE,
            bufsize=1
        )
    

    won't solve the problem. Something else will crash it:

     rebound lab_optical_flow.py
    (1, 44, 3)
    i is  4
    (1, 48, 3)
    Traceback (most recent call last):
      File "lab_optical_flow.py", line 64, in <module>
        raise UserWarning("You stop here and check what\'s wrong!")
    UserWarning: You stop here and check what's wrong!
    
    Display Stack Overflow results? [Y/n] y
    Traceback (most recent call last):
      File "d:\python\python36-32\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "d:\python\python36-32\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "D:\Python\Python36-32\Scripts\rebound.exe\__main__.py", line 9, in <module>
      File "d:\python\python36-32\lib\site-packages\rebound\rebound.py", line 780, in main
        App(search_results) # Opens interface
      File "d:\python\python36-32\lib\site-packages\rebound\rebound.py", line 654, in __init__
        self.main_loop = urwid.MainLoop(layout, self.palette, unhandled_input=self._handle_input)
      File "d:\python\python36-32\lib\site-packages\urwid\main_loop.py", line 114, in __init__
        screen = raw_display.Screen()
      File "d:\python\python36-32\lib\site-packages\urwid\raw_display.py", line 92, in __init__
        fcntl.fcntl(self._resize_pipe_rd, fcntl.F_SETFL, os.O_NONBLOCK)
    NameError: name 'fcntl' is not defined
    
    

    I am not familar with close_fds as of writing. And to make it worse I happen to find that urwid is not supported on windows (see here, here and here)

    Maybe you may declare in the README.md that the fancy program currently not supported on Windows?

    opened by y0umu 5
  • IndexError: list index out of range

    IndexError: list index out of range

    File "/home/adam/.local/bin/rebound", line 11, in sys.exit(main()) File "/home/adam/.local/lib/python3.6/site-packages/rebound/rebound.py", line 843, in main search_results, captcha = search_stackoverflow(query) File "/home/adam/.local/lib/python3.6/site-packages/rebound/rebound.py", line 298, in search_stackoverflow return (get_search_results(soup), False) File "/home/adam/.local/lib/python3.6/site-packages/rebound/rebound.py", line 256, in get_search_results title_container = result.find_all("div", class_="result-link")[0].find_all("span")[0].find_all("a")[0]

    opened by jarzab3 4
  • Opening results in browser doesn't support google chrome

    Opening results in browser doesn't support google chrome

    On pressing "B" to browse the results while google chrome is the default browser, it just launch chrome with empty tab.

    opened by MahmoudRizk 4
  • Change how the `rebound` command is used

    Change how the `rebound` command is used

    Instead of executing files with the rebound command, I think it would be more user-friendly to execute the file normally, get a compiler error, and then type rebound to fetch that error and display the CLI. For example, the Python workflow would be:

    1. Run $ python test.py
    2. Program fails and returns an error message
    3. User runs $ rebound to prompt the CLI
    high-priority feature-request 
    opened by shobrook 4
  • rebound command not available from the command line

    rebound command not available from the command line

    I tried installing rebound by following the instructions in the readme as well as variations I compiled from looking online. After all of these I was unable to call "rebound" from the command line on a linux machine.

    I tried the following installation commands: pip install rebound-cli pip3 install rebound-cli (with and without --user) sudo apt-get install rebound-cli git clone repo followed by python3 setup.py install (with and without --user) I verified that pip and urwid are up to date.

    After all of this I get the 'rebound: Command not found.' error no matter where in the directory i try to run it from

    opened by mjfuuu 3
  • getting  following errors after pressing enter

    getting following errors after pressing enter

    ``Display Stack Overflow results? [Y/n]

    Traceback (most recent call last): File "/home/sagar/.local/bin/rebound", line 11, in sys.exit(main()) File "/home/sagar/.local/lib/python3.7/site-packages/rebound/rebound.py", line 871, in main App(search_results) # Opens interface File "/home/sagar/.local/lib/python3.7/site-packages/rebound/rebound.py", line 733, in init self.main_loop.run() File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 286, in run self._run() File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 384, in _run self.event_loop.run() File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 788, in run self._loop() File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 825, in _loop self._watch_filesfd File "/home/sagar/.local/lib/python3.7/site-packages/urwid/raw_display.py", line 404, in event_loop, callback, self.get_available_raw_input()) File "/home/sagar/.local/lib/python3.7/site-packages/urwid/raw_display.py", line 502, in parse_input callback(processed, processed_codes) File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 411, in _update self.process_input(keys) File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 517, in process_input something_handled |= bool(self.unhandled_input(k)) File "/home/sagar/.local/lib/python3.7/site-packages/urwid/main_loop.py", line 563, in unhandled_input return self._unhandled_input(input) File "/home/sagar/.local/lib/python3.7/site-packages/rebound/rebound.py", line 742, in handle_input question_title, question_desc, question_stats, answers = get_question_and_answers(url) File "/home/sagar/.local/lib/python3.7/site-packages/rebound/rebound.py", line 307, in get_question_and_answers question_stats = soup.find_all("span", class="vote-count-post")[0].get_text() # Vote count IndexError: list index out of range

    opened by Sagar19RaoRane 3
  • I cannot use

    I cannot use "rebound.exe"

    OS: Windows 10 Python: 3.6.5

    As the error in the picture shows, why is this?

    image

    opened by reaCodes 3
  • LICENSE file missing from root directory

    LICENSE file missing from root directory

    I see this is MIT licensed. Adding a LICENSE file to the root directory would make this very obvious for people new to the project and show up in the About header on the first page view of the project.

    Would you like me to make a PR to move the file?

    mv docs/LICENSE LICENSE

    opened by TechnologyClassroom 0
  • Semi-fix issue #84

    Semi-fix issue #84

    Changed the user agent to be the same when searching for results, instead of a different UA for every result. This fixes captcha triggering right at the start, but running the program 2-3 times in a row will trigger it again. That's why it is a semi-fix, further analysis is required, but for now, this is a step to the right direction.

    Also, I cleaned up the code and fixed some Anti-Pattern issues.

    I am also trying to use Googlebot's UA, because sometimes it fixes the issue. For now, this should do it.

    Thank you :)

    opened by cristicretu 2
  • Fixed block and manual captcha whitelist

    Fixed block and manual captcha whitelist

    We can't randomize user-agents at every call that's being made. Stackoverflow considers it bot behaviour.

    opened by hotheadhacker 3
  • Windows 10 -Cygwin Error

    Windows 10 -Cygwin Error "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position "

    Hi,

    First of all, this is a really cool project!

    I just started using rebound-cli, I'm on Windows and I've installed cygwin, however when I run a script i get the following error:

    
    c:\users\fredb\appdata\local\programs\python\python38\lib\subprocess.py:844: RuntimeWarning: line buffering (buffering=1) isn't suppor
    ted in binary mode, the default buffer size will be used
      self.stdout = io.open(c2pread, 'rb', bufsize)
    c:\users\fredb\appdata\local\programs\python\python38\lib\subprocess.py:849: RuntimeWarning: line buffering (buffering=1) isn't suppor
    ted in binary mode, the default buffer size will be used
      self.stderr = io.open(errread, 'rb', bufsize)
    Exception in thread Thread-2:
    Traceback (most recent call last):
      File "c:\users\fredb\appdata\local\programs\python\python38\lib\threading.py", line 932, in _bootstrap_inner
        self.run()
      File "c:\users\fredb\appdata\local\programs\python\python38\lib\threading.py", line 870, in run
        self._target(*self._args, **self._kwargs)
      File "c:\users\fredb\appdata\local\programs\python\python38\lib\site-packages\rebound\rebound.py", line 147, in read
        func(line.decode("utf-8"))
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 13: invalid continuation byte
    
    

    The script is just a simple example:

    x = 5
    y = 10
    x += y
    print(x)
    

    I really don't understand what I'm doing wrong

    windows 
    opened by Koubae 0
  • Sorry, Stack Overflow blocked our request. Try again in a minute.

    Sorry, Stack Overflow blocked our request. Try again in a minute.

    I am a new user of rebound, I have just installed it today ( via pip ).

    I am getting this every time:

    Sorry, Stack Overflow blocked our request. Try again in a minute.
    

    I am running on Ubuntu 20.04, and I have made sure that I have proper internet connectivity.

    bug high-priority 
    opened by aahnik 11
  • New Features for Rebound

    New Features for Rebound

    Hi!

    After I look through the code, I have a few ideas which can be put into the rebound project. This include:

    • Replacing in view answer function by using lynx ( Text-based browser GUI)
    • Putting create barcode function which able the user to share the solution link to other user
    • Save the solution link in the history or record, so the user can check again the previous selected link

    Please let me know what you guys think.

    Thanks!

    opened by gilbertch09 1
  • Refactor Codebase

    Refactor Codebase

    First PR for refactoring codebase. Separating globals into modules.

    opened by Survivor75 0
  • Fix warnings in rebound.py

    Fix warnings in rebound.py

    Have resolved few warnings for the unused variables.

    opened by umangnangal 1
  • Code should be distributed across files

    Code should be distributed across files

    Code modularity is needed. Proper classes and functions should be distributed across multiple files and the project should achieve 'Separation of Concern' design principle.

    opened by EmadBinAbid 0
Releases(v2.0.0)
Owner
Jonathan Shobrook
Jonathan Shobrook
A cat(1) clone with wings.

A cat(1) clone with syntax highlighting and Git integration. Key Features • How To Use • Installation • Customization • Project goals, alternatives [中

David Peter 29.5k Sep 24, 2021
Manage complex tmux sessions easily

Tmuxinator Create and manage tmux sessions easily. Installation RubyGems gem install tmuxinator Homebrew brew install tmuxinator tmuxinator aims to

tmuxinator 10.9k Sep 24, 2021
 OS X command line tools for developers – The ultimate tool to manage your Mac. It provides a huge set of command line commands that automatize the usage of your OS X system.

Mac CLI  macOS command line tools for developers ⭐ Now with modularity and plugins! You can check the plugins folder: /mac-cli/plugins Contributions

Gabriel Guarino 8.1k Sep 21, 2021
cliclick is a macOS CLI tool for emulating mouse and keyboard events

cliclick (short for “Command Line Interface Click”) is a tool for executing mouse- and keyboard-related actions from the shell/Terminal. It is written in Objective-C and runs on OS X 10.15 or later.

Carsten Blüm 1.1k Sep 17, 2021
Postgres CLI with autocompletion and syntax highlighting

A REPL for Postgres This is a postgres client that does auto-completion and syntax highlighting. Home Page: http://pgcli.com MySQL Equivalent: http://

dbcli 9.8k Sep 23, 2021
Find files with SQL-like queries

fselect Find files with SQL-like queries Why use fselect? While it doesn't tend to fully replace traditional find and ls, fselect has these nice featu

null 3k Sep 15, 2021
A code-searching tool similar to ack, but faster.

The Silver Searcher A code searching tool similar to ack, with a focus on speed. Do you know C? Want to improve ag? I invite you to pair with me. What

Geoff Greer 22.6k Sep 23, 2021
A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

mycli A command line client for MySQL that can do auto-completion and syntax highlighting. HomePage: http://mycli.net Documentation: http://mycli.net/

dbcli 9.9k Sep 19, 2021
 Swiss Army Knife for macOS

 m-cli ?? Swiss Army Knife for macOS ! Overview Install Uninstall How To Use All Commands Contributing Overview m-cli is a macOS command line tool th

Roger 8.5k Sep 21, 2021
The best command-line tool to install and switch between multiple versions of Xcode.

xcodes The best command-line tool to install and switch between multiple versions of Xcode. If you're looking for an app version of xcodes, try Xcodes

Robots and Pencils 917 Sep 19, 2021
Mac App Store command line interface

mas-cli A simple command line interface for the Mac App Store. Designed for scripting and automation. ?? Install ?? Homebrew Homebrew is the preferred

mas-cli 8.4k Sep 20, 2021
Tasks, boards notes for the command-line habitat

Taskbook Tasks, boards & notes for the command-line habitat Description By utilizing a simple and minimal usage syntax, that requires a flat learning

Klaus Sinani 8.2k Sep 18, 2021
:rocket::star: A Zsh prompt for Astronauts

?? ⭐ Spaceship ZSH Zsh prompt for Astronauts. Website | Install | Features | Options | API Built with ❤︎ by Denys Dovhan and contributors Spaceship is

Denys Dovhan 15.2k Sep 16, 2021
GitHub’s official command line tool

GitHub CLI gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already

GitHub CLI 25.5k Sep 24, 2021
Git-integrated backup tool for macOS and Linux devs.

shallow-backup shallow-backup lets you easily create lightweight backups of installed packages, applications, fonts and dotfiles, and automatically pu

Aaron Lichtman 786 Sep 17, 2021
Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON

What is Miller? Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON. Build status License: BSD2 Docs

John Kerl 4.4k Sep 22, 2021
A cd command that learns - easily navigate directories from the command line

NAME autojump - a faster way to navigate your filesystem DESCRIPTION autojump is a faster way to navigate your filesystem. It works by maintaining a d

William Ting 13k Sep 23, 2021
Terminal session recorder 📹

Note: This is README for development branch. See the version for latest stable release. asciinema Terminal session recorder and the best companion of

asciinema 9.6k Sep 22, 2021
Log file navigator

This is the source repository for lnav, visit http://lnav.org for a high level overview. LNAV -- The Logfile Navigator The Log File Navigator, lnav fo

Tim Stack 3.8k Sep 24, 2021