您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
If Shuffle and Repeat are enabled on Spotify, automatically enable them when the song or playlist is changed.
// ==UserScript== // @name Spotify Shuffle & Repeat Fix // @license GNU GPLv3 // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description If Shuffle and Repeat are enabled on Spotify, automatically enable them when the song or playlist is changed. // @author Eren // @match https://open.spotify.com/* // @grant none // ==/UserScript== (function() { 'use strict'; const enableButtons = () => { const shuffleButton = document.querySelector('[data-testid="control-button-shuffle"]'); const repeatButton = document.querySelector('[data-testid="control-button-repeat"]'); if (shuffleButton && shuffleButton.getAttribute('aria-checked') === 'false') { shuffleButton.click(); console.log('[Spotify Auto] Shuffle enabled'); } if (repeatButton && repeatButton.getAttribute('aria-checked') === 'false') { repeatButton.click(); console.log('[Spotify Auto] Repeat enabled'); } }; const observeChanges = () => { const player = document.querySelector('.Root__now-playing-bar'); const playlistArea = document.querySelector('[data-testid="tracklist-row"]'); if (!player) { setTimeout(observeChanges, 1000); return; } let lastTrack = ''; const checkTrackChange = () => { const trackNameElement = document.querySelector('[data-testid="now-playing-widget"] [data-testid="track-name"]'); if (trackNameElement) { const currentTrack = trackNameElement.textContent.trim(); if (currentTrack !== lastTrack) { lastTrack = currentTrack; enableButtons(); } } }; const observer = new MutationObserver(checkTrackChange); observer.observe(player, { childList: true, subtree: true }); if (playlistArea) observer.observe(playlistArea, { childList: true, subtree: true }); enableButtons(); }; observeChanges(); })();