]> kaliko git repositories - mpd-goodies.git/blob - bin/wakeup
Swith to SPDX for license headers
[mpd-goodies.git] / bin / wakeup
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 random import choice
10 from os.path import basename
11
12 import musicpd
13
14
15 VERSION = '0.2'
16
17
18 class WakeUp(musicpd.MPDClient):
19     script_info = dict({
20         'prog': basename(__file__),
21         'description': 'Queues and plays an album chosen at random from a list. Albums list provided from CLI or text file.',
22         'epilog': 'Set MPD host/port in env. var'
23     })
24
25     def __init__(self):
26         musicpd.MPDClient.__init__(self)
27         self._run()
28
29     def _get_args(self):
30         parser = argparse.ArgumentParser(**self.__class__.script_info)
31         parser.add_argument('--version', action='version',
32                             version='v%s' % VERSION)
33         parser.add_argument('-f', type=argparse.FileType('r'), dest='albumf',
34                             help='text file, one album per line', nargs='?')
35         parser.add_argument('album', type=str,
36                             nargs='*', help='album name')
37         args = parser.parse_args()
38         if args.albumf:
39             args.album.extend([line.rstrip(' \n')
40                                for line in args.albumf.readlines()])
41         if not args.album:
42             # parser.print_help()
43             print(
44                 'No album names found on CLI, run "{} -h" for usage'.format(sys.argv[0]))
45             sys.exit(1)
46         return args.album
47
48     def _run(self):
49         albums_list = self._get_args()
50         album = choice(albums_list)
51         print('Queueing "%s"' % album)
52         self.connect()
53         tracks = self.search('album', album)
54         if not tracks:
55             print('No tracks found for "%s"' % album)
56             self.disconnect()
57             sys.exit(1)
58         self.searchadd('album', album)
59         self.disconnect()
60         sys.exit(0)
61
62
63 # Script starts here
64 if __name__ == '__main__':
65     try:
66         WakeUp()
67     except KeyboardInterrupt:
68         print('exit')
69
70 # VIM MODLINE
71 # vim: ai ts=4 sw=4 sts=4 expandtab