mirror of https://github.com/shuang854/Turtle
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
const videoPlayer = netflix.appContext.state.playerApp.getAPI().videoPlayer;
|
|
const playerSessionId = videoPlayer.getAllPlayerSessionIds()[0];
|
|
const netflixPlayer = videoPlayer.getVideoPlayerBySessionId(playerSessionId);
|
|
const player = document.getElementsByTagName('video')[0];
|
|
window.parent.postMessage('video ready', '*');
|
|
|
|
// Subscribe listeners on client-side actions
|
|
player.addEventListener('play', (ev) => {
|
|
window.parent.postMessage({ type: 'play', time: player.currentTime }, '*');
|
|
});
|
|
|
|
player.addEventListener('pause', (ev) => {
|
|
window.parent.postMessage({ type: 'pause', time: player.currentTime }, '*');
|
|
});
|
|
|
|
// Subscribe listener for syncing requests
|
|
window.addEventListener('message', (ev) => {
|
|
let type = ev.data.type;
|
|
|
|
// Handle status request event
|
|
if (ev.data.toString() === 'fetch current status') {
|
|
ev.ports[0].postMessage({ isPlaying: player.paused, time: player.currentTime });
|
|
}
|
|
|
|
// Handle seeking event
|
|
if (type === 'seek') {
|
|
netflixPlayer.seek(Number(ev.data.currentTime * 1000)); // Netflix Player object is needed to seek
|
|
}
|
|
|
|
// Handle playing event
|
|
if (type === 'playing') {
|
|
if (ev.data.playing && player.paused) {
|
|
player.play();
|
|
}
|
|
if (!ev.data.playing && !player.paused) {
|
|
player.pause();
|
|
}
|
|
}
|
|
});
|