您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
GUI to filter through Fragment auctions
// ==UserScript== // @name Fragment Fixer // @namespace http://tampermonkey.net/ // @version 2.5 // @description GUI to filter through Fragment auctions // @match *://fragment.com/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let hiddenSubdomains = JSON.parse(localStorage.getItem('hiddenSubdomains') || '[]'); let hiddenShitSubdomains = JSON.parse(localStorage.getItem('hiddenShitSubdomains') || '[]'); // Function to create the GUI function createGUI() { const gui = document.createElement('div'); gui.style.position = 'fixed'; gui.style.top = '10px'; gui.style.right = '10px'; gui.style.backgroundColor = '#1a2026'; // Dark background color gui.style.color = '#ffffff'; // White font color gui.style.padding = '10px'; gui.style.zIndex = '10000'; gui.style.cursor = 'move'; gui.style.width = '180px'; // Compact width gui.style.fontSize = '12px'; gui.style.boxShadow = '0px 0px 10px rgba(0, 0, 0, 0.1)'; gui.style.border = 'none'; // Remove borders gui.id = 'draggableGui'; const resaleCheckbox = createCheckbox('hideResale', 'Hide Resales'); const commaCheckbox = createCheckbox('hideComma', 'Hide $1,000+'); const shitCheckbox = createCheckbox('hideShit', 'Hide Shit'); const credit = document.createElement('a'); // Changed to anchor element credit.href = 'https://t.me/poseidon'; // URL to redirect credit.innerText = 't.me/poseidon'; credit.style.fontSize = '10px'; credit.style.marginTop = '10px'; credit.style.textAlign = 'center'; credit.style.display = 'block'; // Make the anchor element block-level for easier clicking gui.appendChild(resaleCheckbox); gui.appendChild(commaCheckbox); gui.appendChild(shitCheckbox); gui.appendChild(credit); // Append anchor element to GUI document.body.appendChild(gui); makeDraggable(gui); } // Helper function to create checkbox with label function createCheckbox(id, label) { const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = id; checkbox.style.marginRight = '5px'; // Add space between checkbox and text checkbox.addEventListener('change', hideRows); const checkboxLabel = document.createElement('label'); checkboxLabel.htmlFor = id; checkboxLabel.innerText = label; const checkboxContainer = document.createElement('div'); checkboxContainer.style.marginBottom = '5px'; // Add margin bottom for separation checkboxContainer.appendChild(checkbox); checkboxContainer.appendChild(checkboxLabel); return checkboxContainer; } // Function to hide rows based on criteria function hideRows() { const hideResale = document.getElementById('hideResale')?.checked; const hideComma = document.getElementById('hideComma')?.checked; const hideShit = document.getElementById('hideShit')?.checked; let rows = document.querySelectorAll('tr.tm-row-selectable'); rows.forEach(row => { let subdomain = row.querySelector('.subdomain') ? row.querySelector('.subdomain').innerText : ''; let hide = false; if (hiddenSubdomains.includes(subdomain)) { hide = true; } else { if (hideResale && row.innerText.includes('Resale')) { hide = true; } if (hideComma && row.innerText.includes(',')) { hide = true; } if (hideShit && (subdomain.includes('_') || /\d/.test(subdomain))) { hide = true; } } if (hide) { row.style.display = 'none'; } else { row.style.display = ''; // Reset the display style if criteria do not match addHideButton(row); // Add hide button if not already hidden } }); } // Function to add "Hide" button to a row function addHideButton(row) { const subdomainElement = row.querySelector('.subdomain'); if (subdomainElement && !row.querySelector('.hide-button')) { const hideButton = document.createElement('button'); hideButton.innerText = 'Hide'; hideButton.className = 'hide-button'; hideButton.style.marginLeft = '10px'; hideButton.style.backgroundColor = '#1a2026'; hideButton.style.color = '#ffffff'; hideButton.style.border = '1px solid #1a2026'; hideButton.style.cursor = 'pointer'; hideButton.addEventListener('click', (event) => { event.preventDefault(); // Prevent default action event.stopPropagation(); // Stop the event from propagating const subdomain = subdomainElement.innerText; hiddenSubdomains.push(subdomain); localStorage.setItem('hiddenSubdomains', JSON.stringify(hiddenSubdomains)); hideRows(); }); const descElement = row.querySelector('.table-cell-desc'); if (descElement) { descElement.appendChild(hideButton); } } } // Function to make the GUI draggable function makeDraggable(element) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; element.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; element.style.top = (element.offsetTop - pos2) + "px"; element.style.left = (element.offsetLeft - pos1) + "px"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } // Initialize the GUI on page load window.addEventListener('load', () => { createGUI(); hideRows(); }); // Re-apply hiding on DOM changes (e.g., AJAX content load) let observer = new MutationObserver(() => { hideRows(); }); observer.observe(document.body, { childList: true, subtree: true }); })();