gpt4 book ai didi

javascript - 通过页面 JS 访问 soundcloud 的 lib/audiomanager

转载 作者:搜寻专家 更新时间:2023-11-01 04:16:38 26 4
gpt4 key购买 nike

我维护了一个 greasemonkey 脚本,用于监控当前播放的轨道以及 Soundcloud 上的进度。以前,我只需执行 require("lib/audiomanager") 即可访问一个对象,该对象允许我查看整个页面的状态,例如播放轨道信息。

问题是,Soundcloud 已经开始使用 webpack 作为他们的客户端 Javascript。据我了解,这会将所有这些类存储为包中的特定编号。它们存储的数字似乎每次客户端 JS 更新和重新编译时都会发生变化。

访问存储在 webpack 中的对象的唯一方法似乎是通过全局 webpackJsonp,如下所示。包的编号只需要是唯一的。

webpackJsonp([6060], {
0: function (e, t, n) {
window.aman = n(726);
e.exports = function (abc) {
console.log("Exports called");
};
}
});

该代码将执行并让我访问 webpack 中该编号的对象。在客户端 webpack 的 JS 中定义的对象是:

726: function (e, t, n) {
(function (t) {
function i(e) {
var n = t(e.getContainerElement()),
i = e.getState() === r.States.ERROR;
n.toggleClass('blocked', i)
}
var r,
s = n(53),
o = n(14),
a = 1000 / 60;
e.exports = r = new s({
flashAudioPath: n(2181),
flashObjectID: 'flashAudioObject',
updateInterval: a,
debug: !1
}),
r.Errors = s.Errors,
r.States = s.States,
r.UPDATE_INTERVAL = a,
o.once('audio:flash_block audio:flash_unblock', i)
})
.call(t, n(1))
},

那么,我能想到的解决方案:

  • 找到一个 webpack 编号不变的对象,我可以用它来获取该对象的句柄
  • 遍历每个 webpack 编号并查找与此对象具有相同方法集的对象。

后者看起来很乱,而第一个似乎不可能。有什么想法吗?

我尝试过的事情:

  • 像所需对象一样创建一个新的 n(53),因为它似乎在更新过程中保持不变。给我一个音频管理器,但绝对与页面的普通音频管理器分开,所以我看不到正在播放什么。

最佳答案

我们也在我们的客户端脚本中使用 SoundCloud API,所以我们最终得到了一点“清洁”code .这是它的主要部分(注意它不包含 try-catch block ,因为所有模块都存在):

var playManager, libAudio, eventBus;

webpackJsonp([], {0: function(a, b, require)
{
var modules = require.c;

for (var moduleid in modules)
{
var el = require(moduleid);

if (typeof el["playCurrent"] == "function")
{
playManager = el;
}
else if (typeof el["getSettings"] == "function")
{
libAudio = el;
}
else if (typeof el["trigger"] == "function"
&& typeof el["bind"] == "function"
&& typeof el["listenToOnce"] == "function" &&
typeof el["$"] != "function" &&
typeof el["broadcast"] == "function")
{
eventBus = el;
}
}

关于javascript - 通过页面 JS 访问 soundcloud 的 lib/audiomanager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com