cwadayi commited on
Commit
eb9cd70
·
verified ·
1 Parent(s): ee59f53

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -30
app.py CHANGED
@@ -81,22 +81,20 @@ def _drive_service_from_env():
81
 
82
 
83
  def _normalize_folder_id(raw_id: str) -> Optional[str]:
84
- """Accept a bare ID or a full drive URL and return the folder ID."""
85
  if not raw_id:
86
  return None
87
- raw_id = raw_id.strip()
88
- # URL like https://drive.google.com/drive/folders/<ID>
89
- m = re.search(r"/folders/([A-Za-z0-9_-]+)", raw_id)
90
  if m:
91
- return m.group(1)
92
- # Sometimes users paste file URL that ends with ?usp=sharing
93
- m = re.search(r"/folders/([A-Za-z0-9_-]+)", raw_id.split("?")[0])
94
- if m:
95
- return m.group(1)
96
- # If it's already an ID-ish token
97
- if re.fullmatch(r"[A-Za-z0-9_-]{20,}", raw_id):
98
- return raw_id
99
- return None
100
 
101
 
102
  def _upload_to_drive(local_path: str, service, folder_id: Optional[str] = None,
@@ -154,7 +152,7 @@ def generate_and_upload(points_text: str, title: str,
154
  f"\nDebug: {err}")
155
  return local_png, msg
156
 
157
- # 3) folder id(UI 覆蓋 Secret,並支援整個 URL 自動萃取)
158
  folder_id_env = os.environ.get("DRIVE_FOLDER_ID", "").strip()
159
  raw_folder = (drive_folder_id_input or folder_id_env or "").strip()
160
  folder_id = _normalize_folder_id(raw_folder)
@@ -306,19 +304,4 @@ with gr.Blocks(title="Map → Google Drive Uploader") as demo:
306
  list_btn = gr.Button("📄 列出資料夾內容")
307
 
308
  with gr.Column():
309
- out_image = gr.Image(label="Preview", type="filepath")
310
- out_msg = gr.Markdown(label="Result / Link")
311
- cfg_out = gr.Markdown(label="Debug")
312
- list_out = gr.Markdown(label="Folder Listing")
313
-
314
- run_btn.click(
315
- fn=generate_and_upload,
316
- inputs=[points_in, title_in, min_lon_in, max_lon_in, min_lat_in, max_lat_in,
317
- folder_id_in, make_public_in],
318
- outputs=[out_image, out_msg],
319
- )
320
- cfg_btn.click(fn=check_config, inputs=None, outputs=cfg_out)
321
- list_btn.click(fn=list_folder_contents, inputs=folder_id_in, outputs=list_out)
322
-
323
- if __name__ == "__main__":
324
- demo.launch()
 
81
 
82
 
83
  def _normalize_folder_id(raw_id: str) -> Optional[str]:
84
+ """Accept a bare ID or a full Drive URL; return clean folder ID."""
85
  if not raw_id:
86
  return None
87
+ raw = raw_id.strip()
88
+ # from full URL
89
+ m = re.search(r"/folders/([A-Za-z0-9_-]+)", raw)
90
  if m:
91
+ raw = m.group(1)
92
+ # drop query string
93
+ raw = raw.split("?")[0]
94
+ # drop常見結尾符號(避免誤貼 '...-dRo.' 或全形符號)
95
+ raw = raw.rstrip(" .。;;,,』」)」)】]}")
96
+ # validate
97
+ return raw if re.fullmatch(r"[A-Za-z0-9_-]{20,}", raw) else None
 
 
98
 
99
 
100
  def _upload_to_drive(local_path: str, service, folder_id: Optional[str] = None,
 
152
  f"\nDebug: {err}")
153
  return local_png, msg
154
 
155
+ # 3) folder id(UI 覆蓋 Secret,並支援整個 URL 自動萃取 + 去尾端符號)
156
  folder_id_env = os.environ.get("DRIVE_FOLDER_ID", "").strip()
157
  raw_folder = (drive_folder_id_input or folder_id_env or "").strip()
158
  folder_id = _normalize_folder_id(raw_folder)
 
304
  list_btn = gr.Button("📄 列出資料夾內容")
305
 
306
  with gr.Column():
307
+ out_image =