您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Enhanced GUI for aniworld.to and s.to websites, allowing you to effortlessly choose your preferred video host and have it automatically opened. A convenient green button positioned at the bottom right corner of the page will appear, prompting you to click and select your desired host from a user-friendly drop-down menu. Enjoy seamless video streaming with the host of your choice!
当前为
// ==UserScript== // @name Host Selector // @version 2 // @description:de Ermöglicht Auswahl von Video-Host und speichert die Auswahl. Funktioniert bei https://aniworld.to/ und https://s.to // @description:en Enables selection of video host and saves the choice. Works on https://aniworld.to/ and https://s.to // @description:ja ビデオホストの選択と選択内容の保存を可能にします。https://aniworld.to/ および https://s.to で動作します。 // @author 𝕭𝖚𝖉𝖚𝖒𝖟 // @icon https://w0.peakpx.com/wallpaper/40/813/HD-wallpaper-walpaper-zedge.jpg // @match https://aniworld.to/* // @match https://s.to/serie/stream/* // @grant GM_addStyle // @namespace http://tampermonkey.net/ // @description Enhanced GUI for aniworld.to and s.to websites, allowing you to effortlessly choose your preferred video host and have it automatically opened. A convenient green button positioned at the bottom right corner of the page will appear, prompting you to click and select your desired host from a user-friendly drop-down menu. Enjoy seamless video streaming with the host of your choice! // ==/UserScript== (function () { 'use strict'; // Function to create and show the GUI pop-up function createGUI() { const existingPopup = document.getElementById('hostSelectorPopup'); if (existingPopup) { // Close the existing popup if it's already open document.body.removeChild(existingPopup); } const popupDiv = document.createElement('div'); popupDiv.id = 'hostSelectorPopup'; popupDiv.innerHTML = ` <div style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #ffffff; border: 1px solid #ddd; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); max-width: 400px; width: 100%; padding: 20px; border-radius: 8px; font-family: 'Arial', sans-serif;"> <h2 style="font-size: 20px; margin-bottom: 20px; color: #333;">Preferred Hoster</h2> <label for="preferredHoster" style="font-size: 16px; color: #555;">Select your preferred Hoster:</label> <select id="preferredHoster" style="width: 100%; padding: 10px; margin-bottom: 20px; font-size: 14px; border: 1px solid #ddd; border-radius: 4px; color: #555;"> <option value="VOE">VOE</option> <option value="Doodstream">Doodstream</option> <option value="Vidoza">Vidoza</option> <option value="Streamtape">Streamtape</option> </select> <button id="submitButton" style="background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px;">Submit</button> <button id="closeButton" style="background-color: #ddd; color: #333; margin-left: 10px; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px;">Close</button> </div> `; document.body.appendChild(popupDiv); // Check if there's a previously selected preferred hoster in localStorage and pre-select it const storedPreferredHoster = localStorage.getItem('preferredHoster'); const preferredHosterSelect = document.getElementById('preferredHoster'); if (storedPreferredHoster && Array.from(preferredHosterSelect.options).some(option => option.value === storedPreferredHoster)) { preferredHosterSelect.value = storedPreferredHoster; } // Set up event listener for the submit button const submitButton = document.getElementById('submitButton'); submitButton.addEventListener('click', () => { const preferredHoster = preferredHosterSelect.value; // Save the selected preferred hoster in localStorage localStorage.setItem('preferredHoster', preferredHoster); // Find the corresponding hoster link and emulate a click for the preferred hoster const hosterLinks = document.querySelectorAll('a.watchEpisode'); for (const link of hosterLinks) { const hosterName = link.querySelector('h4').innerText; if (hosterName === preferredHoster) { // Introduce a delay before clicking to ensure the page has processed the selection setTimeout(() => { link.querySelector('.hosterSiteVideoButton').click(); }, 120); break; } } // Close the GUI pop-up after selecting and clicking the hoster document.body.removeChild(popupDiv); }); // Set up event listener for the close button const closeButton = document.getElementById('closeButton'); closeButton.addEventListener('click', () => { // Close the GUI pop-up without taking any action document.body.removeChild(popupDiv); }); } // Auto-select preferred hoster if available const storedPreferredHoster = localStorage.getItem('preferredHoster'); if (storedPreferredHoster) { const hosterLinks = document.querySelectorAll('a.watchEpisode'); for (const link of hosterLinks) { const hosterName = link.querySelector('h4').innerText; if (hosterName === storedPreferredHoster) { // Introduce a delay before clicking to ensure the page has processed the selection setTimeout(() => { link.querySelector('.hosterSiteVideoButton').click(); }, 120); break; } } } // Add a button to the page function addGUIButton() { const existingButton = document.getElementById('hostSelectorButton'); if (existingButton) { // Remove the existing button if it already exists document.body.removeChild(existingButton); } const button = document.createElement('button'); button.id = 'hostSelectorButton'; button.innerText = 'Open GUI'; button.style.position = 'fixed'; button.style.bottom = '20px'; button.style.right = '20px'; button.style.background = '#4CAF50'; button.style.color = 'white'; button.style.padding = '10px 20px'; button.style.border = 'none'; button.style.borderRadius = '4px'; button.style.cursor = 'pointer'; button.style.fontSize = '16px'; button.addEventListener('click', createGUI); document.body.appendChild(button); } // Add the CSS styles GM_addStyle(` body { margin: 0; padding: 0; font-family: 'Arial', sans-serif; } button { outline: none; } `); // Add the GUI button to the page addGUIButton(); })();