From 2e208aab7103c2a541ac9c1b3db3868408c4e251 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 26 Jul 2026 18:19:40 +0900 Subject: [PATCH] auto: 2026-07-26 18:19 (ESD_LAPTOP) --- .../B04_wf1_Surface_Engine_SheetStore.py | 16 +++++++++++++--- config/config_system.py | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/B04_wf1_Surface/B04_wf1_Surface_Engine_SheetStore.py b/B04_wf1_Surface/B04_wf1_Surface_Engine_SheetStore.py index d2601e8e..61219253 100644 --- a/B04_wf1_Surface/B04_wf1_Surface_Engine_SheetStore.py +++ b/B04_wf1_Surface/B04_wf1_Surface_Engine_SheetStore.py @@ -24,7 +24,11 @@ import urllib.request import zipfile from pathlib import Path -from config.config_system import MAP_SHEETS_DIR, MAP_SHEETS_INDEX_PATH +from config.config_system import ( + MAP_SHEETS_DIR, + MAP_SHEETS_INDEX_PATH, + VWORLD_SESSION_COOKIE, +) from .B04_wf1_Surface_Engine_MapSheet import latlon_to_sheet5k, sheet5k_to_bounds @@ -62,12 +66,18 @@ def search_sheet_files(sheet_no: str, version: int = 2, scale: int = 5000) -> li return data.get("RSLT_DATA") or [] -def download_sheet(sheet_no: str, session_cookie: str, version: int = 2) -> dict: +def download_sheet(sheet_no: str, session_cookie: str = "", version: int = 2) -> dict: """도엽 파일 다운로드 후 영구저장소 등록. 로그인 세션 쿠키 필수. session_cookie: 로그인된 map.vworld.kr 브라우저의 Cookie 헤더 문자열 - (예: "JSESSIONID=..; SSCSID=.."). + (예: "JSESSIONID=..; SSCSID=.."). 생략 시 .env의 VWORLD_SESSION_COOKIE 사용. + 세션은 서버 유휴 타임아웃으로 만료됨 — 만료 시 PermissionError 발생, 쿠키 갱신 필요. """ + session_cookie = session_cookie or VWORLD_SESSION_COOKIE + if not session_cookie: + raise PermissionError( + f"도엽 {sheet_no}: 세션 쿠키 없음 — .env VWORLD_SESSION_COOKIE 설정 또는 수동 다운로드 필요" + ) rows = search_sheet_files(sheet_no, version=version) if not rows: raise LookupError(f"도엽 {sheet_no}: 브이월드 검색 결과 없음") diff --git a/config/config_system.py b/config/config_system.py index 0418cba3..d7446ebb 100644 --- a/config/config_system.py +++ b/config/config_system.py @@ -434,6 +434,10 @@ STORAGE_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "sto MAP_SHEETS_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "map_sheets") MAP_SHEETS_INDEX_PATH = os.path.join(MAP_SHEETS_DIR, "map_sheets_index.json") +# 브이월드 지도서비스 도엽 자동 다운로드용 로그인 세션 쿠키 (.env에 설정, 만료 시 갱신) +# 예: VWORLD_SESSION_COOKIE="JSESSIONID=..; SSCSID=.." +VWORLD_SESSION_COOKIE = os.getenv("VWORLD_SESSION_COOKIE", "") + # 시스템 리소스 로그 (루트 log 폴더에 단일 파일, 1개월 보관) LOG_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "log") RESOURCE_LOG_PATH = os.path.join(LOG_BASE_DIR, "system_resources.log")