Zipmaker / app.py
Felguk's picture
Create app.py
99ad777 verified
import gradio as gr
import zipfile
import os
from typing import List
def create_zip(files: List[str], zip_name: str) -> str:
if not zip_name.endswith('.zip'):
zip_name += '.zip'
with zipfile.ZipFile(zip_name, 'w') as zipf:
for file in files:
zipf.write(file, os.path.basename(file))
return zip_name
def zip_files(files: List[str], zip_name: str):
if not files:
return "No files uploaded!"
zip_path = create_zip(files, zip_name)
return f"Zip file created: {zip_path}"
def process_files(files: List[str], zip_name: str):
file_paths = [file.name for file in files]
return zip_files(file_paths, zip_name)
with gr.Blocks() as demo:
gr.Markdown("## ZipMaker: Upload files and create a zip archive")
with gr.Row():
file_gallery = gr.Gallery(label="Upload Files", type="file")
zip_name_input = gr.Textbox(label="Enter Zip File Name", placeholder="example.zip")
with gr.Row():
submit_button = gr.Button("Create Zip")
output = gr.Textbox(label="Output", interactive=False)
submit_button.click(
process_files,
inputs=[file_gallery, zip_name_input],
outputs=output
)
demo.launch()