From 77662aefa60fbffd0decb8f8a56f9410d22de111 Mon Sep 17 00:00:00 2001 From: "68893236+KINDNICK@users.noreply.github.com" <68893236+KINDNICK@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:05:01 +0900 Subject: [PATCH] =?UTF-8?q?ADD=20:=20=ED=94=84=EB=9E=8D=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Partners/(주)세광종합기술단.png | Bin 6660 -> 12976 bytes Partners/메가메타.jpg | Bin 18603 -> 19230 bytes css/props.css | 432 ++++++++++++++++++++++++++++++++ data/props.json | 4 + js/props.js | 308 +++++++++++++++++++++++ props.html | 121 +++++++++ server.py | 86 +++++++ 7 files changed, 951 insertions(+) create mode 100644 css/props.css create mode 100644 data/props.json create mode 100644 js/props.js create mode 100644 props.html diff --git a/Partners/(주)세광종합기술단.png b/Partners/(주)세광종합기술단.png index dcfb2e2541d2067b35f8c6f8bf9a9d879a43e2db..eefff33ff9e0bdaaea1db915569ceab688c71a05 100644 GIT binary patch literal 12976 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 Kty+|Q^#1^--c2L` diff --git a/Partners/메가메타.jpg b/Partners/메가메타.jpg index f49d5d3eb07ca0eb12a07416087b0ee46195364b..3d5f3fd072d2571547889ae34227fc18f6fe76d4 100644 GIT binary patch literal 19230 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 a?47WgT>B}xuJ-3o { + searchQuery = e.target.value.toLowerCase(); + filterAndRender(); + }, 300)); + + // 뷰 전환 + document.querySelectorAll('.view-btn').forEach(btn => { + btn.addEventListener('click', () => { + document.querySelectorAll('.view-btn').forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + currentView = btn.dataset.view; + updateViewMode(); + }); + }); + + // 모달 닫기 + elements.imageModal.querySelector('.modal-overlay').addEventListener('click', closeModal); + elements.imageModal.querySelector('.modal-close').addEventListener('click', closeModal); + + // ESC 키로 모달 닫기 + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') closeModal(); + }); + } + + /** + * 필터링 및 렌더링 + */ + function filterAndRender() { + // 필터링 + filteredData = propsData.filter(prop => { + // 검색 필터 + if (searchQuery) { + const searchTarget = prop.name.toLowerCase(); + if (!searchTarget.includes(searchQuery)) { + return false; + } + } + + return true; + }); + + // 통계 업데이트 + elements.filteredCount.textContent = filteredData.length; + + // 렌더링 + render(); + } + + /** + * 카드 렌더링 + */ + function render() { + // 로딩/에러 상태 숨기기 + const loadingPlaceholder = elements.grid.querySelector('.loading-placeholder'); + if (loadingPlaceholder) { + loadingPlaceholder.remove(); + } + + elements.noData.style.display = 'none'; + elements.noResults.style.display = 'none'; + + // 데이터 없음 + if (propsData.length === 0) { + elements.grid.innerHTML = ''; + showNoData(); + return; + } + + // 검색 결과 없음 + if (filteredData.length === 0) { + elements.grid.innerHTML = ''; + elements.noResults.style.display = 'block'; + return; + } + + // 카드 생성 + elements.grid.innerHTML = filteredData.map(prop => createCard(prop)).join(''); + + // 카드 클릭 이벤트 + elements.grid.querySelectorAll('.prop-card').forEach((card, index) => { + card.addEventListener('click', () => openModal(filteredData[index])); + }); + + // 뷰 모드 적용 + updateViewMode(); + } + + /** + * 카드 HTML 생성 + */ + function createCard(prop) { + const thumbnailHtml = prop.thumbnailUrl + ? `${escapeHtml(prop.name)}` + : `
🎁
`; + + const prefabBadge = prop.prefabCount > 1 + ? `${prop.prefabCount} variants` + : ''; + + return ` +
+
+ ${thumbnailHtml} + ${prefabBadge} +
+
+

${escapeHtml(prop.name)}

