diff --git a/syncplay/client.py b/syncplay/client.py index bfc0320..4e1caf9 100755 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -500,6 +500,9 @@ class SyncplayClient(object): return True return self._globalPaused + def eofReportedByPlayer(self, filepath): + self.playlist.eofReportedByPlayer(filepath) + def updateFile(self, filename, duration, path): self.lastUpdatedFileTime = time.time() newPath = "" @@ -1963,6 +1966,11 @@ class SyncplayPlaylist(): secondsSinceLastChange = time.time() - self._lastPlaylistIndexChange return secondsSinceLastChange > constants.PLAYLIST_LOAD_NEXT_FILE_TIME_FROM_END_THRESHOLD + def eofReportedByPlayer(self, filepath): + if self.notJustChangedPlaylist(): + self._ui.showDebugMessage("Advancing to next item in playlist due to media player EOF report: {}".format(filepath)) + self.loadNextFileInPlaylist() + @needsSharedPlaylistsEnabled def loadNextFileInPlaylist(self): if self._notPlayingCurrentIndex(): diff --git a/syncplay/players/mpv.py b/syncplay/players/mpv.py index 6b2e2a5..6c3fd42 100755 --- a/syncplay/players/mpv.py +++ b/syncplay/players/mpv.py @@ -213,6 +213,9 @@ class MpvPlayer(BasePlayer): else: return self._position + def eofDetected(self, path): + self._client.eofReportedByPlayer(path) + def _storePosition(self, value): if value is None: self._client.ui.showDebugMessage("NONE TYPE POSITION!") @@ -420,6 +423,9 @@ class MpvPlayer(BasePlayer): def _handleUnknownLine(self, line): self.mpvErrorCheck(line) + if "" in line: + line = line[5:-6] + self.eofDetected(line) if "" in line: line = line.replace(constants.MPV_INPUT_BACKSLASH_SUBSTITUTE_CHARACTER, "\\") diff --git a/syncplay/resources/syncplayintf.lua b/syncplay/resources/syncplayintf.lua index d7be2c2..01eae25 100644 --- a/syncplay/resources/syncplayintf.lua +++ b/syncplay/resources/syncplayintf.lua @@ -295,6 +295,15 @@ end chat_timer=mp.add_periodic_timer(TICK_INTERVAL, chat_update) +mp.observe_property('eof-reached', 'bool', function(e) + if mp.get_property_native("eof-reached") == true then + line = mp.get_property_native("path") + line = line.gsub(line,"\\", "\\\\") + mp.command('print-text "' .. line .. '"') + end +end) + + mp.register_script_message('chat', function(e) add_chat(e) end) @@ -985,7 +994,7 @@ function readyMpvAfterSettingsKnown() add_repl_alpharow_bindings(alpharowbindings) mp.add_forced_key_binding('tab', handle_tab) end - end + end syncplayintfSet = true end end