awacke1 commited on
Commit
b566f5d
·
1 Parent(s): 0c1eb0f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +92 -23
app.py CHANGED
@@ -14,49 +14,87 @@ def get_image_path(img, name, image_type):
14
 
15
  def update_csv_file(uploaded_file, name, image_type):
16
  csv_file_path = "Resources.csv"
17
- with open(csv_file_path, mode='a', newline='') as csv_file:
 
 
 
 
 
 
 
 
 
 
 
 
18
  csv_writer = csv.writer(csv_file)
19
- csv_writer.writerow([name, uploaded_file.name, image_type])
 
20
 
21
  def get_uploaded_files_info():
22
  csv_file_path = "Resources.csv"
23
- with open(csv_file_path, mode='r') as csv_file:
24
- csv_reader = csv.reader(csv_file)
25
- files_info = []
26
- for row in csv_reader:
27
- files_info.append(row)
28
- return files_info
 
 
 
 
29
 
30
  def display_images_from_csv():
31
  files_info = get_uploaded_files_info()
32
  for row in files_info:
33
- if row[2] == 'characters':
34
- img_path = f"data/uploadedImages/{row[2]}/{row[0]}/{row[1]}"
35
- st.sidebar.image(img_path, width=100, caption=row[0])
 
 
 
36
  else:
37
- img_path = f"data/uploadedImages/{row[2]}/{row[0]}/{row[1]}"
38
- st.image(img_path, width=100, caption=row[0])
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  image_type = st.selectbox('Choose image type:', options=['characters', 'terrain'])
41
  name = st.text_input('Enter a name for the image:')
42
  uploaded_files = st.file_uploader('Upload image(s)', type=['png', 'jpg'], accept_multiple_files=True)
43
-
44
  for uploaded_file in uploaded_files:
45
  if uploaded_file is not None:
46
  # Get actual image file
47
  bytes_data = get_image_path(uploaded_file, name, image_type)
48
  uploaded_images[image_type].setdefault(name, [])
49
- uploaded_images[image_type][name].append(bytes_data)
50
- st.image(bytes_data, use_column_width=True)
51
- update_csv_file(uploaded_file, name, image_type)
52
 
53
- if image_type == 'characters':
54
  if uploaded_images['characters']:
55
  st.sidebar.write('**Characters**')
56
  for name, files in uploaded_images['characters'].items():
57
  for file in files:
58
  st.sidebar.image(file, width=100, caption=name)
59
- else:
 
60
  if uploaded_images['terrain']:
61
  st.write('**Terrain**')
62
  row = []
@@ -69,7 +107,38 @@ else:
69
  if row:
70
  st.image(row, width=100 * len(row)) # Last row, if not complete
71
 
72
- while True:
73
- time.sleep(20)
74
- st.empty()
75
- display_images_from_csv()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  def update_csv_file(uploaded_file, name, image_type):
16
  csv_file_path = "Resources.csv"
17
+ # read existing file contents
18
+ file_contents = set()
19
+ if os.path.exists(csv_file_path):
20
+ with open(csv_file_path, mode='r') as csv_file:
21
+ csv_reader = csv.reader(csv_file)
22
+ for row in csv_reader:
23
+ if row:
24
+ file_contents.add(tuple(row))
25
+ # add new file content
26
+ file_content = (name, uploaded_file.name, image_type)
27
+ file_contents.add(file_content)
28
+ # write updated file contents
29
+ with open(csv_file_path, mode='w', newline='') as csv_file:
30
  csv_writer = csv.writer(csv_file)
31
+ for row in file_contents:
32
+ csv_writer.writerow(row)
33
 
34
  def get_uploaded_files_info():
35
  csv_file_path = "Resources.csv"
36
+ if os.path.exists(csv_file_path):
37
+ with open(csv_file_path, mode='r') as csv_file:
38
+ csv_reader = csv.reader(csv_file)
39
+ files_info = []
40
+ for row in csv_reader:
41
+ if row:
42
+ files_info.append(row)
43
+ return files_info
44
+ else:
45
+ return []
46
 
47
  def display_images_from_csv():
