ysharma's picture
ysharma HF staff
Update app.py
9f5f15e
import gradio as gr
def filesystem(fex):
# Get the file extension
file_extension = fex.split('/')[-1].split('.')[-1]
if file_extension in ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff']:
return {im: gr.Image(value=fex, visible=True, label='Selected Image'),
cd: gr.JSON(visible=False),
df: gr.Dataframe(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension == 'txt':
with open(fex, 'r') as f:
content = f.read()
if len(content) == 0:
content = "This is a blank textfile"
return {txt: gr.Textbox(content, visible=True, label='Selected Textfile'),
cd: gr.JSON(visible=False),
df: gr.Dataframe(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension == 'json':
with open(fex, 'r') as f:
content = f.read()
if len(content) == 0:
content = "This is a blank JSON file"
return {cd: gr.JSON(value=content, visible=True, label='Code'),
df: gr.Dataframe(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension == 'csv':
return {df: gr.Dataframe(value=fex, visible=True, label='Selected CSV file'),
cd: gr.JSON(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension == 'md':
with open(fex, 'r') as f:
content = f.read()
if len(content) == 0:
content = "This is a blank Markdown file"
return {md: gr.Markdown(value=content, visible=True, label='Selected Markdown file'),
cd: gr.JSON(visible=False),
df: gr.Dataframe(visible=False),
im: gr.Image(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension == 'zip':
return {zip: gr.File(value=fex, visible=True, label='Selected Zip file'),
df: gr.Dataframe(visible=False),
cd: gr.JSON(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
elif file_extension in ['mp4', 'wmv', 'mp3']:
return {vid: gr.Video(value=fex, visible=True, label='Selected video file'),
df: gr.Dataframe(visible=False),
cd: gr.JSON(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
code: gr.Code(visible=False),
}
elif file_extension in ['py', 'js', 'java', 'c', 'cpp', 'php', 'html', 'css', 'swift']:
with open(fex, 'r') as f:
content = f.read()
if len(content) == 0:
content = "This is a blank Code file"
return {code: gr.Code(value=content, visible=True, label='Selected Code file'),
df: gr.Dataframe(visible=False),
cd: gr.JSON(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
txt: gr.Textbox(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
}
else:
msg = fex + " - " + "This is an Unsupported file type at the moment."
return {txt: gr.Textbox(value=msg, visible=True, label='Selected Textfile'),
cd: gr.JSON(visible=False),
df: gr.Dataframe(visible=False),
im: gr.Image(visible=False),
md: gr.Markdown(visible=False),
zip: gr.File(visible=False),
vid: gr.Video(visible=False),
code: gr.Code(visible=False),
}
with gr.Blocks() as demo:
gr.Markdown("# <center> File Handling using the new gr.FileExplorer() Gradio Component </center>")
with gr.Row():
fex1 = gr.FileExplorer(file_count='single')
cd = gr.JSON(visible=False)
df = gr.Dataframe(visible=False)
im = gr.Image(visible=False)
md = gr.Markdown(visible=False)
txt = gr.Textbox(visible=False)
zip = gr.File(visible=False)
vid = gr.Video(visible=False)
code = gr.Code(visible=False)
fex1.change(filesystem, fex1, [cd, df, im, md, txt,zip, vid, code])
demo.launch(debug=True) #, height=800)