如何在SoundCloud上使用setVolume()

时间:2016-05-15 17:00:24

标签: widget soundcloud

我想在SoundCloud上使用setVolume(0.01),因为它对我来说很响亮。 作为一个临时解决方案,我让整个Chrome浏览器更安静,但是Youtube和其他网站太安静了。

我发现可以通过“SC.Widget方法”控制SoundCloud的音量,但我不知道那是什么。

有人可以解释我如何使用它将SoundCloud的音量设置为0.01?

我已经尝试将其放在Chrome控制台中,但这给了我以下内容:VM1394:1 Uncaught ReferenceError: setVolume is not defined(…)

2 个答案:

答案 0 :(得分:2)

要使用脚本更改 Soundcloud网站上的音量,您无法使用真正的API,也无法通过官方方式执行此操作。这应该有效:

webpackJsonp([], {
    0: function(a, b, require) {
        var modules = require.c;
        modules[54].exports.broadcast("volume:set", 0.1);
    }
});

由于Soundcloude代码被缩小并且不被其他脚本使用,因此上述解决方案可能会因为这样的错误而中断:

  

Uncaught TypeError:modules [54] .exports.broadcast不是函数(...)

一个hacky解决方案是迭代所有模块并执行volume:set广播:

webpackJsonp([], {
    0: function(a, b, require) {
        var modules = require.c;
        for(var x in modules){
            if(modules[x].exports.broadcast){
                modules[x].exports.broadcast("volume:set", 1.0);
            }
        }
    }
});

更改 Soundcloud小部件的音量:

HTML5小部件API的解释为here。您首先需要做的是包括Soundcloud的API脚本,您可以使用我从here借来的代码:

var scapi = document.createElement('script');
scapi.src = "https://w.soundcloud.com/player/api.js";
document.getElementsByTagName('head')[0].appendChild(scapi);

下一步是找到Soundcloud小部件并使用API​​脚本来获取我们需要的功能,即setVolume()

var sciframe = document.querySelector("iframe");
var widget = SC.Widget(sciframe);
widget.setVolume(0.1); // goes from 0 to 1

这可以用作Greasemonkey或Tampermonkey的用户脚本并自动运行:

var scapi = document.createElement('script');
scapi.src = "https://w.soundcloud.com/player/api.js";
document.getElementsByTagName('head')[0].appendChild(scapi);

function waitAndRegister() {
    window.setTimeout(function(){ 
    if(typeof(SC) == 'undefined') { 
            waitAndRegister();
        } else {
            quiet();
        }
    }, 100);
};
waitAndRegister();

function quiet() {
    var scWidgets = document.querySelectorAll('iframe[src^="https://w.soundcloud.com/player"]');
    if(scWidgets.length > 0) {
      for (var i = 0; i < scWidgets.length; ++i) {
        var widget = SC.Widget(scWidgets[i]);
        widget.bind(SC.Widget.Events.PLAY, function() {
          widget.setVolume(0.1);
        });
      }
    }
}

答案 1 :(得分:0)

Chrome> Ctrl + Shift + i>应用程序标签>存储>本地存储> V2 :: local :: settings

并设置所需的音量(例如:volume“:0.05,”)

对我来说就像一个魅力。