48
  files_info = get_uploaded_files_info()
49
  for row in files_info:
50
+ name, file_name, image_type = row
51
+ # remove extension from file name
52
+ file_name_without_extension = os.path.splitext(file_name)[0]
53
+ if image_type == 'characters':
54
+ img_path = f"data/uploadedImages/{image_type}/{name}/{file_name}"
55
+ st.sidebar.image(img_path, width=100, caption=name)
56
  else:
57
+ img_path = f"data/uploadedImages/{image_type}/{name}/{file_name}"
58
+ st.image(img_path, width=100, caption=name)
59
 
60
+ def get_table_from_csv():
61
+ csv_file_path = "Resources.csv"
62
+ if os.path.exists(csv_file_path):
63
+ with open(csv_file_path, mode='r') as csv_file:
64
+ csv_reader = csv.reader(csv_file)
65
+ table_rows = [row for row in csv_reader if row]
66
+ # create markdown table from table rows
67
+ table_md = "| Name | File Name | Image Type |\n| --- | --- | --- |\n"
68
+ for row in table_rows:
69
+ name, file_name, image_type = row
70
+ # remove extension from file name
71
+ file_name_without_extension = os.path.splitext(file_name)[0]
72
+ table_md += f"| {name} | {file_name_without_extension} | {image_type} |\n"
73
+ return table_md
74
+ else:
75
+ return ""
76
+
77
+ # show uploaded images and save them to file
78
  image_type = st.selectbox('Choose image type:', options=['characters', 'terrain'])
79
  name = st.text_input('Enter a name for the image:')
80
  uploaded_files = st.file_uploader('Upload image(s)', type=['png', 'jpg'], accept_multiple_files=True)
 
81
  for uploaded_file in uploaded_files:
82
  if uploaded_file is not None:
83
  # Get actual image file
84
  bytes_data = get_image_path(uploaded_file, name, image_type)
85
  uploaded_images[image_type].setdefault(name, [])
86
+ uploaded_images[image_type][ name].append(bytes_data)
87
+ st.image(bytes_data, use_column_width=True)
88
+ update_csv_file(uploaded_file, name, image_type)
89
 
90
+ def display_characters():
91
  if uploaded_images['characters']:
92
  st.sidebar.write('**Characters**')
93
  for name, files in uploaded_images['characters'].items():
94
  for file in files:
95
  st.sidebar.image(file, width=100, caption=name)
96
+
97
+ def display_terrain():
98
  if uploaded_images['terrain']:
99
  st.write('**Terrain**')
100
  row = []
 
107
  if row:
108
  st.image(row, width=100 * len(row)) # Last row, if not complete
109
 
110
+ def display_uploaded_images():
111
+ st.write("## Uploaded Images")
112
+ if image_type == 'characters':
113
+ display_characters()
114
+ else:
115
+ display_terrain()
116
+
117
+ st.write("## Uploaded Images Table")
118
+ # display markdown table from csv file
119
+ table_md = get_table_from_csv()
120
+ if table_md:
121
+ st.markdown(table_md, unsafe_allow_html=True)
122
+ else:
123
+ st.write("No images uploaded yet.")
124
+
125
+ while True:
126
+ time.sleep(20)
127
+ st.empty()
128
+ display_images_from_csv()
129
+
130
+
131
+ # show uploaded images and save them to file
132
+ image_type = st.selectbox('Choose image type:', options=['characters', 'terrain'])
133
+ name = st.text_input('Enter a name for the image:')
134
+ uploaded_files = st.file_uploader('Upload image(s)', type=['png', 'jpg'], accept_multiple_files=True)
135
+ for uploaded_file in uploaded_files:
136
+ if uploaded_file is not None:
137
+ # Get actual image file
138
+ bytes_data = get_image_path(uploaded_file, name, image_type)
139
+ uploaded_images[image_type].setdefault(name, [])
140
+ uploaded_images[image_type][name].append(bytes_data)
141
+ st.image(bytes_data, use_column_width=True)
142
+ update_csv_file(uploaded_file, name, image_type)
143
+
144
+ display_uploaded_images()