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