| import gradio as gr |
| import os |
| import numpy as np |
| from PIL import Image |
| import demoji |
| from textblob import TextBlob |
| from faker import Faker |
| import pandas as pd |
| from difflib import SequenceMatcher |
|
|
| |
| def mirror_image(input_img): |
| if input_img is None: |
| return None |
| mirrored_img = Image.fromarray(input_img).transpose(Image.FLIP_LEFT_RIGHT) |
| return mirrored_img |
|
|
| |
| def detect_emojis(text): |
| if not text: |
| return "Please enter text containing emojis" |
| |
| emoji_dict = demoji.findall(text) |
| if emoji_dict: |
| result = "Emojis found:\n" |
| for emoji, desc in emoji_dict.items(): |
| result += f"{emoji}: {desc}\n" |
| return result |
| else: |
| return "No emojis found in the text" |
|
|
| |
| def correct_spelling(text): |
| if not text: |
| return "Please enter text to correct" |
| |
| words = text.split() |
| corrected_words = [] |
| |
| for word in words: |
| corrected_words.append(str(TextBlob(word).correct())) |
| |
| return f"Original: {text}\nCorrected: {' '.join(corrected_words)}" |
|
|
| |
| def check_disarium(number): |
| try: |
| number = int(number) |
| if number <= 0: |
| return "Please enter a positive integer" |
| |
| length = len(str(number)) |
| temp = number |
| sum_val = 0 |
| |
| while temp > 0: |
| rem = temp % 10 |
| sum_val += rem ** length |
| temp = temp // 10 |
| length -= 1 |
| |
| if sum_val == number: |
| return f"{number} is a Disarium Number" |
| else: |
| return f"{number} is NOT a Disarium Number" |
| except ValueError: |
| return "Please enter a valid integer" |
|
|
| |
| def generate_fake_data(count=1, include_profile=False): |
| try: |
| count = int(count) |
| if count <= 0: |
| return "Please enter a positive number" |
| except (ValueError, TypeError): |
| return "Please enter a valid number" |
| |
| fake = Faker() |
| |
| if include_profile: |
| data = [fake.profile() for _ in range(count)] |
| df = pd.DataFrame(data) |
| return df.to_string() |
| else: |
| result = "" |
| for _ in range(count): |
| result += f"Name: {fake.name()}\n" |
| result += f"Address: {fake.address()}\n" |
| result += f"Text: {fake.text()}\n\n" |
| return result |
|
|
| |
| def compare_texts(text1, text2): |
| if not text1 or not text2: |
| return "Please enter both texts to compare" |
| |
| similarity = SequenceMatcher(None, text1, text2).ratio() |
| return f"The texts are {similarity * 100:.2f}% similar" |
|
|
| |
| with gr.Blocks(title="MultiToolBox") as app: |
| gr.Markdown("# MultiToolBox") |
| gr.Markdown("A versatile utility toolkit with multiple functions") |
| |
| with gr.Tabs(): |
| |
| with gr.Tab("Image Mirror"): |
| gr.Markdown("### Mirror an Image Horizontally") |
| with gr.Row(): |
| with gr.Column(): |
| img_input = gr.Image(label="Upload Image") |
| mirror_btn = gr.Button("Mirror Image") |
| with gr.Column(): |
| img_output = gr.Image(label="Mirrored Image") |
| |
| mirror_btn.click(fn=mirror_image, inputs=img_input, outputs=img_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Upload an image using the upload button |
| 2. Click "Mirror Image" to flip it horizontally |
| 3. The result will appear in the right panel |
| """) |
| |
| |
| with gr.Tab("Emoji Detector"): |
| gr.Markdown("### Detect Emojis in Text") |
| emoji_input = gr.Textbox(label="Enter text with emojis") |
| emoji_detect_btn = gr.Button("Detect Emojis") |
| emoji_output = gr.Textbox(label="Results") |
| |
| emoji_detect_btn.click(fn=detect_emojis, inputs=emoji_input, outputs=emoji_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Enter text containing emojis |
| 2. Click "Detect Emojis" to identify and describe them |
| |
| **Example:** "I love reading books 📚❤️🌹" |
| """) |
| |
| |
| with gr.Tab("Spell Checker"): |
| gr.Markdown("### Correct Spelling Errors") |
| spell_input = gr.Textbox(label="Enter text with spelling errors") |
| spell_btn = gr.Button("Correct Spelling") |
| spell_output = gr.Textbox(label="Corrected Text") |
| |
| spell_btn.click(fn=correct_spelling, inputs=spell_input, outputs=spell_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Enter text with spelling mistakes |
| 2. Click "Correct Spelling" to fix errors |
| |
| **Example:** "I havv a problm with speling" |
| """) |
| |
| |
| with gr.Tab("Disarium Checker"): |
| gr.Markdown("### Check if a Number is a Disarium Number") |
| gr.Markdown(""" |
| A Disarium number is a number where the sum of its digits raised to their respective positions equals the number itself. |
| Example: 135 is a Disarium number because 1^1 + 3^2 + 5^3 = 1 + 9 + 125 = 135 |
| """) |
| |
| disarium_input = gr.Textbox(label="Enter a number") |
| disarium_btn = gr.Button("Check") |
| disarium_output = gr.Textbox(label="Result") |
| |
| disarium_btn.click(fn=check_disarium, inputs=disarium_input, outputs=disarium_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Enter a positive integer |
| 2. Click "Check" to determine if it's a Disarium number |
| |
| **Examples:** |
| - 135 (Disarium number) |
| - 89 (Disarium number: 8^1 + 9^2 = 8 + 81 = 89) |
| - 175 (Not a Disarium number) |
| """) |
| |
| |
| with gr.Tab("Fake Data Generator"): |
| gr.Markdown("### Generate Fake Data") |
| |
| with gr.Row(): |
| fake_count = gr.Number(label="Number of entries", value=1) |
| fake_profile = gr.Checkbox(label="Generate detailed profiles") |
| |
| fake_btn = gr.Button("Generate") |
| fake_output = gr.Textbox(label="Generated Data", lines=10) |
| |
| fake_btn.click(fn=generate_fake_data, inputs=[fake_count, fake_profile], outputs=fake_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Enter the number of fake data entries to generate |
| 2. Choose whether to generate detailed profiles |
| 3. Click "Generate" to create fake data |
| |
| **Example:** Generate 5 entries with detailed profiles |
| """) |
| |
| |
| with gr.Tab("Text Similarity"): |
| gr.Markdown("### Compare Text Similarity") |
| |
| text1_input = gr.Textbox(label="First Text") |
| text2_input = gr.Textbox(label="Second Text") |
| compare_btn = gr.Button("Compare") |
| similarity_output = gr.Textbox(label="Similarity Result") |
| |
| compare_btn.click(fn=compare_texts, inputs=[text1_input, text2_input], outputs=similarity_output) |
| |
| gr.Markdown(""" |
| **How to use:** |
| 1. Enter the first text for comparison |
| 2. Enter the second text for comparison |
| 3. Click "Compare" to calculate similarity percentage |
| |
| **Example:** |
| - Text 1: "Hello, how are you today?" |
| - Text 2: "Hello, how are you doing today?" |
| """) |
|
|
| if __name__ == "__main__": |
| app.launch() |