kreemyyyy commited on
Commit
eb59eaa
Β·
verified Β·
1 Parent(s): e22be08

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -21
app.py CHANGED
@@ -3,29 +3,32 @@ import gradio as gr
3
 
4
  # Core conversion logic
5
  def convert_schedule(file_path, direction):
6
- # Read the uploaded Excel file (first sheet) with first column as index
7
  df = pd.read_excel(file_path, index_col=0)
8
 
9
- if direction == "A to B":
 
 
 
 
 
10
  # Models in rows β†’ Texters as rows
11
- df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: "Model"})
12
- df_melt = df_reset.melt(id_vars=["Model"], var_name="Header", value_name="Texter")
13
- df_melt = df_melt.dropna(subset=["Texter"])
14
- # Use pivot_table to handle duplicate entries gracefully
15
  pivot = df_melt.pivot_table(
16
- index="Texter", columns="Header", values="Model", aggfunc="first"
17
  )
18
- result = pivot.reindex(columns=df.columns).fillna("")
19
  else:
20
  # Texters in rows β†’ Models as rows
21
- df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: "Texter"})
22
- df_melt = df_reset.melt(id_vars=["Texter"], var_name="Header", value_name="Model")
23
- df_melt = df_melt.dropna(subset=["Model"])
24
- # Use pivot_table to handle duplicate entries gracefully
25
  pivot = df_melt.pivot_table(
26
- index="Model", columns="Header", values="Texter", aggfunc="first"
27
  )
28
- result = pivot.reindex(columns=df.columns).fillna("")
29
 
30
  return result
31
 
@@ -34,15 +37,16 @@ def main():
34
  iface = gr.Interface(
35
  fn=convert_schedule,
36
  inputs=[
37
- gr.File(label="Upload Schedule (.xlsx)", file_count="single", type="filepath"),
38
- gr.Radio(["A to B", "B to A"], label="Conversion Direction")
39
  ],
40
- outputs=gr.Dataframe(label="Converted Schedule"),
41
- title="Dynamic Schedule Converter",
42
- description="Upload an Excel file in Format A or B and convert between models-as-rows ↔ texters-as-rows."
 
43
  )
44
  # Listen on all interfaces for Hugging Face Spaces
45
- iface.launch(server_name="0.0.0.0", server_port=7860)
46
 
47
- if __name__ == "__main__":
48
  main()
 
3
 
4
  # Core conversion logic
5
  def convert_schedule(file_path, direction):
6
+ # Read the uploaded Excel file with first column as index
7
  df = pd.read_excel(file_path, index_col=0)
8
 
9
+ # Clean up any extraneous columns (e.g., blank/Unnamed or hyperlink rows)
10
+ drop_cols = [col for col in df.columns if isinstance(col, str) and (col.startswith('Unnamed') or col.startswith('http'))]
11
+ if drop_cols:
12
+ df = df.drop(columns=drop_cols)
13
+
14
+ if direction == 'A to B':
15
  # Models in rows β†’ Texters as rows
16
+ df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: 'Model'})
17
+ df_melt = df_reset.melt(id_vars=['Model'], var_name='Header', value_name='Texter')
18
+ df_melt = df_melt.dropna(subset=['Texter'])
 
19
  pivot = df_melt.pivot_table(
20
+ index='Texter', columns='Header', values='Model', aggfunc='first'
21
  )
22
+ result = pivot.reindex(columns=df.columns).fillna('')
23
  else:
24
  # Texters in rows β†’ Models as rows
25
+ df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: 'Texter'})
26
+ df_melt = df_reset.melt(id_vars=['Texter'], var_name='Header', value_name='Model')
27
+ df_melt = df_melt.dropna(subset=['Model'])
 
28
  pivot = df_melt.pivot_table(
29
+ index='Model', columns='Header', values='Texter', aggfunc='first'
30
  )
31
+ result = pivot.reindex(columns=df.columns).fillna('')
32
 
33
  return result
34
 
 
37
  iface = gr.Interface(
38
  fn=convert_schedule,
39
  inputs=[
40
+ gr.File(label='Upload Schedule (.xlsx)', file_count='single', type='filepath'),
41
+ gr.Radio(['A to B', 'B to A'], label='Conversion Direction')
42
  ],
43
+ outputs=gr.Dataframe(label='Converted Schedule'),
44
+ title='Dynamic Schedule Converter',
45
+ description=('Upload an Excel file in Format A or B, '
46
+ 'auto-clean blank/merged header rows, and convert between models-as-rows ↔ texters-as-rows.')
47
  )
48
  # Listen on all interfaces for Hugging Face Spaces
49
+ iface.launch(server_name='0.0.0.0', server_port=7860)
50
 
51
+ if __name__ == '__main__':
52
  main()