// 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);
}
})();