치지직 커스텀 검색 엔진

치지직 검색 엔진을 변경합니다

目前为 2024-08-06 提交的版本。查看 最新版本

// ==UserScript==
// @name          치지직 커스텀 검색 엔진
// @namespace     치지직 커스텀 검색 엔진
// @match         *://chzzk.naver.com/*
// @version       0.1
// @description   치지직 검색 엔진을 변경합니다
// @icon          data:image/png;base64,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
// @author        mickey90427 <[email protected]>
// @grant         GM_addStyle
// @grant         GM_download
// @license       MIT
// ==/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 = `
        <input type="text" id="searchInput" placeholder="검색어 입력" />
        <button id="searchButton">검색</button>
        <button id="bulkAddToggle">검색어 추가</button>
        <button id="clearAllButton">모든 검색어 삭제</button>
        <div id="bulkAddForm">
            <label for="fileInput">검색어 파일 불러오기 (txt 파일만 가능):</label>
            <input type="file" id="fileInput" accept=".txt" />
            <label for="bulkAddInput">검색어 추가 (개행으로 구분):</label>
            <textarea id="bulkAddInput" placeholder="검색어를 개행으로 구분하여 입력하세요"></textarea>
            <label>
                <input type="checkbox" id="overwriteOption"> 덮어쓰기(기존 검색어들이 사라짐)
            </label>
            <button id="bulkAddButton">검색어 추가</button>
            <button id="exportButton">검색어 내보내기</button>
        </div>
        <div id="searchTerms"></div>
        <label>
            <input type="checkbox" id="popupOption"> 새 탭에서 검색
        </label>
        <label>
            <input type="checkbox" id="autoSaveOption"> 검색어 자동 저장
        </label>
    `;
    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'] });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址