# -*- coding: utf-8 -*- PLUGIN_NAME = u"Copy Cluster to Clipboard" PLUGIN_AUTHOR = u"Michael Elsdörfer" PLUGIN_DESCRIPTION = "Exports a cluster's tracks to the clipboard, so it can be copied into the tracklist field on MusicBrainz" PLUGIN_VERSION = "0.1" PLUGIN_API_VERSIONS = ["0.9.0", "0.10", "0.15"] from PyQt4 import QtCore, QtGui from picard.cluster import Cluster from picard.util import format_time from picard.ui.itemviews import BaseAction, register_cluster_action class CopyClusterToClipboard(BaseAction): NAME = "Copy Cluster to Clipboard..." def callback(self, objs): if len(objs) != 1 or not isinstance(objs[0], Cluster): return cluster = objs[0] artists = set() for i, file in enumerate(cluster.files): artists.add(file.metadata["artist"]) tracks = [] for i, file in enumerate(cluster.files): try: i = int(file.metadata["tracknumber"]) except: i += 1 if len(artists) > 1: tracks.append((i, "%s. %s - %s (%s)" % ( i, file.metadata["title"], file.metadata["artist"], format_time(file.metadata.length)))) else: tracks.append((i, "%s. %s (%s)" % ( i, file.metadata["title"], format_time(file.metadata.length)))) clipboard = QtGui.QApplication.clipboard() clipboard.setText("\n".join(map(lambda x: x[1], sorted(tracks)))) register_cluster_action(CopyClusterToClipboard())