From 30c5f74f0524a31dbeb4ce81760752b8a1eccd11 Mon Sep 17 00:00:00 2001 From: "sungjin.choi" Date: Thu, 28 May 2026 23:44:44 +0900 Subject: [PATCH] fix : main banner modify --- src/views/Main.vue | 64 +++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/src/views/Main.vue b/src/views/Main.vue index e7f16a1..ab48d2b 100644 --- a/src/views/Main.vue +++ b/src/views/Main.vue @@ -6,10 +6,10 @@ SPECIALSOURCE.SYSTEM @@ -157,8 +157,6 @@ const loginPw = ref(''); const activeMenu = ref('main'); const authToken = ref(localStorage.getItem('token')); - -// 🟢 [NEW] 활성화된 테마 상태 제어 변수 (green, amber, vga, ega) const activeTheme = ref('green'); const isProcessing = ref(false); @@ -182,7 +180,7 @@ const rawAscii = ` ╚════██║██╔═══╝ ██╔══╝ ██║ ██║██╔══██║██║ ███████║██║ ███████╗╚██████╗██║██║ ██║███████╗ ╚══════╝╚═╝ ╚══════╝ ╚═════╝╚═╝╚═╝ ╚═╝╚══════╝ -███████╗██████╗ ██╗ ██╗██████╗ ██████╗███████╗ +███████╗ ██████╗ ██╗ ██╗██████╗ ██████╗███████╗ ██╔════╝██╔═══██╗██║ ██║██╔══██╗██╔════╝██╔════╝ ███████╗██║ ██║██║ ██║██████╔╝██║ █████╗ ╚════██║██║ ██║██║ ██║██╔══██╗██║ ██╔══╝ @@ -258,6 +256,7 @@ const triggerOverlayProcess = (durationMs, initialMsg) => { }, stepTime); }; +// 🟢 [보안 & 할당량 디버그 강화] 유튜브 로드 모듈 const apiKey = 'AIzaSyD51LHwqoY8spjq6rsY_RlhBXzb96j7D6o'; const channelId = 'UC8L92ju0V88s6TcmLPb8Bkg'; const maxResults = 8; @@ -266,8 +265,42 @@ const apiUrl = `https://www.googleapis.com/youtube/v3/search?part=snippet&channe const fetchVideos = async () => { try { const res = await axios.get(apiUrl); - videos.value = res.data.items || []; - } catch (err) { console.error("유튜브 로드 실패:", err); } + if (res.data && res.data.items && res.data.items.length > 0) { + videos.value = res.data.items; + } else { + throw new Error("API returned empty items. Check quota."); + } + } catch (err) { + console.error("유튜브 로드 실패 (할당량 초과 또는 키 폐기 가능성):", err); + + // 1) 아래 CRT 모니터 터미널에 해커 감성으로 에러 경고 사출 + setTimeout(() => { + if (termInstance.value) { + termInstance.value.echo(`[[b;red;][WARN]] YOUTUBE API QUOTA EXCEEDED OR KEY REVOKED.`); + termInstance.value.echo(`[[b;var(--tui-color);][SYS]] ENFORCING RETRO INTERFACE STANDBY DATA... SUCCESS.`); + } + }, 1000); + + // 2) [★무적 보정 클로킹] 구글 API가 막혔을 때 화면을 꽉 채워줄 고화질 인프라 더미 데이터 주입 + videos.value = [ + { + id: { videoId: 'dQw4w9WgXcQ' }, // Rick Astley (명예의 전당) + snippet: { title: '> [LIVE] SpecialSource Cloud Pipeline Infrastructure Main Cluster Monitoring' } + }, + { + id: { videoId: 'kJQP7kiw5Fk' }, // Lofi + snippet: { title: '> [TUTORIAL] Automated Backend CI/CD Deploy Workflow on Ugreen NAS' } + }, + { + id: { videoId: '9bZkp7q19f0' }, + snippet: { title: '> [SECURITY] Injecting JASYPT_ENCRYPTOR_PASSWORD to Docker Runtime' } + }, + { + id: { videoId: 'LXb3EKWsInQ' }, + snippet: { title: '> [DATABASE] PostgreSQL Network Routing & Port 5435 Connection Log' } + } + ]; + } }; const openVideo = (id) => window.open(`https://www.youtube.com/watch?v=${id}`); @@ -343,7 +376,7 @@ const handleLoginSubmit = async () => { }; onMounted(() => { - fetchVideos(); + fetchVideos(); // 초기에 무조건 작동 const globaljQuery = window.$; if (globaljQuery && terminalRef.value) { @@ -380,29 +413,24 @@ onMounted(() => { font-family: 'JetBrains Mono', monospace !important; } -/* 🌟 [테마 마스터 서버 변수 선언] */ -/* 🟢 테마 1: 오리지널 P3 녹색 인광 시스템 */ .theme-green { --tui-color: #00ff00; --tui-dim: #008800; --tui-glow: rgba(0, 255, 0, 0.6); --tui-border: rgba(0, 255, 0, 0.2); } -/* 🟠 테마 2: 추억의 허큘리스 플라즈마 호박색(Amber) 단색 시스템 */ .theme-amber { --tui-color: #ffb000; --tui-dim: #aa6600; --tui-glow: rgba(255, 176, 0, 0.6); --tui-border: rgba(255, 176, 0, 0.2); } -/* ⚪ 테마 3: IBM 오리지널 VGA 단색 회색/흰색 시스템 */ .theme-vga { --tui-color: #e2e8f0; --tui-dim: #718096; --tui-glow: rgba(226, 232, 240, 0.4); --tui-border: rgba(226, 232, 240, 0.2); } -/* 🔵 테마 4: 화려한 레트로 사이버 청록색(CGA/EGA Cyan) 시스템 */ .theme-ega { --tui-color: #00ffff; --tui-dim: #008b8b; @@ -412,7 +440,6 @@ onMounted(() => {