Path LineNumber Line ---- ---------- ---- D:\honghee\blog_api\0605-1-shorts_ai_api.py 27 from config import STORAGE_DIR D:\honghee\blog_api\0605-1-shorts_ai_api.py 33 os.makedirs(STORAGE_DIR, exist_ok=True) D:\honghee\blog_api\0605-1-shorts_ai_api.py 77 def naver_session_storage_path(realtor_id): D:\honghee\blog_api\0605-1-shorts_ai_api.py 78 session_dir = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\0605-1-shorts_ai_api.py 87 def mybox_admin_session_storage_path(): D:\honghee\blog_api\0605-1-shorts_ai_api.py 88 session_dir = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\0605-1-shorts_ai_api.py 93 "naver_session_admin_mybox.json" D:\honghee\blog_api\0605-1-shorts_ai_api.py 115 # 파이썬 서버 로컬 MYBOX 템플릿/생성 폴더 D:\honghee\blog_api\0605-1-shorts_ai_api.py 116 MYBOX_LOCAL_ROOT = "D:/honghee/blog_api/mybox" D:\honghee\blog_api\0605-1-shorts_ai_api.py 117 MYBOX_HEADER_BG_DIR = os.path.join(MYBOX_LOCAL_ROOT, "head... D:\honghee\blog_api\0605-1-shorts_ai_api.py 118 MYBOX_GENERATED_HEADER_DIR = os.path.join(MYBOX_LOCAL_ROOT... D:\honghee\blog_api\0605-1-shorts_ai_api.py 733 # 관리자 MYBOX 세션/업로드 API Step1 D:\honghee\blog_api\0605-1-shorts_ai_api.py 736 def normalize_mybox_folder_path(folder_path): D:\honghee\blog_api\0605-1-shorts_ai_api.py 743 def safe_mybox_folder_part(value): D:\honghee\blog_api\0605-1-shorts_ai_api.py 750 def mybox_default_folder_for_asset(asset_type="header_imag... D:\honghee\blog_api\0605-1-shorts_ai_api.py 753 article_no = safe_mybox_folder_part(article_no or "com... D:\honghee\blog_api\0605-1-shorts_ai_api.py 767 @app.route("/mybox-session-check", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 768 def mybox_session_check(): D:\honghee\blog_api\0605-1-shorts_ai_api.py 772 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\0605-1-shorts_ai_api.py 774 if not os.path.exists(storage_file): D:\honghee\blog_api\0605-1-shorts_ai_api.py 779 "message": "관리자 MYBOX 세션 파일이 없습니다.", D:\honghee\blog_api\0605-1-shorts_ai_api.py 780 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\0605-1-shorts_ai_api.py 784 file_size = os.path.getsize(storage_file) D:\honghee\blog_api\0605-1-shorts_ai_api.py 787 time.localtime(os.path.getmtime(storage_file)) D:\honghee\blog_api\0605-1-shorts_ai_api.py 790 with open(storage_file, "r", encoding="utf-8") as f: D:\honghee\blog_api\0605-1-shorts_ai_api.py 800 "message": "관리자 MYBOX 세션 파일 확인 완료", D:\honghee\blog_api\0605-1-shorts_ai_api.py 801 "storage_file": storage_file.replace("\\", "/"), D:\honghee\blog_api\0605-1-shorts_ai_api.py 813 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\0605-1-shorts_ai_api.py 817 @app.route("/mybox-login", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 818 def mybox_login(): D:\honghee\blog_api\0605-1-shorts_ai_api.py 825 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\0605-1-shorts_ai_api.py 843 page.goto("https://mybox.naver.com/", wait_unt... D:\honghee\blog_api\0605-1-shorts_ai_api.py 876 page.goto("https://mybox.naver.com/", wait... D:\honghee\blog_api\0605-1-shorts_ai_api.py 881 context.storage_state(path=storage_file) D:\honghee\blog_api\0605-1-shorts_ai_api.py 886 "message": "관리자 MYBOX 세션 저장 완료", D:\honghee\blog_api\0605-1-shorts_ai_api.py 888 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\0605-1-shorts_ai_api.py 898 def mybox_try_upload_with_playwright(local_path, target_fo... D:\honghee\blog_api\0605-1-shorts_ai_api.py 900 MYBOX 업로드 1차 자동화. D:\honghee\blog_api\0605-1-shorts_ai_api.py 901 NAVER MYBOX UI 변경 가능성이 있으므로 실패해도 예외 메시지를 반환한다. D:\honghee\blog_api\0605-1-shorts_ai_api.py 904 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\0605-1-shorts_ai_api.py 906 if not os.path.exists(storage_file): D:\honghee\blog_api\0605-1-shorts_ai_api.py 907 raise Exception("관리자 MYBOX 세션 파일이 없습니다. /mybox-log... D:\honghee\blog_api\0605-1-shorts_ai_api.py 912 target_folder = normalize_mybox_folder_path(target_fol... D:\honghee\blog_api\0605-1-shorts_ai_api.py 924 storage_state=storage_file, D:\honghee\blog_api\0605-1-shorts_ai_api.py 930 page.goto("https://mybox.naver.com/", wait_until="... D:\honghee\blog_api\0605-1-shorts_ai_api.py 940 if "로그인" in page_text and "MYBOX" not in page_text: D:\honghee\blog_api\0605-1-shorts_ai_api.py 942 raise Exception("MYBOX 세션이 만료된 것으로 보입니다. 관리자 M... D:\honghee\blog_api\0605-1-shorts_ai_api.py 945 # 1차에서는 현재 MYBOX 위치에 업로드한다. D:\honghee\blog_api\0605-1-shorts_ai_api.py 978 raise Exception(f"MYBOX 파일 input 업로드 실패: {e}") D:\honghee\blog_api\0605-1-shorts_ai_api.py 982 raise Exception("MYBOX 업로드 input[type=file]을 찾... D:\honghee\blog_api\0605-1-shorts_ai_api.py 986 context.storage_state(path=storage_file) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1000 @app.route("/mybox-upload-file", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1001 def mybox_upload_file(): D:\honghee\blog_api\0605-1-shorts_ai_api.py 1022 target_folder = mybox_default_folder_for_asset(ass... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1025 result = mybox_try_upload_with_playwright( D:\honghee\blog_api\0605-1-shorts_ai_api.py 1032 # MYBOX의 실제 공유/CDN URL 추출은 Step2에서 별도 구현한다. D:\honghee\blog_api\0605-1-shorts_ai_api.py 1035 "message": "MYBOX 업로드 시도 완료", D:\honghee\blog_api\0605-1-shorts_ai_api.py 1041 "mybox_uploaded": True, D:\honghee\blog_api\0605-1-shorts_ai_api.py 1042 "mybox_url": "", D:\honghee\blog_api\0605-1-shorts_ai_api.py 1043 "mybox_page_url": result.get("current_url", ""), D:\honghee\blog_api\0605-1-shorts_ai_api.py 1044 "note": "Step1은 MYBOX 업로드 성공 확인 단계입니다. 공유/CDN ... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1059 @app.route("/naver-auto-login", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1092 storage_file = naver_session_storage_path(realtor_id) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1168 context.storage_state(path=storage_file) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1170 with open(storage_file, "r", encoding="utf-8")... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1226 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\0605-1-shorts_ai_api.py 1278 storage_file = os.path.join( D:\honghee\blog_api\0605-1-shorts_ai_api.py 1279 STORAGE_DIR, D:\honghee\blog_api\0605-1-shorts_ai_api.py 1416 context.storage_state( D:\honghee\blog_api\0605-1-shorts_ai_api.py 1417 path=storage_file D:\honghee\blog_api\0605-1-shorts_ai_api.py 1419 print("STORAGE FILE:", storage_file) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1421 print("FILE EXISTS:", os.path.exists(storage_f... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1426 with open(storage_file, "r", encoding="utf... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1538 @app.route("/generate-script", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1611 @app.route("/generate-realestate-blog-text", methods=["POS... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1728 "url": f"http://61.32.69.107:9000/temp/{filena... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1752 @app.route("/render-video", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1881 video_url = f"http://61.32.69.107:9000/outputs/{vi... D:\honghee\blog_api\0605-1-shorts_ai_api.py 1927 HEADER_IMAGE_DIR = MYBOX_GENERATED_HEADER_DIR D:\honghee\blog_api\0605-1-shorts_ai_api.py 1929 os.makedirs(MYBOX_HEADER_BG_DIR, exist_ok=True) D:\honghee\blog_api\0605-1-shorts_ai_api.py 1984 out_dir = os.path.join(MYBOX_GENERATED_HEADER_DIR, yea... D:\honghee\blog_api\0605-1-shorts_ai_api.py 2005 os.path.join(MYBOX_HEADER_BG_DIR, property_type), D:\honghee\blog_api\0605-1-shorts_ai_api.py 2006 os.path.join(MYBOX_HEADER_BG_DIR, "etc"), D:\honghee\blog_api\0605-1-shorts_ai_api.py 2007 MYBOX_HEADER_BG_DIR, D:\honghee\blog_api\0605-1-shorts_ai_api.py 2510 relative = os.path.relpath(output_path, MYBOX_LOCAL_RO... D:\honghee\blog_api\0605-1-shorts_ai_api.py 2511 image_url = f"http://61.32.69.107:9000/mybox/{relative}" D:\honghee\blog_api\0605-1-shorts_ai_api.py 2534 @app.route("/generate-header-image", methods=["POST"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 2557 @app.route("/mybox/", methods=["GET"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 2558 def serve_mybox_file(filename): D:\honghee\blog_api\0605-1-shorts_ai_api.py 2559 return send_from_directory(MYBOX_LOCAL_ROOT, filename,... D:\honghee\blog_api\0605-1-shorts_ai_api.py 2562 @app.route("/storage", methods=["GET"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 2563 @app.route("/storage/", methods=["GET"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 2564 def storage_index(): D:\honghee\blog_api\0605-1-shorts_ai_api.py 2567 "message": "storage route is running", D:\honghee\blog_api\0605-1-shorts_ai_api.py 2568 "storage_dir": STORAGE_DIR D:\honghee\blog_api\0605-1-shorts_ai_api.py 2571 @app.route("/storage/", methods=["GET"]) D:\honghee\blog_api\0605-1-shorts_ai_api.py 2572 def serve_storage_file(filename): D:\honghee\blog_api\0605-1-shorts_ai_api.py 2573 return send_from_directory(STORAGE_DIR, filename, as_a... D:\honghee\blog_api\0605-1-shorts_ai_api.py 2575 @app.route("/collect-realtor-articles", methods=["POST"]) D:\honghee\blog_api\config.py 34 STORAGE_DIR = "D:/honghee/blog_api/storage" D:\honghee\blog_api\config.py 42 "http://61.32.69.107:9000/storage" D:\honghee\blog_api\mybox_session_api_patch.py 3 shorts_ai_api.py 에 추가할 관리자 MYBOX 세션 엔드포인트 패치입니다. D:\honghee\blog_api\mybox_session_api_patch.py 6 - naver_session_storage_path() 함수 아래 또는 /naver-auto-login ... D:\honghee\blog_api\mybox_session_api_patch.py 10 - /mybox-session-check D:\honghee\blog_api\mybox_session_api_patch.py 11 - /mybox-login D:\honghee\blog_api\mybox_session_api_patch.py 13 관리자 MYBOX는 중개사별 세션이 아니라 단일 관리자 세션을 사용합니다. D:\honghee\blog_api\mybox_session_api_patch.py 15 storage/naver_sessions/naver_session_admin_mybox.json D:\honghee\blog_api\mybox_session_api_patch.py 18 def mybox_admin_session_storage_path(): D:\honghee\blog_api\mybox_session_api_patch.py 19 session_dir = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\mybox_session_api_patch.py 21 return os.path.join(session_dir, "naver_session_admin_... D:\honghee\blog_api\mybox_session_api_patch.py 24 @app.route("/mybox-session-check", methods=["POST"]) D:\honghee\blog_api\mybox_session_api_patch.py 25 def mybox_session_check(): D:\honghee\blog_api\mybox_session_api_patch.py 29 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\mybox_session_api_patch.py 31 if not os.path.exists(storage_file): D:\honghee\blog_api\mybox_session_api_patch.py 36 "message": "관리자 MYBOX 세션 파일이 없습니다.", D:\honghee\blog_api\mybox_session_api_patch.py 37 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\mybox_session_api_patch.py 41 file_size = os.path.getsize(storage_file) D:\honghee\blog_api\mybox_session_api_patch.py 44 time.localtime(os.path.getmtime(storage_file)) D:\honghee\blog_api\mybox_session_api_patch.py 50 with open(storage_file, "r", encoding="utf-8") as f: D:\honghee\blog_api\mybox_session_api_patch.py 59 "message": "관리자 MYBOX 세션 파일 확인 완료", D:\honghee\blog_api\mybox_session_api_patch.py 60 "storage_file": storage_file.replace("\\", "/"), D:\honghee\blog_api\mybox_session_api_patch.py 72 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\mybox_session_api_patch.py 76 @app.route("/mybox-login", methods=["POST"]) D:\honghee\blog_api\mybox_session_api_patch.py 77 def mybox_login(): D:\honghee\blog_api\mybox_session_api_patch.py 90 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\mybox_session_api_patch.py 108 # MYBOX로 바로 이동하면 로그인 후 다시 MYBOX로 돌아오기 쉽습니다. D:\honghee\blog_api\mybox_session_api_patch.py 109 page.goto("https://mybox.naver.com/", wait_unt... D:\honghee\blog_api\mybox_session_api_patch.py 143 # MYBOX 접근 확인 D:\honghee\blog_api\mybox_session_api_patch.py 145 page.goto("https://mybox.naver.com/", wait... D:\honghee\blog_api\mybox_session_api_patch.py 150 context.storage_state(path=storage_file) D:\honghee\blog_api\mybox_session_api_patch.py 155 "message": "관리자 MYBOX 세션 저장 완료", D:\honghee\blog_api\mybox_session_api_patch.py 157 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\publish_worker.py 8 from config import STORAGE_DIR D:\honghee\blog_api\publish_worker.py 12 SESSION_DIR = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\publish_worker.py 342 storage_state=session_file, D:\honghee\blog_api\shorts_ai_api.py 27 from config import STORAGE_DIR D:\honghee\blog_api\shorts_ai_api.py 33 os.makedirs(STORAGE_DIR, exist_ok=True) D:\honghee\blog_api\shorts_ai_api.py 77 def naver_session_storage_path(realtor_id): D:\honghee\blog_api\shorts_ai_api.py 78 session_dir = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\shorts_ai_api.py 87 def mybox_admin_session_storage_path(): D:\honghee\blog_api\shorts_ai_api.py 88 session_dir = os.path.join(STORAGE_DIR, "naver_sessions") D:\honghee\blog_api\shorts_ai_api.py 93 "naver_session_admin_mybox.json" D:\honghee\blog_api\shorts_ai_api.py 115 # 파이썬 서버 로컬 MYBOX 템플릿/생성 폴더 D:\honghee\blog_api\shorts_ai_api.py 116 MYBOX_LOCAL_ROOT = "D:/honghee/blog_api/mybox" D:\honghee\blog_api\shorts_ai_api.py 117 MYBOX_HEADER_BG_DIR = os.path.join(MYBOX_LOCAL_ROOT, "head... D:\honghee\blog_api\shorts_ai_api.py 118 MYBOX_GENERATED_HEADER_DIR = os.path.join(MYBOX_LOCAL_ROOT... D:\honghee\blog_api\shorts_ai_api.py 733 # 관리자 MYBOX 세션/업로드 API Step1 D:\honghee\blog_api\shorts_ai_api.py 736 def normalize_mybox_folder_path(folder_path): D:\honghee\blog_api\shorts_ai_api.py 743 def safe_mybox_folder_part(value): D:\honghee\blog_api\shorts_ai_api.py 750 def mybox_default_folder_for_asset(asset_type="header_imag... D:\honghee\blog_api\shorts_ai_api.py 753 article_no = safe_mybox_folder_part(article_no or "com... D:\honghee\blog_api\shorts_ai_api.py 767 @app.route("/mybox-session-check", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 768 def mybox_session_check(): D:\honghee\blog_api\shorts_ai_api.py 772 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\shorts_ai_api.py 774 if not os.path.exists(storage_file): D:\honghee\blog_api\shorts_ai_api.py 779 "message": "관리자 MYBOX 세션 파일이 없습니다.", D:\honghee\blog_api\shorts_ai_api.py 780 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\shorts_ai_api.py 784 file_size = os.path.getsize(storage_file) D:\honghee\blog_api\shorts_ai_api.py 787 time.localtime(os.path.getmtime(storage_file)) D:\honghee\blog_api\shorts_ai_api.py 790 with open(storage_file, "r", encoding="utf-8") as f: D:\honghee\blog_api\shorts_ai_api.py 800 "message": "관리자 MYBOX 세션 파일 확인 완료", D:\honghee\blog_api\shorts_ai_api.py 801 "storage_file": storage_file.replace("\\", "/"), D:\honghee\blog_api\shorts_ai_api.py 813 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\shorts_ai_api.py 817 @app.route("/mybox-login", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 818 def mybox_login(): D:\honghee\blog_api\shorts_ai_api.py 825 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\shorts_ai_api.py 843 page.goto("https://mybox.naver.com/", wait_unt... D:\honghee\blog_api\shorts_ai_api.py 876 page.goto("https://mybox.naver.com/", wait... D:\honghee\blog_api\shorts_ai_api.py 881 context.storage_state(path=storage_file) D:\honghee\blog_api\shorts_ai_api.py 886 "message": "관리자 MYBOX 세션 저장 완료", D:\honghee\blog_api\shorts_ai_api.py 888 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\shorts_ai_api.py 899 def mybox_is_introduce_or_not_ready(page): D:\honghee\blog_api\shorts_ai_api.py 911 introduce_words = ["시작하기", "MYBOX 소개", "마이박스 소개", "abo... D:\honghee\blog_api\shorts_ai_api.py 922 def mybox_wait_file_home(page): D:\honghee\blog_api\shorts_ai_api.py 924 MYBOX 파일함 진입 확인. D:\honghee\blog_api\shorts_ai_api.py 928 "https://mybox.naver.com/my", D:\honghee\blog_api\shorts_ai_api.py 929 "https://mybox.naver.com/", D:\honghee\blog_api\shorts_ai_api.py 954 "MYBOX 파일함 화면에 진입하지 못했습니다. " D:\honghee\blog_api\shorts_ai_api.py 955 "관리자 계정으로 MYBOX 시작/동의/초기 설정을 완료한 뒤 세션을 다시 생성하세요. " D:\honghee\blog_api\shorts_ai_api.py 960 def mybox_find_click_text(page, text_value, timeout=3000): D:\honghee\blog_api\shorts_ai_api.py 984 def mybox_create_folder_if_needed(page, folder_name): D:\honghee\blog_api\shorts_ai_api.py 986 현재 MYBOX 위치에서 folder_name 폴더가 보이면 진입, D:\honghee\blog_api\shorts_ai_api.py 989 folder_name = safe_mybox_folder_part(folder_name) D:\honghee\blog_api\shorts_ai_api.py 994 if mybox_find_click_text(page, folder_name, timeout=25... D:\honghee\blog_api\shorts_ai_api.py 1025 raise Exception(f"MYBOX 새 폴더 버튼을 찾지 못했습니다. folder=... D:\honghee\blog_api\shorts_ai_api.py 1048 raise Exception(f"MYBOX 새 폴더명 입력창을 찾지 못했습니다. folde... D:\honghee\blog_api\shorts_ai_api.py 1079 if mybox_find_click_text(page, folder_name, timeout=50... D:\honghee\blog_api\shorts_ai_api.py 1083 raise Exception(f"MYBOX 폴더 생성 후 진입 실패: {folder_name}") D:\honghee\blog_api\shorts_ai_api.py 1086 def mybox_ensure_target_folder(page, target_folder): D:\honghee\blog_api\shorts_ai_api.py 1091 target_folder = normalize_mybox_folder_path(target_fol... D:\honghee\blog_api\shorts_ai_api.py 1098 mybox_create_folder_if_needed(page, part) D:\honghee\blog_api\shorts_ai_api.py 1104 def mybox_try_upload_with_playwright(local_path, target_fo... D:\honghee\blog_api\shorts_ai_api.py 1106 MYBOX 업로드 자동화 V1.1 D:\honghee\blog_api\shorts_ai_api.py 1115 storage_file = mybox_admin_session_storage_path() D:\honghee\blog_api\shorts_ai_api.py 1117 if not os.path.exists(storage_file): D:\honghee\blog_api\shorts_ai_api.py 1118 raise Exception("관리자 MYBOX 세션 파일이 없습니다. /mybox-log... D:\honghee\blog_api\shorts_ai_api.py 1123 target_folder = normalize_mybox_folder_path(target_fol... D:\honghee\blog_api\shorts_ai_api.py 1135 storage_state=storage_file, D:\honghee\blog_api\shorts_ai_api.py 1141 # MYBOX 파일함 진입 검증 D:\honghee\blog_api\shorts_ai_api.py 1142 mybox_wait_file_home(page) D:\honghee\blog_api\shorts_ai_api.py 1153 and "MYBOX" not in page_text D:\honghee\blog_api\shorts_ai_api.py 1156 raise Exception("MYBOX 세션이 만료된 것으로 보입니다. 관리자 M... D:\honghee\blog_api\shorts_ai_api.py 1160 mybox_ensure_target_folder(page, target_folder) D:\honghee\blog_api\shorts_ai_api.py 1271 debug_dir = os.path.join(STORAGE_DIR, "deb... D:\honghee\blog_api\shorts_ai_api.py 1273 screenshot_path = os.path.join(debug_dir, ... D:\honghee\blog_api\shorts_ai_api.py 1281 "MYBOX 업로드 파일 선택창을 열지 못했습니다. " D:\honghee\blog_api\shorts_ai_api.py 1285 # 업로드 완료 대기. MYBOX UI는 상태 문구가 상황마다 달라서 넉넉히 대기한다. D:\honghee\blog_api\shorts_ai_api.py 1290 context.storage_state(path=storage_file) D:\honghee\blog_api\shorts_ai_api.py 1311 @app.route("/mybox-upload-file", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 1312 def mybox_upload_file(): D:\honghee\blog_api\shorts_ai_api.py 1333 target_folder = mybox_default_folder_for_asset(ass... D:\honghee\blog_api\shorts_ai_api.py 1336 result = mybox_try_upload_with_playwright( D:\honghee\blog_api\shorts_ai_api.py 1343 # MYBOX의 실제 공유/CDN URL 추출은 Step2에서 별도 구현한다. D:\honghee\blog_api\shorts_ai_api.py 1346 "message": "MYBOX 업로드 시도 완료", D:\honghee\blog_api\shorts_ai_api.py 1352 "mybox_uploaded": True, D:\honghee\blog_api\shorts_ai_api.py 1353 "mybox_url": "", D:\honghee\blog_api\shorts_ai_api.py 1354 "mybox_page_url": result.get("current_url", ""), D:\honghee\blog_api\shorts_ai_api.py 1355 "note": "Step1은 MYBOX 업로드 성공 확인 단계입니다. 공유/CDN ... D:\honghee\blog_api\shorts_ai_api.py 1370 @app.route("/naver-auto-login", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 1403 storage_file = naver_session_storage_path(realtor_id) D:\honghee\blog_api\shorts_ai_api.py 1479 context.storage_state(path=storage_file) D:\honghee\blog_api\shorts_ai_api.py 1481 with open(storage_file, "r", encoding="utf-8")... D:\honghee\blog_api\shorts_ai_api.py 1537 "storage_file": storage_file.replace("\\", "/") D:\honghee\blog_api\shorts_ai_api.py 1589 storage_file = os.path.join( D:\honghee\blog_api\shorts_ai_api.py 1590 STORAGE_DIR, D:\honghee\blog_api\shorts_ai_api.py 1727 context.storage_state( D:\honghee\blog_api\shorts_ai_api.py 1728 path=storage_file D:\honghee\blog_api\shorts_ai_api.py 1730 print("STORAGE FILE:", storage_file) D:\honghee\blog_api\shorts_ai_api.py 1732 print("FILE EXISTS:", os.path.exists(storage_f... D:\honghee\blog_api\shorts_ai_api.py 1737 with open(storage_file, "r", encoding="utf... D:\honghee\blog_api\shorts_ai_api.py 1849 @app.route("/generate-script", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 1922 @app.route("/generate-realestate-blog-text", methods=["POS... D:\honghee\blog_api\shorts_ai_api.py 2039 "url": f"http://61.32.69.107:9000/temp/{filena... D:\honghee\blog_api\shorts_ai_api.py 2063 @app.route("/render-video", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 2192 video_url = f"http://61.32.69.107:9000/outputs/{vi... D:\honghee\blog_api\shorts_ai_api.py 2238 HEADER_IMAGE_DIR = MYBOX_GENERATED_HEADER_DIR D:\honghee\blog_api\shorts_ai_api.py 2240 os.makedirs(MYBOX_HEADER_BG_DIR, exist_ok=True) D:\honghee\blog_api\shorts_ai_api.py 2295 out_dir = os.path.join(MYBOX_GENERATED_HEADER_DIR, yea... D:\honghee\blog_api\shorts_ai_api.py 2316 os.path.join(MYBOX_HEADER_BG_DIR, property_type), D:\honghee\blog_api\shorts_ai_api.py 2317 os.path.join(MYBOX_HEADER_BG_DIR, "etc"), D:\honghee\blog_api\shorts_ai_api.py 2318 MYBOX_HEADER_BG_DIR, D:\honghee\blog_api\shorts_ai_api.py 3224 relative = os.path.relpath(output_path, MYBOX_LOCAL_RO... D:\honghee\blog_api\shorts_ai_api.py 3225 image_url = f"http://61.32.69.107:9000/mybox/{relative}" D:\honghee\blog_api\shorts_ai_api.py 3251 @app.route("/generate-header-image", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 3279 # - 대표이미지와 동일하게 mybox/generated 아래 PNG 저장 D:\honghee\blog_api\shorts_ai_api.py 3283 MIDDLE_BANNER_GENERATED_DIR = os.path.join(MYBOX_LOCAL_ROO... D:\honghee\blog_api\shorts_ai_api.py 3299 os.path.join(MYBOX_HEADER_BG_DIR, property_type), D:\honghee\blog_api\shorts_ai_api.py 3300 os.path.join(MYBOX_HEADER_BG_DIR, "officetel"), D:\honghee\blog_api\shorts_ai_api.py 3301 os.path.join(MYBOX_HEADER_BG_DIR, "apt"), D:\honghee\blog_api\shorts_ai_api.py 3302 os.path.join(MYBOX_HEADER_BG_DIR, "etc"), D:\honghee\blog_api\shorts_ai_api.py 3303 MYBOX_HEADER_BG_DIR, D:\honghee\blog_api\shorts_ai_api.py 3484 relative = os.path.relpath(output_path, MYBOX_LOCAL_RO... D:\honghee\blog_api\shorts_ai_api.py 3485 image_url = f"http://61.32.69.107:9000/mybox/{relative}" D:\honghee\blog_api\shorts_ai_api.py 3504 @app.route("/generate-middle-banner-image", methods=["POST"]) D:\honghee\blog_api\shorts_ai_api.py 3528 @app.route("/mybox/", methods=["GET"]) D:\honghee\blog_api\shorts_ai_api.py 3529 def serve_mybox_file(filename): D:\honghee\blog_api\shorts_ai_api.py 3530 return send_from_directory(MYBOX_LOCAL_ROOT, filename,... D:\honghee\blog_api\shorts_ai_api.py 3533 @app.route("/storage", methods=["GET"]) D:\honghee\blog_api\shorts_ai_api.py 3534 @app.route("/storage/", methods=["GET"]) D:\honghee\blog_api\shorts_ai_api.py 3535 def storage_index(): D:\honghee\blog_api\shorts_ai_api.py 3538 "message": "storage route is running", D:\honghee\blog_api\shorts_ai_api.py 3539 "storage_dir": STORAGE_DIR D:\honghee\blog_api\shorts_ai_api.py 3542 @app.route("/storage/", methods=["GET"]) D:\honghee\blog_api\shorts_ai_api.py 3543 def serve_storage_file(filename): D:\honghee\blog_api\shorts_ai_api.py 3544 return send_from_directory(STORAGE_DIR, filename, as_a... D:\honghee\blog_api\shorts_ai_api.py 3546 @app.route("/collect-realtor-articles", methods=["POST"])