X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=mtopls;h=78476c60b72b0bc18da9a44d63612b3f97eb143a;hb=bc382cb2c3140986efbf1d8786e2a58655c26b16;hp=e1d5dace9c86f6b867069cdf2a9c0e2b31fb7bd3;hpb=3a2a74abe7f1e9916b12cd4f7f90ff6bfc12e890;p=mpd-goodies.git diff --git a/mtopls b/mtopls index e1d5dac..78476c6 100755 --- a/mtopls +++ b/mtopls @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2009 Efrim {{{ +# Copyright (c) 2009, 2010 Efrim {{{ # # 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 @@ -27,14 +27,21 @@ import sys from os import (access, F_OK, W_OK) from os.path import (dirname, isfile, join, abspath) -from lib.mpdutils import mconnect +from lib.mpdutils import (mconnect, collapse_tags) USAGE = """Usage: mtopls [] [--help | -h | help] - If no playlist is specifed a new one is created in /var/lib/mpd/playlist/ - named after genre of current playlist. + Add the current track to playlist. + + The default playlist, if none specified, is named after the current track's + genre within /var/lib/mpd/playlists/ (creating it if not existing). + + Obviously the script is meant to be executed on hosts where + /var/lib/mpd/playlists/ makes sense or where file entries in the playlist + make sense for you (cf. "man 5 mpd.conf" especially + save_absolute_paths_in_playlists option). """ @@ -49,14 +56,13 @@ class MtoPls(object): self.current = self.cli.currentsong() self.cli.disconnect() self._consume_sopt() - self._create_playlist() self._controls_perm() + self._create_playlist() self._run() def _consume_sopt(self): """""" - if len(sys.argv) > 2 or \ - len(sys.argv) == 2 and \ + if len(sys.argv) >= 2 and \ sys.argv[1] in ['-h', '--help', 'help']: sys.stdout.write(USAGE) sys.exit(1) @@ -64,7 +70,7 @@ class MtoPls(object): self.pls_path = sys.argv[1] if not dirname(self.pls_path): self.pls_path = abspath(sys.argv[1]) - sys.stdout.write('Playlist set to "%s"\n' % self.pls_path) + print >> sys.stdout, ('Playlist set to "%s"' % self.pls_path) return if len(sys.argv) == 1: self._set_playlist() @@ -79,11 +85,11 @@ class MtoPls(object): if not access(mpd_playlists, F_OK): sys.stderr.write('Error: No access to "%s"' % self.pls_path) sys.exit(1) - genre = self.current.get('genre', None) + genre = collapse_tags(self.current.get('genre', None)) if not genre: - sys.stderr.write('Error: No genre set in %s' % + sys.stderr.write('Error: No genre set in %s\n' % self.current.get('file')) - sys.stdout.write('Please provide a playlist.') + print >> sys.stdout, ('Please provide a playlist.') sys.exit(1) genre += '.m3u' self.pls_path = join('/var/lib/mpd/playlists/', genre) @@ -91,7 +97,7 @@ class MtoPls(object): def _create_playlist(self): if not isfile(self.pls_path): # TODO: add M3U header - sys.stdout.write('Create new playlist: %s\n' % self.pls_path) + print >> sys.stdout, ('Create new playlist: %s' % self.pls_path) open(self.pls_path, 'a').close() def _controls_perm(self): @@ -108,11 +114,12 @@ class MtoPls(object): def _run(self): """""" - # TODO: controls file is not already in playlist + # TODO: controls either file is already in playlist or not + print >> sys.stdout, ('Writing to %s' % self.pls_path) fd = open(self.pls_path, 'a') - fd.write(self.current.get('file')) - fd.write('\n') + fd.write(self.current.get('file') + '\n') fd.close() + pass # Script starts here if __name__ == '__main__':