-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010, 2012 Kaliko Jack <kaliko.jack@azylum.org>
+# Copyright (c) 2009,2010,2012,2019 kaliko <kaliko@azylum.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-
+import argparse
import sys
-
from datetime import timedelta
+import musicpd
-from lib.goodies import Goodie
-
+VERSION = '0.2'
-NAME = 'mtime'
-VERSION = '0.1'
-NALBUM_OPTS = list([
- {
- 'sw': ['-r', '--remaining'],
- 'action': 'store_true',
- 'dest': 'remaining',
- 'metavar': 'r',
- 'help': 'print remaining play time (only relevant when paused or playing).'},
- {
- 'sw': ['-H', '--human'],
- 'action': 'store_true',
- 'dest': 'human',
- 'metavar': 'h',
- 'help': 'print duration in human readable format.'},
- ])
-
-
-class Nalbum(Goodie):
- """
- """
+class Mtime(musicpd.MPDClient):
script_info = dict({
- 'version': VERSION,
- 'prog_name': NAME,
+ 'prog': 'mtime',
'description': 'Print current playlist duration.',
- })
+ 'epilog': 'Set MPD host/port in env. var'
+ })
def __init__(self):
- """"""
- Goodie.__init__(self, self.__class__.script_info,
- extra_options=NALBUM_OPTS)
+ musicpd.MPDClient.__init__(self)
+ self.args = self._get_args()
self._run()
+ def _get_args(self):
+ parser = argparse.ArgumentParser(**self.__class__.script_info)
+ parser.add_argument('--version', action='version',
+ version='v%s' % VERSION)
+ parser.add_argument('-r', '--remaining', action='store_true', dest='remaining',
+ help='print remaining play time (only relevant when paused or playing).',)
+ parser.add_argument('-H', '--human', action='store_true', dest='human',
+ help='print duration in human readable format.',)
+ args = parser.parse_args()
+ return args
+
def _print_time(self, duration):
- if self.cli_options.human:
+ if self.args.human:
print(timedelta(seconds=duration))
else:
print(duration)
def _run(self):
- """"""
- self.mpdConnect()
- status = self.client.status()
- plinfo = self.client.playlistinfo()
+ self.connect()
+ status = self.status()
+ plinfo = self.playlistinfo()
total_time = 0
- if self.cli_options.remaining:
+ if self.args.remaining:
if status.get('state') in ['play', 'pause']:
- total_time = sum(int(trk.get('time')) for trk in plinfo if int(trk.get('pos')) > int(status.get('song')))
+ total_time = sum(int(trk.get('time')) for trk in plinfo if int(
+ trk.get('pos')) > int(status.get('song')))
# add remaining time from current song
curr_elapsed = status.get('time').split(':')
total_time += int(curr_elapsed[1]) - int(curr_elapsed[0])
else:
total_time = sum(int(trk.get('time')) for trk in plinfo)
self._print_time(total_time)
- self.client.disconnect()
+ self.disconnect()
sys.exit(0)
# Script starts here
if __name__ == '__main__':
try:
- Nalbum()
+ Mtime()
except KeyboardInterrupt:
sys.stdout.write('exit')