From 795e4d5d1adb8802cc65583f85a73054b3b3f21d Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Tue, 4 May 2021 23:37:53 +0300 Subject: initial --- .gitignore | 3 +++ LICENSE | 25 +++++++++++++++++++++++++ README.md | 7 +++++++ dbpl-util | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100755 dbpl-util diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75b0912 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +venv +__pycache__ +.idea \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3d4446b --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2021, Evgeny Zinoviev +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f78629 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# dbpl-util + +Utility to dump and manipulate DeaDBeeF playlists in DBPL format. + +## License + +BSD-2c \ No newline at end of file diff --git a/dbpl-util b/dbpl-util new file mode 100755 index 0000000..0fe0118 --- /dev/null +++ b/dbpl-util @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +from dbpl import Playlist +from argparse import ArgumentParser +from pprint import pprint + + +if __name__ == '__main__': + parser = ArgumentParser() + parser.add_argument('--input', required=True, + help='input file') + parser.add_argument('--output', + help='output file') + parser.add_argument('--dump', action='store_true', + help='dump track info') + parser.add_argument('--replace-path', nargs=2, type=str, metavar=('SEARCH', 'REPLACE'), + help='change path to files (merely performs str.replace(SEARCH, REPLACE) on each track)') + args = parser.parse_args() + + # read playlist + pl = Playlist(args.input) + + # loop through tracks + for t in pl.tracks: + if args.dump: + pprint(t.__dict__) + print() + + if args.replace_path: + uri = t.get_uri() + uri = uri.replace(args.replace_path[0], args.replace_path[1]) + t.set_uri(uri) + + # save playlist + if args.output: + pl.save(args.output) \ No newline at end of file -- cgit v1.2.3