// ==UserScript== // @name Namu Hot Now // @name:ko 나무위키 실검 알려주는 스크립트 // @namespace https://arca.live/b/namuhotnow // @version 0.1.2 // @description 이게 왜 실검? // @author KEMOMIMI // @match https://namu.wiki/* // @icon https://www.google.com/s2/favicons?sz=64&domain=namu.wiki // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== function findLinkByPartialMatch(pairs, searchString) { for (var i = 0; i < pairs.length; i++) { if (pairs[i].text.toLowerCase() === searchString.toLowerCase()) { return pairs[i].link; } } return null; } const targetURL = 'https://arca.live/b/namuhotnow'; GM_xmlhttpRequest({ method: 'GET', url: targetURL, onload: function(response) { const htmlData = response.responseText; const parser = new DOMParser(); const doc = parser.parseFromString(htmlData, 'text/html'); var elements = doc.querySelectorAll('.article-list .list-table a:not(.notice)'); var pairs = []; elements.forEach(function(element) { var link = element.getAttribute('href'); var titleElement = element.querySelector('.title'); var text = titleElement ? titleElement.innerText.trim() : ''; pairs.push({text: text, link: link}); }); var spans = document.querySelectorAll('#app aside span'); spans.forEach(function (span) { if (span.textContent.includes('실시간 검색어')) { var parentDiv = span.parentElement.parentElement; var realtimeList = parentDiv.querySelectorAll('li'); realtimeList.forEach(function(element) { var titleElement = element.querySelector('span'); var resultLink = findLinkByPartialMatch(pairs, titleElement.innerText.trim()); if (resultLink != null){ var linkElement = document.createElement('a'); linkElement.href = 'https://arca.live' + resultLink; linkElement.textContent = '이왜실?'; linkElement.display = 'flex' linkElement.width = '40%' linkElement.target="_blank" element.querySelector('a').style.width = "60%"; element.appendChild(linkElement);} }); } }); } });