From 7bb00db7bf6b173bdcac89524bdc69c3d054d485 Mon Sep 17 00:00:00 2001 From: Travis Shivers Date: Tue, 12 May 2020 20:30:40 -0500 Subject: [PATCH 1/3] Autoplay if rawTitle sent from host doesn't match the rawTitle the host sent last time an autoplay was done --- src/store/modules/synclounge.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/store/modules/synclounge.js b/src/store/modules/synclounge.js index bc2e93f0..8790d458 100644 --- a/src/store/modules/synclounge.js +++ b/src/store/modules/synclounge.js @@ -306,7 +306,7 @@ export default { // Check if we need to autoplay if ( (ourTimeline.state === 'stopped' || !ourTimeline.state) && - hostTimeline.playerState !== 'stopped' + hostTimeline.playerState !== 'stopped' || rootState.rawTitle !== hostTimeline.rawTitle ) { if (rootState.blockAutoPlay || !hostTimeline.rawTitle) { return resolve(); @@ -327,6 +327,7 @@ export default { }); } + rootState.rawTitle = hostTimeline.rawTitle; sendNotification(`Searching Plex Servers for "${hostTimeline.rawTitle}"`); const result = await rootState.chosenClient .playContentAutomatically( From 27e63d4c06b9e8cce19e68dcfa89f700c34fa73e Mon Sep 17 00:00:00 2001 From: Travis Shivers Date: Mon, 18 May 2020 16:18:25 -0500 Subject: [PATCH 2/3] Player keeps its place when changing quality/audio/subtitles --- src/components/application/ptplayer.vue | 6 ++++++ src/components/application/ptplayer/videoplayer.vue | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/application/ptplayer.vue b/src/components/application/ptplayer.vue index 7fa6d301..e1df1089 100644 --- a/src/components/application/ptplayer.vue +++ b/src/components/application/ptplayer.vue @@ -638,6 +638,11 @@ export default { return; } + if (!changeItem) { + // Update offset to current time to resume where we were + this.offset = this.playertime; + } + const req = () => { this.sources = this.generateSources(); request(this.getSourceByLabel(this.chosenQuality).initUrl, (error, response, body) => { @@ -766,6 +771,7 @@ export default { session: this.sessionId, offset: 0, // offset: Math.round(this.playertime / 1000), + time: Math.round(this.playertime / 1000), subtitles: 'burn', copyts: 1, 'Accept-Language': 'en', diff --git a/src/components/application/ptplayer/videoplayer.vue b/src/components/application/ptplayer/videoplayer.vue index d3054ec9..045093a5 100644 --- a/src/components/application/ptplayer/videoplayer.vue +++ b/src/components/application/ptplayer/videoplayer.vue @@ -316,9 +316,6 @@ export default { }, onPlayerLoadeddata(player) { const that = this; - this.$nextTick(() => { - this.player.currentTime(this.initialOffset / 1000); - }); player.on(['pause'], () => { this.isPlaying = 'paused'; @@ -425,6 +422,7 @@ export default { playerReadied(player) { // console.log('Setting volume to ' + this.$store.getters.getSettingPTPLAYERVOLUME ) this.player.volume(this.$store.getters.getSettings.PTPLAYERVOLUME || 0); + this.player.currentTime(this.initialOffset / 1000); }, }, From 230ca5728a2d521fca78924fdfa45b7eae97fa46 Mon Sep 17 00:00:00 2001 From: Travis Shivers Date: Wed, 20 May 2020 00:07:27 -0500 Subject: [PATCH 3/3] More permissive CORS policies --- server.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index c20b4f0f..654d2fcd 100644 --- a/server.js +++ b/server.js @@ -15,6 +15,7 @@ const SettingsHelper = require('./SettingsHelper'); const settings = new SettingsHelper(); const root = express(); +root.options('*', cors()) // enable pre-flight across-the-board root.use(cors({ credentials: false })); root.use((req, res, next) => { res.setHeader('Access-Control-Allow-Credentials', false); @@ -53,7 +54,18 @@ root.use(serverRoot, ptserver); root.get('*', (req, res) => res.send('You\'ve connected to the SLServer, you\'re probably looking for the webapp.')); const rootserver = require('http').createServer(root); -const ptserver_io = require('socket.io')(rootserver, { path: `${serverRoot}/socket.io` }); +const ptserver_io = require('socket.io')(rootserver, { + path: `${serverRoot}/socket.io`, + handlePreflightRequest: (req, res) => { + var headers = { + 'Access-Control-Allow-Headers': 'Content-Type, Authorization', + 'Access-Control-Allow-Origin': req.headers.origin || '*', + 'Access-Control-Allow-Credentials': true + }; + res.writeHead(200, headers); + res.end(); + } +}); ptserver_io.on('connection', (socket) => { console.log('Someone connected to the SyncLounge server socket');