您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ultimate web toolkit featuring multilingual captions, code fixing, Roblox server finder, YouTube song detection, and more
// ==UserScript== // @name WebMaster Pro // @namespace https://sourcegraph.com/ // @version 7.2 // @description Ultimate web toolkit featuring multilingual captions, code fixing, Roblox server finder, YouTube song detection, and more // @author Cosmic Kitten with help from Cody A.I // @license MIT // @match *://*/* // @match https://www.roblox.com/games/* // @match https://web.roblox.com/games/* // @match https://www.youtube.com/* // @require https://code.jquery.com/jquery-3.6.0.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.min.js // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_registerMenuCommand // @grant GM_notification // @connect bing.com // @connect roblox.com // @connect grammarly.com // @connect youtube.com // @supportURL https://github.com/yourusername/webmaster-pro/issues // @homepage https://github.com/yourusername/webmaster-pro // ==/UserScript== /* Library Attribution */ /* * jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license * mark.js v8.11.1 | (c) Julian Kühnel | github.com/julmot/mark.js */ // Global error handler const errorHandler = { catch: function(error, context) { console.error(`WebMaster Pro - ${context}:`, error); GM_notification({ text: `Error in ${context}. Check console for details.`, title: 'WebMaster Pro', timeout: 3000 }); } }; // Safe initialization wrapper const initWithSafety = (fn, context) => { try { return fn(); } catch (error) { errorHandler.catch(error, context); } }; /* Core Modules */ const WebMasterCore = { settings: { lastUpdateCheck: 0, updateInterval: 86400000, // 24 hours }, init() { this.loadSettings(); this.initModules(); this.setupEventListeners(); }, loadSettings() { const saved = GM_getValue('webmaster_settings'); if (saved) { this.settings = {...this.settings, ...JSON.parse(saved)}; } }, saveSettings() { GM_setValue('webmaster_settings', JSON.stringify(this.settings)); }, initModules() { initWithSafety(() => { CodyGUI.init(); YouTubeDetector.init(); RobloxFinder.init(); PageSearcher.init(); TranslationEngine.init(); }, 'Module Initialization'); } }; /* Cody GUI Module - Enhanced */ const CodyGUI = { init() { this.createInterface(); this.setupEventListeners(); }, createInterface() { const gui = document.createElement('div'); gui.id = 'cody-assistant'; gui.innerHTML = ` <div class="cody-panel"> <div class="cody-header"> <span class="cody-title">WebMaster Pro</span> <div class="cody-controls"> <button class="minimize">_</button> <button class="close">×</button> </div> </div> <div class="cody-content"> <div class="feature-buttons"> <button data-action="translate">Translate Page</button> <button data-action="findServer">Find Roblox Server</button> <button data-action="detectSong">Detect Song</button> <button data-action="searchPage">Search Page</button> </div> <div class="status-area"></div> </div> </div> `; document.body.appendChild(gui); } }; /* YouTube Detector - Enhanced */ const YouTubeDetector = { init() { if (window.location.hostname.includes('youtube.com')) { this.setupDetector(); } }, setupDetector() { const observer = new MutationObserver(() => { this.detectAndDisplay(); }); observer.observe(document.body, { childList: true, subtree: true }); }, async detectAndDisplay() { const video = document.querySelector('video'); if (!video) return; const videoTitle = document.querySelector('h1.ytd-video-primary-info-renderer'); if (videoTitle) { const songInfo = this.parseSongInfo(videoTitle.textContent); this.showSongInfo(songInfo); } } }; /* Roblox Server Finder - Enhanced */ const RobloxFinder = { init() { if (window.location.href.includes('roblox.com/games/')) { this.setupFinder(); } }, async findServer() { const servers = await this.fetchServers(); if (servers?.length > 0) { const bestServer = this.findBestServer(servers); this.joinServer(bestServer); } } }; /* Styles - Enhanced and Optimized */ GM_addStyle(` #cody-assistant { --primary-color: #2196F3; --secondary-color: #00b06f; --text-color: #ffffff; --shadow-color: rgba(0,0,0,0.3); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } .cody-panel { position: fixed; bottom: 80px; right: 20px; background: linear-gradient(145deg, var(--primary-color), var(--secondary-color)); border-radius: 12px; padding: 20px; color: var(--text-color); z-index: 999999; box-shadow: 0 4px 15px var(--shadow-color); transition: all 0.3s ease; width: 300px; max-height: 500px; overflow: hidden; } .feature-buttons button { width: 100%; padding: 10px; margin: 5px 0; border: none; border-radius: 6px; background: rgba(255,255,255,0.2); color: var(--text-color); cursor: pointer; transition: all 0.2s ease; font-weight: 500; } .feature-buttons button:hover { background: rgba(255,255,255,0.3); transform: translateY(-1px); } `); // Initialize everything document.addEventListener('DOMContentLoaded', () => { initWithSafety(() => WebMasterCore.init(), 'Main Initialization'); });