import gradio as gr import json from docx import Document import io # Function to minify JSON def minify_json(input_text, uploaded_file): try: if uploaded_file is not None: input_text = uploaded_file["data"].decode("utf-8") json_content = json.loads(input_text) minified_json = json.dumps(json_content, separators=(',', ':')) return minified_json except json.JSONDecodeError: return "Invalid JSON input. Please provide a valid JSON." # Gradio interface for minifying JSON minify = gr.Interface( minify_json, [gr.Textbox(label="Input JSON Text"), gr.File(label="Upload JSON File")], "text" ) # Function to minify JSON with each key-value pair on a new line without extra indentation def minify_json_to_row(input_text, uploaded_file): try: if uploaded_file is not None: input_text = uploaded_file["data"].decode("utf-8") json_content = json.loads(input_text) minified_rows = ["{"] for key, value in json_content.items(): serialized_value = json.dumps(value, separators=(',', ':')) minified_rows.append(f' "{key}": {serialized_value}') minified_rows.append("}") return "\n".join(minified_rows) except json.JSONDecodeError: return "Invalid JSON input. Please provide a valid JSON." # Gradio interface for minifying JSON to rows minify_to_row = gr.Interface( minify_json_to_row, [gr.Textbox(label="Input JSON Text"), gr.File(label="Upload JSON File")], "text" ) # Function for the 'Should we translate?' interface def check_input(input_text, uploaded_file): if uploaded_file is not None: input_text = uploaded_file["data"].decode("utf-8") if not input_text.strip(): return "No words in the input." words = input_text.split() response = [f"'{word}' is a valid word." if word.isalpha() and ' ' not in word else f"'{word}' is not a valid word." for word in words] return " ".join(response) # Gradio interface for checking if we should translate should_we_translate = gr.Interface( check_input, [gr.Textbox(label="Input Text"), gr.File(label="Upload File")], "text" ) # Function to read text from a Word document def read_word_document(uploaded_file): if uploaded_file is not None: # The file content is in uploaded_file[1], which is bytes file_stream = io.BytesIO(uploaded_file[1]) document = Document(file_stream) text = '\n'.join([para.text for para in document.paragraphs]) return text return "Please upload a Word document." # Gradio interface for reading Word document read_docx = gr.Interface( read_word_document, gr.File(label="Upload Word Document"), "text" ) # Creating a Tabbed Interface with all functionalities demo = gr.TabbedInterface([minify, should_we_translate, minify_to_row, read_docx], ["Minify JSON", "Should we translate?", "Minify to row", "Template"]) if __name__ == "__main__": demo.launch()