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.
Turtle/extension/netflix.js

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
);