Auto Search StackOverflow for Errors in Code using Python
Last Updated :
09 Dec, 2021
Ever faced great difficulty in copying the error you’re stuck with, opening the browser, pasting it, and opening the right Stack Overflow Answer? Worry Not, Here’s the solution! What we are going to do is to write a Python script, which automatically detects the error from code, search about it on Stack Overflow, and opens up the few tabs related to our error that were previously been answered also.
Modules Used
- The subprocess module is used to run new applications or programs through Python code by creating new processes. The subprocess module was created with the intention of replacing several methods available in the os module, which were not considered to be very efficient.
- The requests module allows you to send HTTP requests using Python.
- The webbrowser module allows us to launch the web browser.
Approach: We will divide the script into three parts, i.e. we will create three functions as follows:
- execute_return(cmd): On the first function, we are going to write code to read and run python file, and store its output or error.
- mak_req(error): This function will make an HTTP request using Stack Overflow API and the error we get from the 1st function and finally returns the JSON file.
- get_urls(json_dict): This function takes the JSON from the 2nd function, and fetches and stores the URLs of those solutions which are marked as “answered” by StackOverflow. And then finally open up the tabs containing answers from StackOverflow on the browser.
Note: One more thing, before we jump into the code, you should be clear with the concept of the strip and split function.
Python3
from subprocess import Popen, PIPE
import requests
import webbrowser
def execute_return(cmd):
args = cmd.split()
proc = Popen(args, stdout = PIPE, stderr = PIPE)
out, err = proc.communicate()
return out, err
def mak_req(error):
"/2.2/search?order=desc&tagged=python&sort=activity&intitle={}&site=stackoverflow" . format (error))
return resp.json()
def get_urls(json_dict):
url_list = []
count = 0
for i in json_dict[ 'items' ]:
if i[ 'is_answered' ]:
url_list.append(i[ "link" ])
count + = 1
if count = = 3 or count = = len (i):
break
for i in url_list:
webbrowser. open (i)
out, err = execute_return( "python C:/Users/Saurabh/Desktop/test.py" )
error = err.decode( "utf-8" ).strip().split( "\r\n" )[ - 1 ]
print (error)
if error:
filter_error = error.split( ":" )
json1 = mak_req(filter_error[ 0 ])
json2 = mak_req(filter_error[ 1 ])
json = mak_req(error)
get_urls(json1)
get_urls(json2)
get_urls(json)
else :
print ( "No error" )
|
Output:
Share your thoughts in the comments
Please Login to comment...