2 # -*- coding: utf-8 -*-
4 # Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@azylum.org>
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 from datetime import timedelta
27 from lib.goodies import Goodie
35 'sw': ['-r', '--remaining'],
36 'action': 'store_true',
39 'help': 'print remaining play time (only relevant when paused or playing).'},
41 'sw': ['-H', '--human'],
42 'action': 'store_true',
45 'help': 'print duration in human readable format.'},
55 'description': 'Print current playlist duration.',
60 Goodie.__init__(self, self.__class__.script_info,
61 extra_options=NALBUM_OPTS)
64 def _print_time(self, duration):
65 if self.cli_options.human:
66 print(timedelta(seconds=duration))
73 status = self.client.status()
74 plinfo = self.client.playlistinfo()
76 if self.cli_options.remaining:
77 if status.get('state') in ['play', 'pause']:
78 total_time = sum(int(trk.get('time')) for trk in plinfo if int(trk.get('pos')) > int(status.get('song')))
79 # add remaining time from current song
80 curr_elapsed = status.get('time').split(':')
81 total_time += int(curr_elapsed[1]) - int(curr_elapsed[0])
83 total_time = sum(int(trk.get('time')) for trk in plinfo)
84 self._print_time(total_time)
85 self.client.disconnect()
90 if __name__ == '__main__':
93 except KeyboardInterrupt:
94 sys.stdout.write('exit')
97 # vim: ai ts=4 sw=4 sts=4 expandtab