// ==UserScript== // @name 치지직 커스텀 검색 엔진 // @namespace 치지직 커스텀 검색 엔진 // @match *://chzzk.naver.com/* // @version 0.1 // @description 치지직 검색 엔진을 변경합니다 // @icon data:image/png;base64,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 // @author mickey90427 // @grant GM_addStyle // @grant GM_download // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // CSS 추가 GM_addStyle(` #searchBox { position: fixed; top: 50px; left: 50%; transform: translateX(-50%); padding: 10px; background: rgba(255, 255, 255, 0.9); border: 1px solid #ccc; color: #333; z-index: 10000; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); display: none; /* 초기에는 숨김 */ } #searchBox input, #searchBox button, #searchBox textarea { margin: 5px; padding: 5px; font-size: 14px; } #searchBox input, #searchBox textarea { border: 1px solid #ddd; border-radius: 3px; background: #fafafa; color: #333; } #searchBox button { background: #28a745; color: white; border: none; border-radius: 3px; cursor: pointer; } #searchBox button:hover { background: #218838; } #searchBox #searchTerms { margin-top: 10px; max-height: 200px; overflow-y: auto; } #searchBox #searchTerms div { margin: 2px 0; display: flex; align-items: center; cursor: move; } #searchBox #searchTerms div button { margin-left: 10px; background: #dc3545; color: white; border: none; border-radius: 3px; cursor: pointer; } #searchBox #searchTerms div button:hover { background: #c82333; } #searchBox #bulkAddForm { display: none; margin-top: 10px; padding: 10px; background: #f8f9fa; border: 1px solid #ddd; border-radius: 5px; } #searchBox #bulkAddForm label { display: block; margin-top: 10px; } #searchBox #bulkAddForm input[type="file"] { margin-top: 5px; } #searchBox #bulkAddForm textarea { width: 100%; height: 100px; margin-top: 5px; padding: 10px; resize: vertical; } #searchBox #bulkAddForm button { margin-top: 10px; display: block; width: 100%; } `); // 로컬 저장소에서 데이터 로드 및 저장 const loadSearchTerms = () => JSON.parse(localStorage.getItem('searchTerms') || '[]'); const saveSearchTerms = (terms) => localStorage.setItem('searchTerms', JSON.stringify(terms)); const loadPopupOption = () => JSON.parse(localStorage.getItem('popupOption') || 'false'); const savePopupOption = (value) => localStorage.setItem('popupOption', JSON.stringify(value)); const loadAutoSaveOption = () => JSON.parse(localStorage.getItem('autoSaveOption') || 'false'); const saveAutoSaveOption = (value) => localStorage.setItem('autoSaveOption', JSON.stringify(value)); // 검색 박스 생성 const searchBox = document.createElement('div'); searchBox.id = 'searchBox'; searchBox.innerHTML = `
`; document.body.appendChild(searchBox); const searchInput = document.getElementById('searchInput'); const searchButton = document.getElementById('searchButton'); const bulkAddToggle = document.getElementById('bulkAddToggle'); const bulkAddForm = document.getElementById('bulkAddForm'); const fileInput = document.getElementById('fileInput'); const bulkAddInput = document.getElementById('bulkAddInput'); const bulkAddButton = document.getElementById('bulkAddButton'); const exportButton = document.getElementById('exportButton'); const searchTermsDiv = document.getElementById('searchTerms'); const popupOption = document.getElementById('popupOption'); const autoSaveOption = document.getElementById('autoSaveOption'); const overwriteOption = document.getElementById('overwriteOption'); const clearAllButton = document.getElementById('clearAllButton'); // 체크박스 상태 설정 popupOption.checked = loadPopupOption(); autoSaveOption.checked = loadAutoSaveOption(); overwriteOption.checked = false; // 검색어 목록 갱신 const updateSearchTerms = () => { const terms = loadSearchTerms(); searchTermsDiv.innerHTML = ''; terms.forEach((term, index) => { const termDiv = document.createElement('div'); termDiv.textContent = term; termDiv.draggable = true; termDiv.dataset.index = index; termDiv.ondragstart = (e) => { e.dataTransfer.setData('text/plain', index); }; termDiv.ondragover = (e) => { e.preventDefault(); }; termDiv.ondrop = (e) => { e.preventDefault(); const fromIndex = e.dataTransfer.getData('text/plain'); const toIndex = e.target.dataset.index; if (fromIndex !== toIndex) { const terms = loadSearchTerms(); const movedItem = terms.splice(fromIndex, 1)[0]; terms.splice(toIndex, 0, movedItem); saveSearchTerms(terms); updateSearchTerms(); } }; const searchTermButton = document.createElement('button'); searchTermButton.textContent = '검색'; searchTermButton.onclick = () => { searchInput.value = term; search(); }; const deleteButton = document.createElement('button'); deleteButton.textContent = '삭제'; deleteButton.onclick = (event) => { event.stopPropagation(); // 이벤트 전파 중지 const existingTerms = loadSearchTerms(); if (existingTerms.includes(term)) { const newTerms = existingTerms.filter(t => t !== term); saveSearchTerms(newTerms); updateSearchTerms(); } }; termDiv.appendChild(searchTermButton); termDiv.appendChild(deleteButton); searchTermsDiv.appendChild(termDiv); }); }; // 대량 추가 기능 const bulkAdd = () => { const newTerms = bulkAddInput.value .split('\n') .map(term => term.trim()) .filter(term => term.length > 0); if (overwriteOption.checked) { saveSearchTerms(newTerms); // 덮어쓰기 활성화 시 새로 입력한 검색어로 전체 교체 } else { const existingTerms = loadSearchTerms(); const uniqueTerms = new Set([...existingTerms, ...newTerms]); saveSearchTerms([...uniqueTerms]); // 중복 제거 후 저장 } updateSearchTerms(); bulkAddInput.value = ''; // 입력 필드 초기화 }; // 파일 불러오기 기능 const loadFromFile = (file) => { const reader = new FileReader(); reader.onload = (e) => { const content = e.target.result; const lines = content.split('\n').map(line => line.trim()).filter(line => line.length > 0); if (lines[0] === 'chzzk.naver.com custom search engine') { bulkAddInput.value = lines.slice(1).join('\n'); // 검색어 추가 폼에만 입력 } else { alert('유효하지 않은 파일 형식입니다.'); } fileInput.value = ''; // 파일 입력 초기화 }; reader.readAsText(file); }; // 검색 수행 const search = () => { const query = searchInput.value; if (query) { const url = `https://chzzk.naver.com/search?query=${encodeURIComponent(query)}`; if (popupOption.checked) { window.open(url, '_blank'); } else { window.location.href = url; } if (autoSaveOption.checked) { const terms = loadSearchTerms(); if (!terms.includes(query)) { terms.push(query); saveSearchTerms(terms); updateSearchTerms(); } } } }; // 버튼 이벤트 리스너 searchButton.onclick = search; bulkAddButton.onclick = bulkAdd; fileInput.onchange = () => { const file = fileInput.files[0]; if (file) { loadFromFile(file); } }; exportButton.onclick = () => { const terms = loadSearchTerms(); const blob = new Blob([`chzzk.naver.com custom search engine\n${terms.join('\n')}`], { type: 'text/plain' }); const filename = `${new Date().toISOString().replace(/[:.-]/g, '_')}.txt`; GM_download({ url: URL.createObjectURL(blob), name: filename, saveAs: true }); }; clearAllButton.onclick = () => { const terms = loadSearchTerms(); if (terms.length === 0) { alert('삭제할 검색어가 없습니다.'); return; } if (confirm('정말로 검색어를 비우시겠습니까?')) { const backup = confirm('검색어를 백업하시겠습니까?'); if (backup) { exportButton.click(); // 백업 } saveSearchTerms([]); // 모든 검색어 삭제 updateSearchTerms(); } }; popupOption.onchange = () => savePopupOption(popupOption.checked); autoSaveOption.onchange = () => saveAutoSaveOption(autoSaveOption.checked); // DOM 변경 감지 및 사용자 GUI 표시 const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.addedNodes.length > 0) { const searchAutoComplete = document.querySelector('.search_autocomplete__m3D36'); if (searchAutoComplete) { // 사용자 GUI 표시 searchBox.style.display = 'block'; searchInput.focus(); // 기존 검색어 자동 완성 요소 제거 searchAutoComplete.innerHTML = ''; } } }); }); observer.observe(document.body, { childList: true, subtree: true }); // 사용자 GUI 바깥 클릭 시 GUI 닫기 document.addEventListener('click', (e) => { if (!searchBox.contains(e.target) && e.target.closest('form[role="search"]') === null) { searchBox.style.display = 'none'; bulkAddForm.style.display = 'none'; // 대량 추가 폼도 숨기기 } }); // 대량 추가 폼 초기화 const initializeBulkAddToggle = () => { bulkAddForm.style.display = 'none'; // 초기에는 대량 추가 폼 숨김 bulkAddToggle.onclick = () => { if (bulkAddForm.style.display === 'none') { bulkAddForm.style.display = 'block'; } else { bulkAddForm.style.display = 'none'; } }; }; // 입력 필드 비활성화 및 비우기 const toggleInputFields = (disabled) => { const searchInputField = document.querySelector('.search_form__jjNJN .search_input__tKVgq'); if (searchInputField) { searchInputField.disabled = disabled; if (disabled) { searchInputField.value = ''; // 입력 필드 비우기 } } }; // 초기화 initializeBulkAddToggle(); updateSearchTerms(); // 사용자 GUI 활성화 및 비활성화 시 입력 필드 제어 const handleSearchBoxVisibility = () => { const isVisible = searchBox.style.display === 'block'; toggleInputFields(isVisible); }; // 사용자 GUI가 열릴 때마다 입력 필드를 비활성화 const observerForGUI = new MutationObserver(() => { handleSearchBoxVisibility(); }); observerForGUI.observe(searchBox, { attributes: true, attributeFilter: ['style'] }); })();