// GDM YouTube Downloader - Content Script // Optional: Inject download button on YouTube page (function() { 'use strict'; // Check if we're on a YouTube video page if (!window.location.href.includes('youtube.com/watch')) { return; } // Wait for YouTube player to load const observer = new MutationObserver((mutations, obs) => { const actionBar = document.querySelector('#top-level-buttons-computed'); if (actionBar && !document.getElementById('gdm-download-btn')) { injectButton(actionBar); } }); observer.observe(document.body, { childList: true, subtree: true }); function injectButton(container) { const btn = document.createElement('button'); btn.id = 'gdm-download-btn'; btn.className = 'gdm-yt-btn'; btn.innerHTML = ` ⬇️ GDM `; btn.title = 'GDM으로 다운로드'; btn.addEventListener('click', async (e) => { e.preventDefault(); e.stopPropagation(); btn.disabled = true; btn.innerHTML = '전송중'; try { const response = await chrome.runtime.sendMessage({ action: 'download', url: window.location.href }); if (response && response.ret === 'success') { btn.innerHTML = '완료'; setTimeout(() => { btn.innerHTML = '⬇️GDM'; btn.disabled = false; }, 2000); } else { throw new Error(response?.msg || 'Unknown error'); } } catch (error) { btn.innerHTML = '실패'; console.error('GDM Error:', error); setTimeout(() => { btn.innerHTML = '⬇️GDM'; btn.disabled = false; }, 2000); } }); container.appendChild(btn); } })();