mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2026-04-27 14:00:34 +00:00
feat: decouple segment checking from playback reporting
This commit is contained in:
parent
c2eb46106b
commit
7773d47a4c
2 changed files with 44 additions and 3 deletions
|
|
@ -13,6 +13,7 @@ from .helper import translate, api, window, settings, dialog, event, JSONRPC
|
|||
from .jellyfin import Jellyfin
|
||||
from .helper import LazyLogger
|
||||
from .helper.utils import translate_path
|
||||
from .segments import SegmentChecker
|
||||
|
||||
#################################################################################################
|
||||
|
||||
|
|
@ -28,9 +29,12 @@ class Player(xbmc.Player):
|
|||
skip_segments = {}
|
||||
skip_prompted = set()
|
||||
skip_dialog = None
|
||||
segment_checker = None
|
||||
|
||||
def __init__(self):
|
||||
xbmc.Player.__init__(self)
|
||||
self.segment_checker = SegmentChecker(player=self)
|
||||
self.segment_checker.start()
|
||||
|
||||
def get_playing_file(self):
|
||||
try:
|
||||
|
|
@ -357,9 +361,6 @@ class Player(xbmc.Player):
|
|||
if window("jellyfin.external.bool"):
|
||||
return
|
||||
|
||||
if settings("mediaSegmentsEnabled.bool"):
|
||||
self.check_skip_segments(item, item["CurrentPosition"])
|
||||
|
||||
if not report:
|
||||
previous = item["CurrentPosition"]
|
||||
|
||||
|
|
@ -431,6 +432,9 @@ class Player(xbmc.Player):
|
|||
if not self.played:
|
||||
return
|
||||
|
||||
if self.segment_checker:
|
||||
self.segment_checker.stop()
|
||||
|
||||
LOG.info("Played info: %s", self.played)
|
||||
|
||||
for file in self.played:
|
||||
|
|
|
|||
37
jellyfin_kodi/segments.py
Normal file
37
jellyfin_kodi/segments.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from __future__ import division, absolute_import, print_function, unicode_literals
|
||||
|
||||
import threading
|
||||
import time
|
||||
from .helper import LazyLogger, settings
|
||||
|
||||
LOG = LazyLogger(__name__)
|
||||
|
||||
|
||||
class SegmentChecker(threading.Thread):
|
||||
stop_thread = False
|
||||
|
||||
def __init__(self, player):
|
||||
self.player = player
|
||||
|
||||
threading.Thread.__init__(self)
|
||||
|
||||
def stop(self):
|
||||
self.stop_thread = True
|
||||
|
||||
def run(self):
|
||||
LOG.info("--->[ segment checker ]")
|
||||
|
||||
while not self.stop_thread:
|
||||
try:
|
||||
if settings("mediaSegmentsEnabled.bool"):
|
||||
current_file = self.player.get_playing_file()
|
||||
item = self.player.get_file_info(current_file)
|
||||
current_pos = int(self.player.getTime())
|
||||
self.player.check_skip_segments(item, current_pos)
|
||||
|
||||
except Exception as e:
|
||||
LOG.error("Error in segment checker loop: %s", e)
|
||||
|
||||
time.sleep(0.2)
|
||||
|
||||
LOG.info("---<[ segment checker ]")
|
||||
Loading…
Add table
Add a link
Reference in a new issue