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.
48 lines
1.4 KiB
JavaScript
48 lines
1.4 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 }, '*');
|
|
});
|
|
|
|
// Listen 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();
|
|
}
|
|
}
|
|
});
|
|
|
|
// Disable keyboard shortcuts
|
|
window.addEventListener(
|
|
'keydown',
|
|
(e) => {
|
|
e.stopPropagation();
|
|
},
|
|
true
|
|
);
|