Spaces:
Paused
Paused
| import gradio | |
| import subprocess | |
| import re | |
| import time | |
| def extract_class_name(java_code): | |
| match = re.search(r'class\s+(\w+)\s*\{', java_code) | |
| if match: | |
| return match.group(1) | |
| return None | |
| def run_command(command): | |
| process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| output, error = process.communicate() | |
| if process.returncode == 0: | |
| result = output.decode('utf-8') | |
| return result | |
| else: | |
| result = error.decode('utf-8') | |
| return result | |
| def run_code(code,language): | |
| def exe(code,language): | |
| code = code.strip() | |
| lang = language.strip().lower() | |
| if lang == 'python': | |
| try: | |
| with open('program.py', 'w') as f: | |
| f.write(code) | |
| command = f"python program.py" | |
| process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| output, error = process.communicate() | |
| if process.returncode == 0: | |
| result = output.decode('utf-8') | |
| else: | |
| result = error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'java': | |
| class_name = extract_class_name(code) | |
| # class_name = 'main' | |
| try: | |
| with open(f'{class_name}.java', 'w') as f: | |
| f.write(code) | |
| compile_command = f"javac {class_name}.java" | |
| compile_process = subprocess.Popen(compile_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| compile_output, compile_error = compile_process.communicate() | |
| if not class_name: | |
| result ='Unable to extract class name from code' | |
| elif compile_process.returncode == 0: | |
| run_command = f"java {class_name}" | |
| run_process = subprocess.Popen(run_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| else: | |
| result = compile_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'html': | |
| result = '' | |
| elif lang == 'js': | |
| result = 'JS code cannot be executed directly.' | |
| elif lang == 'css': | |
| result = 'CSS code cannot be executed directly.' | |
| elif lang == 'c': | |
| try: | |
| compile_command = f"gcc -o c_program -x c -" | |
| compile_process = subprocess.Popen(compile_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| compile_output, compile_error = compile_process.communicate(input=code.encode('utf-8')) | |
| if compile_process.returncode == 0: | |
| run_command = f"./c_program" | |
| run_process = subprocess.Popen(run_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| else: | |
| result = compile_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'cpp': | |
| try: | |
| compile_command = f"g++ -o cpp_program -x c++ -" | |
| compile_process = subprocess.Popen(compile_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| compile_output, compile_error = compile_process.communicate(input=code.encode('utf-8')) | |
| if compile_process.returncode == 0: | |
| run_command = f"./cpp_program" | |
| run_process = subprocess.Popen(run_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| else: | |
| result = compile_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'csharp': | |
| try: | |
| with open('Program.cs', 'w') as f: | |
| f.write(code) | |
| compile_command = f"csc Program.cs" | |
| compile_process = subprocess.Popen(compile_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| compile_output, compile_error = compile_process.communicate() | |
| if compile_process.returncode == 0: | |
| run_command = f"mono Program.exe" | |
| run_process = subprocess.Popen(run_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| else: | |
| result = compile_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'r': | |
| try: | |
| with open('script.R', 'w') as f: | |
| f.write(code) | |
| run_command = f"Rscript script.R" | |
| run_process = subprocess.Popen(run_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'php': | |
| try: | |
| with open('script.php', 'w') as f: | |
| f.write(code) | |
| run_command = f"php script.php" | |
| run_process = subprocess.Popen(run_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| elif lang == 'nodejs': | |
| try: | |
| with open('script.js', 'w') as f: | |
| f.write(code) | |
| run_command = f"node script.js" | |
| run_process = subprocess.Popen(run_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| run_output, run_error = run_process.communicate() | |
| if run_process.returncode == 0: | |
| result = run_output.decode('utf-8') | |
| else: | |
| result = run_error.decode('utf-8') | |
| except subprocess.CalledProcessError as e: | |
| result = str(e) | |
| else: | |
| result = 'Language not supported yet.' | |
| return result | |
| result = exe(code,language) | |
| return result | |
| # gradio_interface1 = gradio.Interface( | |
| # fn=run_code, | |
| # inputs="text", | |
| # outputs="text", | |
| # title="REST API ", | |
| # description="This is an AI powered languages API ", | |
| # article="" | |
| # ) | |
| # gradio_interface2 = gradio.Interface( | |
| # fn=run_command, | |
| # inputs="text", | |
| # outputs="text", | |
| # title="REST API ", | |
| # description="This is an AI powered command REST API ", | |
| # article="" | |
| # ) | |
| # gradio_interface1.launch() | |
| # gradio_interface2.launch() | |
| with gradio.Blocks() as demo: | |
| gradio.Markdown("run command or run code.") | |
| with gradio.Tab("run command"): | |
| command_input = gradio.Textbox(label="command") | |
| command_output = gradio.Textbox(label="output") | |
| command_button = gradio.Button("submit command") | |
| with gradio.Tab("run code"): | |
| with gradio.Row(): | |
| code_input = gradio.Textbox(label="code") | |
| language_input = gradio.Textbox(label="language") | |
| code_output = gradio.Textbox(label="output") | |
| code_button = gradio.Button("submit code") | |
| command_button.click(run_command, inputs=command_input, outputs=command_output,api_name='command') | |
| code_button.click(run_code, inputs=[code_input,language_input], outputs=code_output,api_name='code',concurrency_limit=2000) | |
| if __name__ == "__main__": | |
| demo.launch() | |