我一直无法弄清楚如何在Chrome中运行的Netflix视频播放器中进行视频搜索(自动前进到视频中的某个点)。 currentTime
属性可以在Netflix播放器中读取但不能设置,设置后立即触发错误“哎呀!出错了。”。其他操作(例如播放和暂停)运行良好。例如,您可以尝试以下操作:
<ENTER>
: var video = document.evaluate('//*[@id="5670317"]/video',document).iterateNext()
注意:id值特定于Armageddon。如果您选择其他电影,这很好,请根据该电影的网址中的ID更改ID。
<Enter>
:video.play()
。观察视频继续播放。很简单,但如何让视频自动前进到视频中的特定点?您可能需要参考this doc。显然,您可以通过从左到右拖动视频播放器滑块手动搜索并将其释放到某个位置。您可能希望在执行此操作时发现调用哪个方法或事件,并对其进行模拟。到目前为止,我还没有运气。
有什么想法吗?
答案 0 :(得分:15)
看起来netflix改变了播放器api。它是我发现的:
const videoPlayer = netflix
.appContext
.state
.playerApp
.getAPI()
.videoPlayer
// Getting player id
const playerSessionId = videoPlayer
.getAllPlayerSessionIds()[0]
const player = videoPlayer
.getVideoPlayerBySessionId(playerSessionId)
现在您可以使用完整播放器API。
例如player.seek
或player.getCurrentTime
或player.pause
等等......
答案 1 :(得分:2)
终于找到了一个简单的解决方案:
netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null, {value: 999, pointerEventData: {playing: false}});
您可以设置:
<击> 这不是完整的解决方案,但可能很有用。
以前版本的netflix播放器使用全局对象 window.netflix.cadmium.objects.videoPlayer 。在最近的版本中,它是空的,但您可以在事件侦听器中访问此对象:
然后在新的全局变量中,您可以访问 temp1.cadmium.objects.videoPlayer
temp1.cadmium.objects.videoPlayer()。getDuration() temp1.cadmium.objects.videoPlayer()寻找(2283839)。 temp1.cadmium.objects.videoPlayer()寻找(4283839);
[![在此处输入图像说明] [1]] [1]
我不确定是否可以完全自动化。您可以通过
访问此侦听器getEventListeners(document.getElementsByTagName("body")[0]).keydown[0].listener
但我不知道如何访问范围变量
击><击> 撞击>
答案 2 :(得分:1)
以德米特里的回应为基础,以10秒的优势向前跳过
player.seek(player.getCurrentTime() - 10000)
答案 3 :(得分:0)
如果您希望netflix在chrome扩展中工作,它只会在netflix的控制台日志中起作用,然后您需要将此代码注入script标记中以使其工作。
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.