Skip to content

Commit

Permalink
send notifications when playback fails
Browse files Browse the repository at this point in the history
  • Loading branch information
LokiLuciferase committed Jul 18, 2023
1 parent 0040f8c commit b811f36
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 13 deletions.
13 changes: 6 additions & 7 deletions lolcatt/casting/caster.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class CastState:
cast_info: dict
info: dict
is_loading: bool = False
media_loaded: bool = False
loading_failed: bool = False
queue_len: int = 0


Expand Down Expand Up @@ -56,7 +56,7 @@ def __init__(
self._catt_config = get_config_as_dict()
self._loading_started = time.time()
self._is_loading_cast = True
self._media_loaded = False
self._media_loading_failed = False
self._loading_timeout = 8
self._update_interval = update_interval
self._autoplay = autoplay
Expand Down Expand Up @@ -268,6 +268,7 @@ def _tick(self):
if self._is_loading_cast and time.time() - self._loading_started > self._loading_timeout:
self._loading_started = None
self._is_loading_cast = False
self._media_loading_failed = True

if self._device.controller.cast_info.get('player_state') in [
'PLAYING',
Expand All @@ -276,9 +277,6 @@ def _tick(self):
]:
self._loading_started = None
self._is_loading_cast = False
self._media_loaded = True
else:
self._media_loaded = False

def get_cast_state(self) -> CastState:
"""
Expand All @@ -289,13 +287,14 @@ def get_cast_state(self) -> CastState:
"""
self._tick()
if self._device is None:
cs = CastState({}, {}, False, False)
cs = CastState({}, {}, False, False, 0)
else:
cs = CastState(
self._device.controller.cast_info,
self._device.controller.info,
is_loading=self._is_loading_cast,
media_loaded=self._media_loaded,
loading_failed=self._media_loading_failed,
queue_len=len(self._queue),
)
self._media_loading_failed = False
return cs
11 changes: 7 additions & 4 deletions lolcatt/ui/lolcatt_playback_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,19 @@ def __init__(self, *args, **kwargs):
self._marquee_gen = None

def _get_playback_info(self) -> str:
playing = self.app.caster.get_cast_state().cast_info.get('title')
display_name = self.app.caster.get_cast_state().info.get('display_name')
is_loading = self.app.caster.get_cast_state().is_loading
state = self.app.caster.get_cast_state()
playing = state.cast_info.get('title')
display_name = state.info.get('display_name')

if playing is not None:
return f'Playing: "{playing}"'
elif display_name is not None and display_name != 'Backdrop':
return f'Displaying: "{display_name}"'
elif is_loading:
elif state.is_loading:
return 'Loading...'
elif state.loading_failed:
self.app.notify('Loading failed.', severity='warning')
return 'Nothing is playing.'
else:
return 'Nothing is playing.'

Expand Down
4 changes: 2 additions & 2 deletions lolcatt/ui/lolcatt_url_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def cast_url(self):
self.app.caster.enqueue(self._input.value, front=True)
self._input.value = ''
self.app.caster.cast_next()
self.notify('Playing...', severity='information', title='Info')
self.notify('Playing...', severity='information')

@on(InputField.Enqueued, '#url_input')
def enqueue_url(self):
Expand All @@ -64,7 +64,7 @@ def enqueue_url(self):
if self._input.value:
self.app.caster.enqueue(self._input.value, front=False)
self._input.value = ''
self.notify('Enqueued.', severity='information', title='Info')
self.notify('Enqueued.', severity='information')

def compose(self):
yield Container(self._input, id='url_input_container')
Expand Down

0 comments on commit b811f36

Please sign in to comment.