]> kaliko git repositories - mpd-goodies.git/blob - crop
944241a1c4bcf35723a2a0bdb0a6d70cd737f050
[mpd-goodies.git] / crop
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 # Copyright (c) 2009, 2010 Efrim <efrim@azylum.org> {{{
5 #
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.
10 #
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.
15 #
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/>.
18 #
19 #  }}}
20
21
22 import sys
23
24 from lib.mpdclass import MPDClass
25 from lib.startop import StartOpt
26
27 NAME = 'crop'
28 VERSION = '0.1'
29 USAGE = 'USAGE:  %prog [--help] | [ <n> ]'
30
31 class Crop(StartOpt, MPDClass):
32     """
33     """
34     script_info = dict({
35         'version': VERSION,
36         'prog_name': NAME,
37         'description': 'Keep <n> tracks before currently played, removed others. Default is to keep 6 tracks.',
38         'usage': USAGE,
39         })
40
41     def __init__(self):
42         """"""
43         StartOpt.__init__(self, self.__class__.script_info, [])
44         MPDClass.__init__(self)
45         self.nb_tracks = 6
46         self._get_arg()
47         self._run()
48
49     def _get_arg(self):
50         """"""
51         if not self.cli_args:
52             return True
53         try:
54             self.nb_tracks = int(self.cli_args[0])
55         except ValueError, err:
56             self.parser.error('invalid argument, not a natural number? (%s)' % err)
57
58     def _run(self):
59         """"""
60         print 'Connecting %s:%i' % (self.cli_options.host, self.cli_options.port)
61         print 'Keeping %i tracks' % self.nb_tracks
62         self.mpdConnect()
63         current_pos = int(self.client.currentsong().get('pos', 0))
64         if current_pos <=  self.nb_tracks:
65             self.client.disconnect()
66             sys.exit(0)
67         while current_pos > self.nb_tracks:
68             self.client.delete(0)
69             current_pos = int(self.client.currentsong().get('pos', 0))
70         self.client.disconnect()
71         sys.exit(0)
72
73
74 # Script starts here
75 if __name__ == '__main__':
76     try:
77         Crop()
78     except KeyboardInterrupt:
79         sys.stdout.write('exit')
80
81 # VIM MODLINE
82 # vim: ai ts=4 sw=4 sts=4 expandtab