您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Check Produce is full on https://idleontoolbox.com/dashboard
当前为
// ==UserScript== // @name Idleontoolbox Produce Check // @namespace http://tampermonkey.net/ // @version 4.0 // @description Check Produce is full on https://idleontoolbox.com/dashboard // @author Tiande // @match https://idleontoolbox.com/* // @grant GM_notification // @grant GM_getValue // @grant GM_setValue // @license MIT // ==/UserScript== (function() { 'use strict'; //console.log('Script is running'); var notificationPermission = GM_getValue('notificationPermission'); var isFunctionEnabled = true; var interval = 60000; // Default interval time in milliseconds var intervalId; // Store interval ID for pausing and resuming // Telegram Bot API Token var tgbotToken = 'YOUR BOT TOKEN'; // Telegram user ID to send the message to var tguserId = 'YOUR USER ID'; // tg send function tgsendMessage(message) { var tgurl = 'https://api.telegram.org/bot' + tgbotToken + '/sendMessage'; var tgparams = 'chat_id=' + tguserId + '&text=' + encodeURIComponent(message); var tgxhr = new XMLHttpRequest(); tgxhr.open('POST', tgurl, true); tgxhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); tgxhr.onreadystatechange = function() { if (tgxhr.readyState == 4 && tgxhr.status == 200) { console.log('Message sent successfully!'); } }; tgxhr.onerror = function(error) { console.error('Error sending message:', error); }; tgxhr.send(tgparams); } // autorefresh time var refreshInterval = 5.1 * 60 * 1000; // 5m // refreshPage function refreshPage() { // 检查当前页面的URL是否为'https://idleontoolbox.com/dashboard' if (location.href === 'https://idleontoolbox.com/dashboard') { location.reload(); // 如果是,则刷新页面 } else { // 如果不是,则等待下一个刷新时间间隔 setTimeout(refreshPage, refreshInterval); } } var refreshTimeout; // 存储定时器的引用 function toggleRefresh() { if (isFunctionEnabled) { intervalId = setInterval(startInterval, interval); // 启动定时器 } else { clearInterval(intervalId); // 清除定时器 } } toggleRefresh(); // 在脚本启动时调用一次,以确保定时器已启动 // Preload audio var audio = new Audio(); audio.src = 'https://github.com/Tiande/IdelonCheck/raw/main/iphonewake.wav'; // Add CSS styles var style = document.createElement('style'); style.innerHTML = ` #toggleButtonContainer { position: fixed; top: 50%; left: calc(50% + 100px); transform: translate(-50%, -50%); display: flex; align-items: center; padding: 5px; background: green; /* Green color for default enabled state */ color: white; border-radius: 5px; font-family: Arial, sans-serif; font-size: 14px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3); z-index: 99999; user-select: none; cursor: move; } #toggleButtonContainer.off { background: red; /* Red color for disabled state */ } #toggleButton { padding: 5px 10px; border: none; border-radius: 5px; background: transparent; cursor: pointer; outline: none; } .drag-handle { cursor: move; } #produceCheck { background-color: black; color: white; padding: 5px; border-radius: 5px; margin-right: 5px; } `; document.head.appendChild(style); createToggleButton(); // Create toggle button on script execution startInterval(); // Start interval on script execution function createToggleButton() { var toggleButtonContainer = document.createElement('div'); toggleButtonContainer.id = 'toggleButtonContainer'; toggleButtonContainer.classList.add('drag-handle'); var produceCheck = document.createElement('span'); produceCheck.id = 'produceCheck'; produceCheck.textContent = 'Produce Check: '; toggleButtonContainer.appendChild(produceCheck); var toggleButton = document.createElement('button'); toggleButton.id = 'toggleButton'; toggleButton.addEventListener('click', toggleFunction); toggleButtonContainer.appendChild(toggleButton); document.body.appendChild(toggleButtonContainer); updateButtonStyle(); makeDraggable(toggleButtonContainer); } function updateButtonStyle() { var toggleButtonContainer = document.getElementById('toggleButtonContainer'); toggleButtonContainer.classList.toggle('off', !isFunctionEnabled); var toggleButton = document.getElementById('toggleButton'); toggleButton.innerHTML = isFunctionEnabled ? 'ON' : 'OFF'; } function toggleFunction() { isFunctionEnabled = !isFunctionEnabled; updateButtonStyle(); toggleRefresh(); // 根据isFunctionEnabled的值启用或暂停定时器 } function startInterval() { var regex = /is full/; var prepareelements = document.querySelectorAll('img[aria-label]'); var elements = Array.from(prepareelements).filter(function(element) { return regex.test(element.getAttribute('aria-label')); }); if (elements.length > 0) { var roleNames = []; elements.forEach(function(element) { var parentDiv = element.closest('.MuiCardContent-root'); if (parentDiv) { var roleNameElement = parentDiv.querySelector('.MuiTypography-root.MuiTypography-body1.css-9l3uo3'); if (roleNameElement) { var roleName = roleNameElement.textContent.trim(); roleNames.push(roleName); } } }); if (roleNames.length > 0) { var message = roleNames.join(' + ') + ' is full!'; showNotification(message); audio.play(); if (tguserId !== 'your user ID') { tgsendMessage(message); } } } // 追踪另一组元素 var timeElements = document.querySelectorAll('.MuiTypography-root.MuiTypography-inherit'); timeElements.forEach(function(timeElement) { var color = getComputedStyle(timeElement).color; var match = color.match(/^rgb\((\d+), (\d+), (\d+)\)$/); if (match && match[1] === '249' && match[2] === '29' && match[3] === '29') { // color 属性值为 rgb(249, 29, 29),视为捕获 var message = 'Some work is done!'; showNotification(message); audio.play(); if (tguserId !== 'your user ID') { tgsendMessage(message); } } }); // Book count var bookCountElements = document.querySelectorAll('.MuiCardContent-root h4'); // 遍历每个 <h4> 元素 bookCountElements.forEach(function(element) { // 获取文本内容 var text = element.textContent.trim(); // 提取数字部分 var count = parseInt(text.match(/\d+/)[0]); // 如果数字大于等于2,则发送通知 if (count >= 2) { // 发送通知 var message = 'Book count is >= 2!'; showNotification(message); audio.play(); if (tguserId !== 'your user ID') { tgsendMessage(message); } } }); } function showNotification(message) { if (notificationPermission === 'granted') { GM_notification({ text: message, title: 'Idleontoolbox Notification', timeout: 5000, onclick: function() { window.focus(); } }); } else { window.Notification.requestPermission().then(function(permission) { if (permission === 'granted') { GM_notification({ text: message, title: 'Idleontoolbox Notification', timeout: 5000, onclick: function() { window.focus(); } }); } }); } } function makeDraggable(element) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; element.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; // call a function whenever the cursor moves: document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); // calculate the new cursor position: pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; // set the element's new position: element.style.top = (element.offsetTop - pos2) + "px"; element.style.left = (element.offsetLeft - pos1) + "px"; } function closeDragElement() { /* stop moving when mouse button is released:*/ document.onmouseup = null; document.onmousemove = null; } } })();