Kims12 commited on
Commit
bec3eaf
·
verified ·
1 Parent(s): 4ecb030

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -58
app.py CHANGED
@@ -6,12 +6,12 @@ from PIL import Image
6
 
7
  def save_file(file_data, final_file_name):
8
  """
9
- 파일 데이터를 임시 폴더에 저장하고 최종 파일 경로를 반환.
10
  final_file_name에는 확장자 포함.
11
  """
12
  temp_file_path = os.path.join(tempfile.gettempdir(), final_file_name)
13
 
14
- # 업로드된 파일 파일 경로 경우
15
  if isinstance(file_data, str) and os.path.exists(file_data):
16
  with open(file_data, "rb") as f:
17
  data = f.read()
@@ -35,87 +35,49 @@ def save_file(file_data, final_file_name):
35
 
36
  return temp_file_path
37
 
38
- def process_file(file, name_option, additional_name, add_date, add_time):
39
  """
40
- 업로드된 파일을 받아 라디오 옵션따라 파일명을 재구성한 저장합니다.
 
41
 
42
- Parameters:
43
- file: 업로드된 파일 (gr.File 등, 파일 경로 또는 파일 객체)
44
- name_option: 라디오 버튼 선택값 (네 가지 옵션 중 하나)
45
- additional_name: 옵션에 따른 추가 입력(추가명 또는 변경할 파일명)
46
- add_date: 날짜 적용 여부 (Boolean)
47
- add_time: 시간 적용 여부 (Boolean)
48
-
49
- 반환값:
50
- 변경된 파일명을 가진 다운로드 가능한 파일 경로
51
  """
52
  if file is None:
53
  return None
54
 
55
- # 원본 파일명 확장자 추출
56
  if isinstance(file, str) and os.path.exists(file):
57
  original_filename = os.path.basename(file)
58
  elif hasattr(file, "name"):
59
  original_filename = os.path.basename(file.name)
60
  else:
61
  original_filename = "파일.bin"
62
-
63
  original_name, ext = os.path.splitext(original_filename)
64
  ext = ext.lstrip(".") if ext else "bin"
65
 
66
- # 라디오 옵션에 따라 최종 기본 파일명 결정
67
- if name_option == "파일명변경":
68
- # 입력된 새 파일명 사용 (없으면 기본값 "파일")
69
- final_base = additional_name.strip() if additional_name.strip() else "파일"
70
- elif name_option == "파일명유지":
71
- final_base = original_name
72
- elif name_option == "파일명유지 + 추가명":
73
- final_base = original_name + (f"_{additional_name.strip()}" if additional_name.strip() else "")
74
- elif name_option == "추가명 + 파일명유지":
75
- final_base = (f"{additional_name.strip()}_" if additional_name.strip() else "") + original_name
76
- else:
77
- final_base = original_name
78
-
79
- # 날짜 및 시간 stamp (한국 기준)
80
  now = datetime.utcnow() + timedelta(hours=9)
81
- date_str = now.strftime('%Y%m%d') if add_date else ""
82
- time_str = now.strftime('%H%M%S') if add_time else ""
83
- timestamp = ""
84
- if date_str and time_str:
85
- timestamp = f"_{date_str}_{time_str}"
86
- elif date_str:
87
- timestamp = f"_{date_str}"
88
- elif time_str:
89
- timestamp = f"_{time_str}"
90
 
91
- # 최종 파일명 구성 (접두사 제거)
92
- final_file_name = f"{final_base}{timestamp}.{ext}"
93
 
94
  return save_file(file, final_file_name)
95
 
96
  iface = gr.Interface(
97
  fn=process_file,
98
- inputs=[
99
- gr.File(label="파일 업로드"),
100
- gr.Radio(
101
- choices=["파일명변경", "파일명유지", "파일명유지 + 추가명", "추가명 + 파일명유지"],
102
- label="파일명 옵션"
103
- ),
104
- gr.Text(label="추가명/변경 파일명 입력", placeholder="옵션에 따라 입력하세요"),
105
- gr.Checkbox(label="날짜 적용", value=True),
106
- gr.Checkbox(label="시간 적용", value=True)
107
- ],
108
  outputs=gr.File(label="다운로드 파일"),
109
- title="파일명 옵션에 따른 파일명 변경 및 다운로드",
110
  description=(
111
- "업로드된 파일의 파일명을 아래 옵션따라 변경합니다.\n"
112
- "옵션1(파일명변경): 입력한 이름으로 파일명 변경\n"
113
- "옵션2(파일명유지): 원본 파일명 유지\n"
114
- "옵션3(파일명유지 + 추가명): 원본 파일명 뒤에 추가명 부착\n"
115
- "옵션4(추가명 + 파일명유지): 추가명을 원본 파일명 앞에 부착\n"
116
- "날짜/시간 체크 시 해당 정보가 파일명 뒤에 추가됩니다."
117
  )
118
  )
119
 
120
  if __name__ == "__main__":
121
- iface.launch()
 
6
 
7
  def save_file(file_data, final_file_name):
8
  """
9
+ 파일 데이터를 임시 폴더에 저장하고 최종 파일 경로를 반환합니다.
10
  final_file_name에는 확장자 포함.
11
  """
12
  temp_file_path = os.path.join(tempfile.gettempdir(), final_file_name)
13
 
14
+ # 파일 경로 전달된 경우
15
  if isinstance(file_data, str) and os.path.exists(file_data):
16
  with open(file_data, "rb") as f:
17
  data = f.read()
 
35
 
36
  return temp_file_path
37
 
38
+ def process_file(file):
39
  """
40
+ 업로드된 파일을 받아 원본 이름날짜와 시간 정보를 추가하여 저장합니다.
41
+ 항상 '파일명유지' 옵션으로 동작하며, 날짜와 시간은 한국 시간(UTC+9)을 기준으로 합니다.
42
 
43
+ 예)
44
+ sample.jpg sample_20250214_174436.jpg
 
 
 
 
 
 
 
45
  """
46
  if file is None:
47
  return None
48
 
49
+ # 원본 파일명 추출
50
  if isinstance(file, str) and os.path.exists(file):
51
  original_filename = os.path.basename(file)
52
  elif hasattr(file, "name"):
53
  original_filename = os.path.basename(file.name)
54
  else:
55
  original_filename = "파일.bin"
56
+
57
  original_name, ext = os.path.splitext(original_filename)
58
  ext = ext.lstrip(".") if ext else "bin"
59
 
60
+ # 한국 시간 기준 날짜 시간 stamp 생성
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  now = datetime.utcnow() + timedelta(hours=9)
62
+ date_str = now.strftime('%Y%m%d')
63
+ time_str = now.strftime('%H%M%S')
64
+ timestamp = f"_{date_str}_{time_str}"
 
 
 
 
 
 
65
 
66
+ # 최종 파일명 구성
67
+ final_file_name = f"{original_name}{timestamp}.{ext}"
68
 
69
  return save_file(file, final_file_name)
70
 
71
  iface = gr.Interface(
72
  fn=process_file,
73
+ inputs=gr.File(label="파일 업로드"),
 
 
 
 
 
 
 
 
 
74
  outputs=gr.File(label="다운로드 파일"),
75
+ title="파일명 변경 및 다운로드",
76
  description=(
77
+ "업로드된 파일의 원본 이름한국 시간 기준의 날짜와 시간이 추가되어 저장됩니다.\n"
78
+ ") sample.jpg sample_20250214_174436.jpg"
 
 
 
 
79
  )
80
  )
81
 
82
  if __name__ == "__main__":
83
+ iface.launch()