Show message when Kodi Player fails to get the stream (#40)

This commit is contained in:
mediaminister 2020-08-23 15:31:10 +00:00 committed by GitHub
parent fd83e93b1d
commit c88e7f37c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 99 additions and 1 deletions

View File

@ -156,6 +156,14 @@ msgctxt "#30718"
msgid "There is no live stream available for {channel}." msgid "There is no live stream available for {channel}."
msgstr "" msgstr ""
msgctxt "#30719"
msgid "This video cannot be played."
msgstr ""
msgctxt "#30720"
msgid "This video is not available abroad."
msgstr ""
### SETTINGS ### SETTINGS
msgctxt "#30800" msgctxt "#30800"

View File

@ -157,6 +157,13 @@ msgctxt "#30718"
msgid "There is no live stream available for {channel}." msgid "There is no live stream available for {channel}."
msgstr "Er is geen live stream beschikbaar voor {channel}." msgstr "Er is geen live stream beschikbaar voor {channel}."
msgctxt "#30719"
msgid "This video cannot be played."
msgstr "Deze video kan niet afgespeeld worden."
msgctxt "#30720"
msgid "This video is not available abroad."
msgstr "Deze video is niet beschikbaar in het buitenland."
### SETTINGS ### SETTINGS

View File

@ -48,3 +48,4 @@ def config():
""" Setup the logger with this handler """ """ Setup the logger with this handler """
logger = logging.getLogger() logger = logging.getLogger()
logger.addHandler(KodiLogHandler()) logger.addHandler(KodiLogHandler())
logger.setLevel(logging.DEBUG)

View File

@ -8,7 +8,7 @@ import logging
import os import os
from time import time from time import time
from xbmc import Monitor from xbmc import getInfoLabel, Monitor, Player
from resources.lib import kodilogging, kodiutils from resources.lib import kodilogging, kodiutils
from resources.lib.viervijfzes.auth import AuthApi from resources.lib.viervijfzes.auth import AuthApi
@ -25,6 +25,7 @@ class BackgroundService(Monitor):
self.update_interval = 24 * 3600 # Every 24 hours self.update_interval = 24 * 3600 # Every 24 hours
self.cache_expiry = 30 * 24 * 3600 # One month self.cache_expiry = 30 * 24 * 3600 # One month
self._auth = AuthApi(kodiutils.get_setting('username'), kodiutils.get_setting('password'), kodiutils.get_tokens_path()) self._auth = AuthApi(kodiutils.get_setting('username'), kodiutils.get_setting('password'), kodiutils.get_tokens_path())
self._kodiplayer = KodiPlayer()
def run(self): def run(self):
""" Background loop for maintenance tasks """ """ Background loop for maintenance tasks """
@ -95,6 +96,87 @@ class BackgroundService(Monitor):
os.unlink(fullpath) os.unlink(fullpath)
class KodiPlayer(Player):
"""Communication with Kodi Player"""
def __init__(self):
"""KodiPlayer initialisation"""
Player.__init__(self)
self.listen = False
self.path = None
self.av_started = False
self.stream_path = None
def onPlayBackStarted(self): # pylint: disable=invalid-name
"""Called when user starts playing a file"""
self.path = getInfoLabel('Player.FilenameAndPath')
if self.path.startswith('plugin://plugin.video.viervijfzes/'):
self.listen = True
else:
self.listen = False
return
_LOGGER.debug('KodiPlayer onPlayBackStarted')
self.av_started = False
self.stream_path = self.getPlayingFile()
def onAVStarted(self): # pylint: disable=invalid-name
"""Called when Kodi has a video or audiostream"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onAVStarted')
self.av_started = True
def onAVChange(self): # pylint: disable=invalid-name
"""Called when Kodi has a video, audio or subtitle stream. Also happens when the stream changes."""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onAVChange')
def onPlayBackSeek(self, time, seekOffset): # pylint: disable=invalid-name, redefined-outer-name
"""Called when user seeks to a time"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackSeek time=%s offset=%s', time, seekOffset)
def onPlayBackPaused(self): # pylint: disable=invalid-name
"""Called when user pauses a playing file"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackPaused')
def onPlayBackResumed(self): # pylint: disable=invalid-name
"""Called when user resumes a paused file or a next playlist item is started"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackResumed')
def onPlayBackError(self): # pylint: disable=invalid-name
"""Called when playback stops due to an error"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackError')
def onPlayBackStopped(self): # pylint: disable=invalid-name
"""Called when user stops Kodi playing a file"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackStopped')
if not self.av_started:
# Check stream path
import requests
response = requests.get(self.stream_path)
if response.status_code == 403:
message_id = 30720
else:
message_id = 30719
kodiutils.ok_dialog(message=kodiutils.localize(message_id))
def onPlayBackEnded(self): # pylint: disable=invalid-name
"""Called when Kodi has ended playing a file"""
if not self.listen:
return
_LOGGER.debug('KodiPlayer onPlayBackEnded')
def run(): def run():
""" Run the BackgroundService """ """ Run the BackgroundService """
BackgroundService().run() BackgroundService().run()