From 2d82aa85b56d39839a4a7f8838070f79e1a39f56 Mon Sep 17 00:00:00 2001 From: kerobaros Date: Sat, 1 Nov 2014 21:47:55 -0500 Subject: [PATCH] Starting on freedesktop plugin. --- beetsplug/freedesktop.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 beetsplug/freedesktop.py diff --git a/beetsplug/freedesktop.py b/beetsplug/freedesktop.py new file mode 100644 index 000000000..f3dc3f5d5 --- /dev/null +++ b/beetsplug/freedesktop.py @@ -0,0 +1,43 @@ +from beets.plugins import BeetsPlugin +from beets.ui import Subcommand + +from beets.ui import decargs + +import os.path + +freedesktop_command = Subcommand("freedesktop", help="Create .directory files") + + +def process_query(lib, opts, args): + for album in lib.albums(decargs(args)): + albumpath = album.item_dir() + fullartpath = album.artpath + artfile = os.path.split(fullartpath)[1] + create_file(albumpath, artfile) + + +def create_file(albumpath, artfile): + file_contents = "[Desktop Entry]\nIcon=./" + artfile + outfilename = os.path.join(albumpath, ".directory") + + if not os.path.exists(outfilename): + file = open(outfilename, 'w') + file.write(file_contents) + file.close() + pass + + +freedesktop_command.func = process_query + + +class FreedesktopPlugin(BeetsPlugin): + """Creates freedesktop.org-compliant .directory files on an album level. + """ + def __init__(self): + super(FreedesktopPlugin, self).__init__() + self.config.add({ + 'auto': False + }) + + def commands(self): + return [freedesktop_command]