import gradio as gr import pandas as pd import requests from io import BytesIO def convert_csv_to_parquet(csv_file=None, csv_url=None): # Read the CSV file either from an uploaded file or from a URL if csv_file is not None: df = pd.read_csv(csv_file.name) elif csv_url is not None: response = requests.get(csv_url) response.raise_for_status() # Ensure the request was successful df = pd.read_csv(BytesIO(response.content)) else: raise ValueError("Either csv_file or csv_url must be provided") # Optionally, perform any cleaning on the DataFrame here if needed # Save the DataFrame as a Parquet file output_file_path = "output.parquet" df.to_parquet(output_file_path, index=False) return output_file_path demo = gr.Interface( fn=convert_csv_to_parquet, inputs=[ gr.File(label="CSV File"), gr.Textbox(label="CSV File URL", placeholder="Enter a URL to a CSV file") ], outputs=[gr.File(label="Parquet Output")], title="CSV to Parquet Converter", description="Convert a CSV file to Parquet format from a downloadable link or file upload" ) if __name__ == "__main__": demo.launch()