]> kaliko git repositories - mpd-goodies.git/blob - bin/mcrop
Swith to SPDX for license headers
[mpd-goodies.git] / bin / mcrop
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 # SPDX-FileCopyrightText: 2009,2010,2012,2019 kaliko <kaliko@azylum.org>
4 # SPDX-License-Identifier: GPL-3.0-or-later
5
6 import argparse
7 import sys
8
9 from os.path import basename
10
11 import musicpd
12
13 VERSION = '0.2'
14
15
16 class Crop(musicpd.MPDClient):
17     script_info = dict({
18         'prog': basename(__file__),
19         'description': 'Keep <n> tracks before currently played, removed others. Default is to keep 6 tracks.',
20         'epilog': 'Set MPD host/port in env. var'
21     })
22
23     def __init__(self):
24         """"""
25         musicpd.MPDClient.__init__(self)
26         self.nb_tracks = 6
27         self._get_args()
28         self._run()
29
30     def _get_args(self):
31         """"""
32         parser = argparse.ArgumentParser(**self.__class__.script_info)
33         parser.add_argument('--version', action='version',
34                             version='v%s' % VERSION)
35         parser.add_argument('n', type=int, nargs='?',
36                             help='how many titles to crop')
37         args = parser.parse_args()
38         if args.n:
39             self.nb_tracks = args.n
40
41     def _run(self):
42         """"""
43         self.connect()
44         current_pos = int(self.currentsong().get('pos', 0))
45         if current_pos <= self.nb_tracks:
46             self.disconnect()
47             sys.exit(0)
48         print('Keeping %i tracks' % self.nb_tracks)
49         while current_pos > self.nb_tracks:
50             self.delete(0)
51             current_pos = int(self.currentsong().get('pos', 0))
52         self.disconnect()
53         sys.exit(0)
54
55
56 # Script starts here
57 if __name__ == '__main__':
58     try:
59         Crop()
60     except KeyboardInterrupt:
61         sys.stdout.write('exit')
62
63 # VIM MODLINE
64 # vim: ai ts=4 sw=4 sts=4 expandtab