您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stops the automatic playing of recommended tracks on Soundcloud.
- // ==UserScript==
- // @name Stop Automatic Recommendations on Soundcloud
- // @namespace soundcloud-no-autoplay
- // @author Veeno
- // @contributor Kai Kuehner
- // @contributor Technowise
- // @contributor Andreas J. Schwarz
- // @description Stops the automatic playing of recommended tracks on Soundcloud.
- // @include http://www.soundcloud.com/*
- // @include https://www.soundcloud.com/*
- // @include http://soundcloud.com/*
- // @include https://soundcloud.com/*
- // @grant none
- // @version 2.1
- // ==/UserScript==
- (function(){
- var playingRecommended = false,
- trackInfoContainer = "div.playbackSoundBadge",
- trackArtistElementClass = "playbackSoundBadge__lightLink",
- trackArtistAttribute = "title",
- trackTitleElementClass = "playbackSoundBadge__titleLink",
- trackTitleAttribute = "title",
- recommendedContainer = "article.relatedSoundsModule",
- recommendedArtistElementClass = "soundTitle__usernameText",
- recommendedArtistAttribute = "innerHTML",
- recommendedTitleElementClass = "soundTitle__title",
- recommendedTitleAttribute = "title",
- buttonElement = "button.playControl";
- function isRecommendedTrack(){
- var trackArtist = trackInfoContainer.getElementsByClassName(trackArtistElementClass)[0],
- trackTitle = trackInfoContainer.getElementsByClassName(trackTitleElementClass)[0],
- recommendedArtist = recommendedContainer.getElementsByClassName(recommendedArtistElementClass)[0],
- recommendedTitle = recommendedContainer.getElementsByClassName(recommendedTitleElementClass)[0];
- if(trackArtist && trackTitle && recommendedArtist && recommendedTitle){
- return (
- trackArtist[trackArtistAttribute].trim().toLowerCase() === recommendedArtist[recommendedArtistAttribute].trim().toLowerCase() &&
- trackTitle[trackTitleAttribute].trim().toLowerCase() === recommendedTitle[recommendedTitleAttribute].trim().toLowerCase()
- );
- }
- return null;
- }
- var trackInfoObserver = new MutationObserver(function(){
- var currentIsRecommended = isRecommendedTrack();
- if(typeof currentIsRecommended === "boolean"){
- if(!playingRecommended && currentIsRecommended) buttonElement.click();
- playingRecommended = currentIsRecommended;
- }
- });
- function start(){
- var _trackInfoContainer = document.querySelector(trackInfoContainer),
- _recommendedContainer = document.querySelector(recommendedContainer),
- _buttonElement = document.querySelector(buttonElement);
- if(!_trackInfoContainer || !_recommendedContainer || !_buttonElement){
- setTimeout(start, 20);
- return;
- }
- trackInfoContainer = _trackInfoContainer;
- recommendedContainer = _recommendedContainer;
- buttonElement = _buttonElement;
- trackInfoObserver.observe(trackInfoContainer, {childList: true, subtree: true});
- }
- start();
- })();