Her*_*der 6 javascript netflix javascript-objects dom-events video-player
我一直无法弄清楚如何在Chrome中运行的Netflix视频播放器中进行视频搜索(自动前进到视频中的某个点).该currentTime
属性可以读取但不能在Netflix播放器中设置,设置后立即触发错误"哎呀!出错了.".Play和Pause等其他操作效果很好.例如,您可以尝试以下操作:
<ENTER>
:var video = document.evaluate('//*[@id="5670317"]/video',document).iterateNext()
注意:id值特定于Armageddon.如果您选择其他电影,这很好,请根据该电影的网址中的ID更改ID.
<Enter>
:video.play()
.观察视频恢复播放.很简单,但如何让视频自动前进到视频中的特定点?您可能想参考此文档.显然,您可以通过从左到右拖动视频播放器滑块手动搜索并将其释放到某个位置.您可能希望在执行此操作时发现调用哪个方法或事件,并对其进行模拟.到目前为止我没有运气.
有任何想法吗?
Dmi*_*kin 16
看起来netflix改变了播放器api.它是我发现的:
const videoPlayer = netflix
.appContext
.state
.playerApp
.getAPI()
.videoPlayer
// Getting player id
const playerSessionId = videoPlayer
.getAllPlayerSessionIds()[0]
const player = videoPlayer
.getVideoPlayerBySessionId(playerSessionId)
Run Code Online (Sandbox Code Playgroud)
现在您可以使用完整播放器API.例如player.seek
或player.getCurrentTime
或player.pause
等..
如果您希望它在 chrome 扩展中工作,它只能在 netflix 的控制台日志中工作,那么您需要将此代码注入脚本标记中才能使其工作。
const videoPlayer = netflix.appContext.state.playerApp.getAPI().videoPlayer;
const player = videoPlayer.getVideoPlayerBySessionId(videoPlayer.getAllPlayerSessionIds()[0]);
player.seek(1091243) //seek to roughly 18mins
player.getCurrentTime() // will give you the current video time.
Run Code Online (Sandbox Code Playgroud)
最后找到了一个简单的解决方案:
netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null, {value: 999, pointerEventData: {playing: false}});
Run Code Online (Sandbox Code Playgroud)
您可以设置:
这不是完整的解决方案,但可能很有用。
以前版本的 netflix 播放器使用全局对象window.netflix.cadmium.objects.videoPlayer。在最新版本中它是空的,但您可以在事件侦听器中访问此对象:
然后在新的全局变量中,您可以访问temp1.cadmium.objects.videoPlayer
temp1.cadmium.objects.videoPlayer().getDuration() temp1.cadmium.objects.videoPlayer().seek(2283839); temp1.cadmium.objects.videoPlayer().seek(4283839);
[![在此处输入图像描述][1]][1]
我不确定是否可以全自动进行。您可以通过以下方式访问此侦听器
getEventListeners(document.getElementsByTagName("body")[0]).keydown[0].listener
Run Code Online (Sandbox Code Playgroud)
但我不知道如何访问范围变量
归档时间: |
|
查看次数: |
1972 次 |
最近记录: |