您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Look for appointment at SpareBank!
// ==UserScript== // @name SpareBank Appointment // @namespace http://tampermonkey.net/ // @version 2025-05-27 // @description Look for appointment at SpareBank! // @author alespool // @match https://ventus.enalog.se/Booking/Booking/Index/SpareBank1 // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const timerDisplay = document.createElement('div'); timerDisplay.style.position = 'fixed'; timerDisplay.style.top = '10px'; timerDisplay.style.right = '10px'; timerDisplay.style.padding = '10px'; timerDisplay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; timerDisplay.style.color = 'white'; timerDisplay.style.fontSize = '20px'; document.body.appendChild(timerDisplay); let timeLeft = 10; function playAlertSound() { const audio = new Audio('https://www.soundjay.com/buttons/sounds/button-1.mp3'); let playCount = 0; function playSound() { if (playCount < 3) { audio.play(); playCount++; audio.onended = playSound; } } playSound(); } function checkAvailability() { const noAppointmentText = "Unfortunately, there are no available appointments at the moment. Please try again later or contact the police."; const pageContent = document.body.innerText || document.body.textContent; if (!pageContent.includes(noAppointmentText)) { playAlertSound(); } } const countdown = setInterval(() => { if (timeLeft > 0) { timerDisplay.innerText = `Click within ${timeLeft} seconds...`; timeLeft--; } else { timeLeft = 10; const bouton = document.querySelector('input[name="TimeSearchFirstAvailableButton"]'); if (bouton) { bouton.click(); } checkAvailability(); } }, 1000); })();