nx-storage / app.py
AstraOS's picture
Update app.py
a924ad2 verified
raw
history blame
2.08 kB
import gradio as gr
from uuid import uuid4
from fileManager import FileManager
import re
import os
import random
import string
import glob
##############################################################
# File Manager Integration
##############################################################
fileManager = FileManager()
fileManager.start()
def saveFile(file):
with open(file.name, "rb") as rfile:
file_infor = fileManager.saveFile(rfile.read(), file.orig_name)
return f"https://emee-nx-storage.hf.space/file=./{file_infor['path']}"
##############################################################
# Random Text File Generation Function
##############################################################
def generate_random_string(length=100):
"""Generate a random string of fixed length."""
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length))
num_files=10
file_length=1000
def generate_text_files(directory):
if not os.path.exists(directory):
return
for i in range(num_files):
file_name = os.path.join(directory, f'random_file_{i}.txt')
with open(file_name, 'w') as f:
for _ in range(file_length):
f.write(generate_random_string() + '\n')
##############################################################
# The Gradio App with File Management and Text Generation
##############################################################
with gr.Blocks() as demo:
# File Explorer for Upload (using fileManager integration)
gr.File(label="Upload File", upload=True, fn=saveFile)
# File Explorer for Existing Files (persistent storage)
working_dir = gr.FileExplorer(label="Working directory")
# Generate Random Text Files Button
generate_button = gr.Button("Generate Random Text Files")
@generate_button.click
def generate_files(event):
# Generate text files in working directory chosen by user
generate_text_files(working_dir.value)
gr.FileExplorer(root=working_dir.value, label="Persistent storage")
demo.launch()