import gradio as gr from gradio_huggingfacehub_search import HuggingfaceHubSearch import nbformat as nbf from huggingface_hub import HfApi api = HfApi() def create_notebook_file(cell_commands, notebook_name="generated_notebook.ipynb"): nb = nbf.v4.new_notebook() nb['cells'] = [nbf.v4.new_code_cell(command) for command in cell_commands] with open(notebook_name, 'w') as f: nbf.write(nb, f) print(f"Notebook '{notebook_name}' created successfully.") def generate_notebook(dataset_id): commands = [ f"from datasets import load_dataset", f"dataset = load_dataset('{dataset_id}')", f"dataset", ] notebook_name = f"{dataset_id.replace('/', '-')}.ipynb" create_notebook_file(commands, notebook_name=notebook_name) api.upload_file( path_or_fileobj=notebook_name, path_in_repo="dataset_analysis.ipynb", repo_id="asoria/en-text", repo_type="dataset", ) print("Notebook uploaded to Huggingface Hub.") link = f"https://huggingface.co/datasets/{dataset_id}/blob/main/dataset_analyst.ipynb" return f'See notebook' with gr.Blocks() as demo: gr.Markdown("# 🤖 Dataset auto analyst creator 🕵️") dataset_name = HuggingfaceHubSearch( label="Hub Dataset ID", placeholder="Search for dataset id on Huggingface", search_type="dataset", value="", ) @gr.render(inputs=dataset_name) def embed(name): if not name: return gr.Markdown("### No dataset provided") html_code = f""" """ return gr.HTML(value=html_code) generate_btn = gr.Button("Generate notebook") output_lbl = gr.HTML(value="") generate_btn.click(generate_notebook, inputs=[dataset_name], outputs=[output_lbl]) demo.launch()