对于那些试图从他们的扩展程序控制Netflix视频播放器的人:我已经找到了一个简单的解决方案。
当前时间和暂停状态:可以轻松地使用以下方法获得
document.querySelector('video').currentTime
document.querySelector('video').paused
(简单地访问此数据不会重定向到错误页面)
恢复/暂停:这里我们有两个选项:
执行以下代码:
document.querySelector('video').click();
这会暂停/取消暂停视频。您可以使用上面描述的暂停状态获取来确保您不会取消暂停已经暂停的视频。
添加脚本,该脚本本身通过点击事件监听器向文档添加元素:
const actualCode = `
const pauseElem = document.createElement('div');
pauseElem.id = 'my_pause_elem';
pauseElem.addEventListener('click', () => {
const videoPlayer = window.netflix.appContext.state.playerApp.getAPI().videoPlayer;
const player = videoPlayer.getVideoPlayerBySessionId(videoPlayer.getAllPlayerSessionIds()[0]);
player.pause();
});
const resumeElem = document.createElement('div');
resumeElem.id = 'my_resume_elem';
resumeElem.addEventListener('click', () => {
const videoPlayer = window.netflix.appContext.state.playerApp.getAPI().videoPlayer;
const player = videoPlayer.getVideoPlayerBySessionId(videoPlayer.getAllPlayerSessionIds()[0]);
player.play();
});
document.body.appendChild(pauseElem);
document.body.appendChild(resumeElem);
`;
const script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.remove();
现在你需要做的就是:
document.getElementById('my_pause_elem').click();
document.getElementById('my_resume_elem').click();
暂停/恢复。
搜索:这与上面的解决方案相同:添加一个带有事件侦听器的元素,该侦听器使用 Spotify API 进行搜索。特别之处在于我们需要传递一个时间戳。这可以通过将属性值设置为我们的元素来完成:
const actualCode = `
const seekElem = document.createElement('div');
seekElem.id = "my_seek_elem";
seekElem.addEventListener('click', () => {
const newTime = Number(document.getElementById('my_seek_elem').getAttribute('timestamp')) * 1000;
const videoPlayer = window.netflix.appContext.state.playerApp.getAPI().videoPlayer;
const player = videoPlayer.getVideoPlayerBySessionId(videoPlayer.getAllPlayerSessionIds()[0]);
player.seek(newTime);
});
(document.body).appendChild(seekElem);
`;
const script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.remove();
现在我们所需要做的就是在设置时间戳后触发此事件:
document.getElementById('my_seek_elem').setAttribute('timestamp', '' + timestamp);
document.getElementById('my_seek_elem').click();
就这样!
cadmium
对象不再通过netflix
API提供。谢谢。 - Fethi Dilmiwindow.netflix
)。然后,我仔细阅读了所有属性、方法名称等,并花了很多时间进行实验 :) - DimaOverflow