File size: 5,311 Bytes
8838350
 
 
 
 
 
 
 
 
 
 
 
9c018b8
 
 
8838350
 
 
 
9c018b8
 
b4de848
8838350
 
 
 
9c018b8
 
 
8838350
 
 
 
9c018b8
 
8838350
 
 
 
 
9c018b8
 
 
8838350
 
 
 
 
 
 
9c018b8
 
 
8838350
 
 
 
9c018b8
 
8838350
 
 
 
 
9c018b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73ab78c
9c018b8
 
 
 
9f5f15e
249820c
9c018b8
 
 
 
 
 
8838350
 
 
 
 
 
 
 
9c018b8
 
 
8838350
 
 
 
 
 
 
 
 
 
 
9c018b8
 
 
8838350
9c018b8
8838350
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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)