R2Z / app.py
myschoolstory
Add app files
eb2aea0
Raw
History Blame Contribute Delete
1.36 kB
import aspose.zip as az
from io import BytesIO
import tempfile
import os
import gradio as gr
def rar_to_zip(rar_file_path):
# Create a temporary ZIP file
temp_zip = tempfile.NamedTemporaryFile(suffix='.zip', delete=False)
temp_zip_path = temp_zip.name
temp_zip.close()
# Create ZIP archive
with az.Archive() as zip_archive:
# Load RAR file
with az.rar.RarArchive(rar_file_path) as rar_archive:
# Loop through entries and add to ZIP
for i in range(rar_archive.entries.length):
if not rar_archive.entries[i].is_directory:
ms = BytesIO()
rar_archive.entries[i].extract(ms)
zip_archive.create_entry(rar_archive.entries[i].name, ms)
# Save ZIP archive
zip_archive.save(temp_zip_path)
return temp_zip_path
def convert_rar_to_zip(rar_file):
if rar_file is None:
return None
zip_path = rar_to_zip(rar_file)
return zip_path
with gr.Blocks() as demo:
gr.Markdown("## RAR to ZIP Converter")
file_input = gr.File(label="Upload RAR File", file_types=[".rar"])
file_output = gr.File(label="Download ZIP File")
convert_button = gr.Button("Convert")
convert_button.click(
convert_rar_to_zip,
inputs=file_input,
outputs=file_output
)
demo.launch()