+
+ ${prop.prefabCount > 0 ? `📦${prop.prefabCount}` : ''} + ${prop.modelCount > 0 ? `🎨${prop.modelCount}` : ''} +
+
+
+ `; + } + + /** + * 뷰 모드 업데이트 + */ + function updateViewMode() { + elements.grid.classList.toggle('list-view', currentView === 'list'); + } + + /** + * 모달 열기 + */ + function openModal(prop) { + if (prop.thumbnailUrl) { + elements.modalImage.src = prop.thumbnailUrl; + elements.modalImage.alt = prop.name; + } else { + elements.modalImage.src = ''; + elements.modalImage.alt = ''; + } + + elements.modalTitle.textContent = prop.name; + + // 상세 정보 표시 + elements.modalDetails.innerHTML = ` + ${prop.prefabCount > 0 ? ` + + ` : ''} + ${prop.modelCount > 0 ? ` + + ` : ''} + ${prop.textureCount > 0 ? ` + + ` : ''} + ${prop.materialCount > 0 ? ` + + ` : ''} + `; + + elements.imageModal.classList.add('active'); + document.body.style.overflow = 'hidden'; + } + + /** + * 모달 닫기 + */ + function closeModal() { + elements.imageModal.classList.remove('active'); + document.body.style.overflow = ''; + } + + /** + * 데이터 없음 표시 + */ + function showNoData() { + elements.grid.innerHTML = ''; + elements.noData.style.display = 'block'; + } + + /** + * 날짜 포맷 + */ + function formatDate(date) { + return date.toLocaleString('ko-KR', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }); + } + + /** + * HTML 이스케이프 + */ + function escapeHtml(str) { + if (!str) return ''; + const div = document.createElement('div'); + div.textContent = str; + return div.innerHTML; + } + + /** + * 디바운스 + */ + function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; + } + + // 페이지 로드 시 초기화 + document.addEventListener('DOMContentLoaded', init); +})(); diff --git a/props.html b/props.html new file mode 100644 index 0000000..2268a70 --- /dev/null +++ b/props.html @@ -0,0 +1,121 @@ + + + + + + 프랍 라이브러리 - 밍글 스튜디오 + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ + + + +
+ +
+ + +
+
+ + +
+ + 0개 프랍 + + + 0개 표시 중 + +
+ + +
+ +
+
+

프랍 데이터를 불러오는 중...

+
+
+ + + + + + +
+
+ + +
+ + +
+ + + + + +
+
+
© 2025 밍글 스튜디오. All rights reserved.
+
+
+ + + + + + diff --git a/server.py b/server.py index 8aa2f44..f6bbe33 100644 --- a/server.py +++ b/server.py @@ -38,6 +38,7 @@ class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): # API 데이터 파일 경로 BACKGROUNDS_DATA_FILE = 'data/backgrounds.json' + PROPS_DATA_FILE = 'data/props.json' def end_headers(self): # CORS 헤더 추가 (개발용) @@ -64,6 +65,11 @@ class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): self.handle_get_backgrounds() return + # API 엔드포인트: GET /api/props + if parsed_path.path == '/api/props': + self.handle_get_props() + return + # 기본 파일 처리 if self.path == '/': self.path = '/index.html' @@ -85,6 +91,11 @@ class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): self.handle_post_backgrounds() return + # API 엔드포인트: POST /api/props + if parsed_path.path == '/api/props': + self.handle_post_props() + return + # 그 외 POST 요청은 405 반환 self.send_error(405, 'Method Not Allowed') @@ -160,6 +171,78 @@ class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): except Exception as e: self.send_error_json(500, f'데이터 저장 실패: {str(e)}') + def handle_get_props(self): + """프랍 데이터 조회 API""" + try: + if os.path.exists(self.PROPS_DATA_FILE): + with open(self.PROPS_DATA_FILE, 'r', encoding='utf-8') as f: + data = json.load(f) + else: + data = { + 'lastUpdated': datetime.now().isoformat(), + 'props': [] + } + + self.send_response(200) + self.send_header('Content-Type', 'application/json; charset=utf-8') + self.end_headers() + self.wfile.write(json.dumps(data, ensure_ascii=False, indent=2).encode('utf-8')) + + except Exception as e: + self.send_error_json(500, f'데이터 조회 실패: {str(e)}') + + def handle_post_props(self): + """프랍 데이터 업데이트 API""" + try: + # Content-Length 확인 + content_length = int(self.headers.get('Content-Length', 0)) + if content_length == 0: + self.send_error_json(400, '요청 본문이 비어있습니다') + return + + # JSON 데이터 파싱 + post_data = self.rfile.read(content_length) + try: + data = json.loads(post_data.decode('utf-8')) + except json.JSONDecodeError as e: + self.send_error_json(400, f'잘못된 JSON 형식: {str(e)}') + return + + # 데이터 유효성 검사 + if 'props' not in data: + self.send_error_json(400, 'props 필드가 필요합니다') + return + + # lastUpdated 자동 설정 + data['lastUpdated'] = datetime.now().isoformat() + + # 데이터 디렉토리 확인 및 생성 + data_dir = os.path.dirname(self.PROPS_DATA_FILE) + if data_dir and not os.path.exists(data_dir): + os.makedirs(data_dir) + + # 파일 저장 + with open(self.PROPS_DATA_FILE, 'w', encoding='utf-8') as f: + json.dump(data, f, ensure_ascii=False, indent=2) + + # 성공 응답 + response = { + 'success': True, + 'message': f'{len(data["props"])}개의 프랍이 저장되었습니다', + 'lastUpdated': data['lastUpdated'], + 'count': len(data['props']) + } + + self.send_response(200) + self.send_header('Content-Type', 'application/json; charset=utf-8') + self.end_headers() + self.wfile.write(json.dumps(response, ensure_ascii=False).encode('utf-8')) + + print(f"[API] 프랍 데이터 업데이트: {len(data['props'])}개 항목") + + except Exception as e: + self.send_error_json(500, f'데이터 저장 실패: {str(e)}') + def send_error_json(self, code, message): """JSON 형식 에러 응답""" self.send_response(code) @@ -226,10 +309,13 @@ def main(): print(f" Contact: http://localhost:{available_port}/contact") print(f" Q&A: http://localhost:{available_port}/qna") print(f" Backgrounds: http://localhost:{available_port}/backgrounds") + print(f" Props: http://localhost:{available_port}/props") print("="*60) print("API Endpoints:") print(f" GET /api/backgrounds - 배경 데이터 조회") print(f" POST /api/backgrounds - 배경 데이터 업데이트") + print(f" GET /api/props - 프랍 데이터 조회") + print(f" POST /api/props - 프랍 데이터 업데이트") print("="*60) print("External Access Setup:") print(f" 1. Setup port forwarding for port {available_port} on router")