cplay-ng

simple curses audio player
git clone https://git.ce9e.org/cplay-ng.git

commit
93ca7a23015cb0575a2aefd4bc4a24126b71564e
parent
f596e3b2b47fdefe6bef8f29849e24815505c13a
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2022-11-22 07:53
display current title from stream

Diffstat

M cplay.py 12 +++++++++++-

1 files changed, 11 insertions, 1 deletions


diff --git a/cplay.py b/cplay.py

@@ -141,6 +141,7 @@ class Player:
  141   141         self.path = None
  142   142         self.position = 0
  143   143         self.length = 0
   -1   144         self.metadata = None
  144   145         self._seek_step = 0
  145   146         self._seek_timeout = None
  146   147         self.is_playing = False
@@ -164,6 +165,7 @@ class Player:
  164   165 
  165   166         self._ipc('observe_property', 1, 'time-pos')
  166   167         self._ipc('observe_property', 2, 'duration')
   -1   168         self._ipc('observe_property', 3, 'metadata')
  167   169 
  168   170     def _ipc(self, cmd, *args):
  169   171         data = json.dumps({'command': [cmd, *args]})
@@ -177,6 +179,8 @@ class Player:
  177   179         elif data.get('event') == 'property-change' and data['id'] == 2:
  178   180             if data.get('data') is not None:
  179   181                 self.length = data['data']
   -1   182         elif data.get('event') == 'property-change' and data['id'] == 3:
   -1   183             self.metadata = data.get('data')
  180   184         elif data.get('event') == 'end-file':
  181   185             self._playing -= 1
  182   186 
@@ -193,6 +197,12 @@ class Player:
  193   197             return 0
  194   198         return self.position / self.length
  195   199 
   -1   200     def get_title(self):
   -1   201         title = relpath(self.path)
   -1   202         if self.metadata and 'icy-title' in self.metadata:
   -1   203             title = '{} [{}]'.format(title, self.metadata['icy-title'])
   -1   204         return title
   -1   205 
  196   206     def stop(self):
  197   207         self.is_playing = False
  198   208         self._ipc('stop')
@@ -711,7 +721,7 @@ class Application:
  711   721         elif self.tab == helplist:
  712   722             status = __version__
  713   723         elif player.is_playing:
  714    -1             status = 'Playing %s' % relpath(player.path)
   -1   724             status = 'Playing %s' % player.get_title()
  715   725         else:
  716   726             status = ''
  717   727