mirror of
https://github.com/fergalmoran/picard.git
synced 2026-03-06 21:35:09 +00:00
Add options for standardized track, release, and artist names. The interface for this in the options page is still a WIP.
Also allow dragging in a recording URL to load as a NAT.
This commit is contained in:
@@ -143,7 +143,7 @@ class Cluster(QtCore.QObject, Item):
|
||||
total += similarity2(a, b) * self.comparison_weights['title']
|
||||
|
||||
a = self.metadata['artist']
|
||||
b = artist_credit_from_node(release.artist_credit[0])[0]
|
||||
b = artist_credit_from_node(release.artist_credit[0], self.config)[0]
|
||||
total += similarity2(a, b) * self.comparison_weights['artist']
|
||||
|
||||
a = len(self.files)
|
||||
|
||||
@@ -454,7 +454,7 @@ class File(LockableObject, Item):
|
||||
|
||||
if 'artist' in self.metadata:
|
||||
a = self.metadata['artist']
|
||||
b = artist_credit_from_node(track.artist_credit[0])[0]
|
||||
b = artist_credit_from_node(track.artist_credit[0], self.config)[0]
|
||||
parts.append((similarity2(a, b), 4))
|
||||
total += 4
|
||||
|
||||
|
||||
@@ -105,13 +105,14 @@ def _set_artist_item(m, release, albumname, name, value):
|
||||
m[name] = value
|
||||
|
||||
|
||||
def artist_credit_from_node(node):
|
||||
def artist_credit_from_node(node, config=None):
|
||||
artist = ""
|
||||
artistsort = ""
|
||||
standardize_name = config and config.setting["standardize_artists"]
|
||||
for credit in node.name_credit:
|
||||
a = credit.artist[0]
|
||||
artistsort += a.sort_name[0].text
|
||||
if 'name' in credit.children:
|
||||
if 'name' in credit.children and not standardize_name:
|
||||
artist += credit.name[0].text
|
||||
else:
|
||||
artist += a.name[0].text
|
||||
@@ -121,10 +122,10 @@ def artist_credit_from_node(node):
|
||||
return (artist, artistsort)
|
||||
|
||||
|
||||
def artist_credit_to_metadata(node, m=None, release=None):
|
||||
def artist_credit_to_metadata(node, m=None, release=None, config=None):
|
||||
ids = [n.artist[0].id for n in node.name_credit]
|
||||
_set_artist_item(m, release, 'musicbrainz_albumartistid', 'musicbrainz_artistid', ids)
|
||||
artist, artistsort = artist_credit_from_node(node)
|
||||
artist, artistsort = artist_credit_from_node(node, config)
|
||||
_set_artist_item(m, release, 'albumartist', 'artist', artist)
|
||||
_set_artist_item(m, release, 'albumartistsort', 'artistsort', artistsort)
|
||||
|
||||
@@ -133,17 +134,19 @@ def track_to_metadata(node, track, config=None):
|
||||
m = track.metadata
|
||||
recording_to_metadata(node.recording[0], track, config)
|
||||
# overwrite with data we have on the track
|
||||
standardize_title = config and config.setting["standardize_tracks"]
|
||||
standardize_artist = config and config.setting["standardize_artists"]
|
||||
for name, nodes in node.children.iteritems():
|
||||
if not nodes:
|
||||
continue
|
||||
if name == 'title':
|
||||
if name == 'title' and not standardize_title:
|
||||
m['title'] = nodes[0].text
|
||||
if name == 'position':
|
||||
m['tracknumber'] = nodes[0].text
|
||||
elif name == 'length' and nodes[0].text:
|
||||
m.length = int(nodes[0].text)
|
||||
elif name == 'artist_credit':
|
||||
artist_credit_to_metadata(nodes[0], m)
|
||||
elif name == 'artist_credit' and not standardize_artist:
|
||||
artist_credit_to_metadata(nodes[0], m, config=config)
|
||||
|
||||
|
||||
def recording_to_metadata(node, track, config=None):
|
||||
@@ -158,7 +161,7 @@ def recording_to_metadata(node, track, config=None):
|
||||
elif name == 'length' and nodes[0].text:
|
||||
m.length = int(nodes[0].text)
|
||||
elif name == 'artist_credit':
|
||||
artist_credit_to_metadata(nodes[0], m)
|
||||
artist_credit_to_metadata(nodes[0], m, config=config)
|
||||
if name == 'relation_list':
|
||||
_relations_to_metadata(nodes, m, config)
|
||||
elif name == 'release_list' and nodes[0].count != '0':
|
||||
@@ -176,6 +179,7 @@ def recording_to_metadata(node, track, config=None):
|
||||
def release_to_metadata(node, m, config=None, album=None):
|
||||
"""Make metadata dict from a XML 'release' node."""
|
||||
m['musicbrainz_albumid'] = node.attribs['id']
|
||||
standardize_title = config and config.setting["standardize_releases"]
|
||||
|
||||
for name, nodes in node.children.iteritems():
|
||||
if not nodes:
|
||||
@@ -183,14 +187,16 @@ def release_to_metadata(node, m, config=None, album=None):
|
||||
if name == 'release_group':
|
||||
if 'type' in nodes[0].attribs:
|
||||
m['releasetype'] = nodes[0].type.lower()
|
||||
if standardize_title:
|
||||
m['album'] = nodes[0].title[0].text
|
||||
elif name == 'status':
|
||||
m['releasestatus'] = nodes[0].text.lower()
|
||||
elif name == 'title':
|
||||
elif name == 'title' and not standardize_title:
|
||||
m['album'] = nodes[0].text
|
||||
elif name == 'asin':
|
||||
m['asin'] = nodes[0].text
|
||||
elif name == 'artist_credit':
|
||||
artist_credit_to_metadata(nodes[0], m, True)
|
||||
artist_credit_to_metadata(nodes[0], m, True, config=config)
|
||||
elif name == 'date':
|
||||
m['date'] = nodes[0].text
|
||||
elif name == 'country':
|
||||
|
||||
@@ -34,7 +34,7 @@ class CDLookupDialog(QtGui.QDialog):
|
||||
for release in self.releases:
|
||||
item = QtGui.QTreeWidgetItem(self.ui.release_list)
|
||||
item.setText(0, release.title[0].text)
|
||||
item.setText(1, artist_credit_from_node(release.artist_credit[0])[0])
|
||||
item.setText(1, artist_credit_from_node(release.artist_credit[0], self.config)[0])
|
||||
item.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(release.id))
|
||||
self.ui.release_list.setCurrentItem(self.ui.release_list.topLevelItem(0))
|
||||
self.ui.ok_button.setEnabled(True)
|
||||
|
||||
@@ -497,9 +497,15 @@ class BaseTreeView(QtGui.QTreeWidget):
|
||||
files.append(filename)
|
||||
elif url.scheme() == "http":
|
||||
path = unicode(url.path())
|
||||
match = re.search(r"release/([0-9a-z\-]{36})", path)
|
||||
if match:
|
||||
self.tagger.load_album(match.group(1))
|
||||
match = re.search(r"/(release|recording)/([0-9a-z\-]{36})", path)
|
||||
if not match:
|
||||
continue
|
||||
entity = match.group(1)
|
||||
mbid = match.group(2)
|
||||
if entity == "release":
|
||||
self.tagger.load_album(mbid)
|
||||
elif entity == "recording":
|
||||
self.tagger.load_nat(mbid)
|
||||
if files:
|
||||
self.tagger.add_files(files)
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ class MetadataOptionsPage(OptionsPage):
|
||||
BoolOption("setting", "track_ars", False),
|
||||
BoolOption("setting", "folksonomy_tags", False),
|
||||
BoolOption("setting", "convert_punctuation", False),
|
||||
BoolOption("setting", "standardize_tracks", False),
|
||||
BoolOption("setting", "standardize_releases", False),
|
||||
BoolOption("setting", "standardize_artists", False),
|
||||
]
|
||||
|
||||
def __init__(self, parent=None):
|
||||
@@ -58,6 +61,9 @@ class MetadataOptionsPage(OptionsPage):
|
||||
self.ui.folksonomy_tags.setChecked(self.config.setting["folksonomy_tags"])
|
||||
self.ui.va_name.setText(self.config.setting["va_name"])
|
||||
self.ui.nat_name.setText(self.config.setting["nat_name"])
|
||||
self.ui.standardize_tracks.setChecked(self.config.setting["standardize_tracks"])
|
||||
self.ui.standardize_releases.setChecked(self.config.setting["standardize_releases"])
|
||||
self.ui.standardize_artists.setChecked(self.config.setting["standardize_artists"])
|
||||
|
||||
def save(self):
|
||||
self.config.setting["translate_artist_names"] = self.ui.translate_artist_names.isChecked()
|
||||
@@ -67,6 +73,9 @@ class MetadataOptionsPage(OptionsPage):
|
||||
self.config.setting["folksonomy_tags"] = self.ui.folksonomy_tags.isChecked()
|
||||
self.config.setting["va_name"] = self.ui.va_name.text()
|
||||
self.config.setting["nat_name"] = self.ui.nat_name.text()
|
||||
self.config.setting["standardize_tracks"] = self.ui.standardize_tracks.isChecked()
|
||||
self.config.setting["standardize_releases"] = self.ui.standardize_releases.isChecked()
|
||||
self.config.setting["standardize_artists"] = self.ui.standardize_artists.isChecked()
|
||||
|
||||
def set_va_name_default(self):
|
||||
self.ui.va_name.setText(self.options[0].default)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
# Form implementation generated from reading ui file 'ui/options_metadata.ui'
|
||||
#
|
||||
# Created: Sun Apr 10 19:32:51 2011
|
||||
# by: PyQt4 UI code generator 4.7.4
|
||||
# Created: Fri Jun 3 19:41:05 2011
|
||||
# by: PyQt4 UI code generator 4.8.4
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
@@ -12,59 +12,189 @@ from PyQt4 import QtCore, QtGui
|
||||
class Ui_MetadataOptionsPage(object):
|
||||
def setupUi(self, MetadataOptionsPage):
|
||||
MetadataOptionsPage.setObjectName("MetadataOptionsPage")
|
||||
MetadataOptionsPage.resize(423, 445)
|
||||
MetadataOptionsPage.resize(423, 485)
|
||||
self.verticalLayout = QtGui.QVBoxLayout(MetadataOptionsPage)
|
||||
self.verticalLayout.setContentsMargins(-1, 0, -1, -1)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.verticalLayout_2 = QtGui.QVBoxLayout()
|
||||
self.verticalLayout_2.setSpacing(0)
|
||||
self.verticalLayout_2.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
|
||||
self.verticalLayout_2.setContentsMargins(-1, 0, -1, -1)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.rename_files = QtGui.QGroupBox(MetadataOptionsPage)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.rename_files.sizePolicy().hasHeightForWidth())
|
||||
self.rename_files.setSizePolicy(sizePolicy)
|
||||
self.rename_files.setMinimumSize(QtCore.QSize(397, 135))
|
||||
font = QtGui.QFont()
|
||||
self.rename_files.setFont(font)
|
||||
self.rename_files.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.rename_files.setObjectName("rename_files")
|
||||
self.gridLayout = QtGui.QGridLayout(self.rename_files)
|
||||
self.gridLayout.setSpacing(2)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.translate_artist_names = QtGui.QCheckBox(self.rename_files)
|
||||
self.translate_artist_names.setGeometry(QtCore.QRect(13, 34, 380, 21))
|
||||
self.translate_artist_names.setObjectName("translate_artist_names")
|
||||
self.gridLayout.addWidget(self.translate_artist_names, 0, 0, 1, 2)
|
||||
self.convert_punctuation = QtGui.QCheckBox(self.rename_files)
|
||||
self.convert_punctuation.setGeometry(QtCore.QRect(13, 51, 332, 21))
|
||||
self.convert_punctuation.setObjectName("convert_punctuation")
|
||||
self.gridLayout.addWidget(self.convert_punctuation, 1, 0, 1, 2)
|
||||
self.release_ars = QtGui.QCheckBox(self.rename_files)
|
||||
self.release_ars.setGeometry(QtCore.QRect(13, 68, 182, 21))
|
||||
self.release_ars.setObjectName("release_ars")
|
||||
self.gridLayout.addWidget(self.release_ars, 2, 0, 1, 2)
|
||||
self.track_ars = QtGui.QCheckBox(self.rename_files)
|
||||
self.track_ars.setGeometry(QtCore.QRect(13, 85, 170, 21))
|
||||
self.track_ars.setObjectName("track_ars")
|
||||
self.gridLayout.addWidget(self.track_ars, 3, 0, 1, 2)
|
||||
self.folksonomy_tags = QtGui.QCheckBox(self.rename_files)
|
||||
self.folksonomy_tags.setGeometry(QtCore.QRect(13, 102, 215, 21))
|
||||
self.folksonomy_tags.setObjectName("folksonomy_tags")
|
||||
self.gridLayout.addWidget(self.folksonomy_tags, 4, 0, 1, 2)
|
||||
self.verticalLayout.addWidget(self.rename_files)
|
||||
self.verticalLayout_2.addWidget(self.rename_files)
|
||||
self.rename_files_2 = QtGui.QGroupBox(MetadataOptionsPage)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.rename_files_2.sizePolicy().hasHeightForWidth())
|
||||
self.rename_files_2.setSizePolicy(sizePolicy)
|
||||
self.rename_files_2.setMinimumSize(QtCore.QSize(397, 152))
|
||||
self.rename_files_2.setFlat(False)
|
||||
self.rename_files_2.setObjectName("rename_files_2")
|
||||
self.gridlayout = QtGui.QGridLayout(self.rename_files_2)
|
||||
self.gridlayout.setMargin(9)
|
||||
self.label_5 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_5.setGeometry(QtCore.QRect(13, 115, 80, 17))
|
||||
self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.label_3 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_3.setGeometry(QtCore.QRect(13, 65, 71, 17))
|
||||
self.label_3.setLayoutDirection(QtCore.Qt.LeftToRight)
|
||||
self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.standardize_releases = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.standardize_releases.setGeometry(QtCore.QRect(243, 90, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.standardize_releases.sizePolicy().hasHeightForWidth())
|
||||
self.standardize_releases.setSizePolicy(sizePolicy)
|
||||
self.standardize_releases.setText((""))
|
||||
self.standardize_releases.setObjectName("standardize_releases")
|
||||
self.buttonGroup_2 = QtGui.QButtonGroup(MetadataOptionsPage)
|
||||
self.buttonGroup_2.setObjectName("buttonGroup_2")
|
||||
self.buttonGroup_2.addButton(self.standardize_releases)
|
||||
self.label_2 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_2.setGeometry(QtCore.QRect(212, 34, 88, 17))
|
||||
font = QtGui.QFont()
|
||||
font.setWeight(75)
|
||||
font.setBold(True)
|
||||
self.label_2.setFont(font)
|
||||
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.standardize_artists = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.standardize_artists.setGeometry(QtCore.QRect(243, 115, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.standardize_artists.sizePolicy().hasHeightForWidth())
|
||||
self.standardize_artists.setSizePolicy(sizePolicy)
|
||||
self.standardize_artists.setText((""))
|
||||
self.standardize_artists.setObjectName("standardize_artists")
|
||||
self.buttonGroup_3 = QtGui.QButtonGroup(MetadataOptionsPage)
|
||||
self.buttonGroup_3.setObjectName("buttonGroup_3")
|
||||
self.buttonGroup_3.addButton(self.standardize_artists)
|
||||
self.label = QtGui.QLabel(self.rename_files_2)
|
||||
self.label.setGeometry(QtCore.QRect(103, 34, 79, 17))
|
||||
font = QtGui.QFont()
|
||||
font.setWeight(75)
|
||||
font.setBold(True)
|
||||
self.label.setFont(font)
|
||||
self.label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.label.setObjectName("label")
|
||||
self.label_4 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_4.setGeometry(QtCore.QRect(13, 90, 83, 17))
|
||||
self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.artists_on_cover = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.artists_on_cover.setGeometry(QtCore.QRect(129, 115, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.artists_on_cover.sizePolicy().hasHeightForWidth())
|
||||
self.artists_on_cover.setSizePolicy(sizePolicy)
|
||||
self.artists_on_cover.setText((""))
|
||||
self.artists_on_cover.setChecked(True)
|
||||
self.artists_on_cover.setObjectName("artists_on_cover")
|
||||
self.buttonGroup_3.addButton(self.artists_on_cover)
|
||||
self.releases_on_cover = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.releases_on_cover.setGeometry(QtCore.QRect(129, 90, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.releases_on_cover.sizePolicy().hasHeightForWidth())
|
||||
self.releases_on_cover.setSizePolicy(sizePolicy)
|
||||
self.releases_on_cover.setText((""))
|
||||
self.releases_on_cover.setChecked(True)
|
||||
self.releases_on_cover.setObjectName("releases_on_cover")
|
||||
self.buttonGroup_2.addButton(self.releases_on_cover)
|
||||
self.standardize_tracks = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.standardize_tracks.setEnabled(True)
|
||||
self.standardize_tracks.setGeometry(QtCore.QRect(243, 65, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.standardize_tracks.sizePolicy().hasHeightForWidth())
|
||||
self.standardize_tracks.setSizePolicy(sizePolicy)
|
||||
self.standardize_tracks.setMinimumSize(QtCore.QSize(0, 0))
|
||||
self.standardize_tracks.setText((""))
|
||||
self.standardize_tracks.setObjectName("standardize_tracks")
|
||||
self.buttonGroup = QtGui.QButtonGroup(MetadataOptionsPage)
|
||||
self.buttonGroup.setObjectName("buttonGroup")
|
||||
self.buttonGroup.addButton(self.standardize_tracks)
|
||||
self.tracks_on_cover = QtGui.QRadioButton(self.rename_files_2)
|
||||
self.tracks_on_cover.setGeometry(QtCore.QRect(129, 65, 19, 18))
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.tracks_on_cover.sizePolicy().hasHeightForWidth())
|
||||
self.tracks_on_cover.setSizePolicy(sizePolicy)
|
||||
self.tracks_on_cover.setLayoutDirection(QtCore.Qt.LeftToRight)
|
||||
self.tracks_on_cover.setText((""))
|
||||
self.tracks_on_cover.setIconSize(QtCore.QSize(16, 16))
|
||||
self.tracks_on_cover.setChecked(True)
|
||||
self.tracks_on_cover.setObjectName("tracks_on_cover")
|
||||
self.buttonGroup.addButton(self.tracks_on_cover)
|
||||
self.verticalLayout_2.addWidget(self.rename_files_2)
|
||||
self.rename_files_3 = QtGui.QGroupBox(MetadataOptionsPage)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.rename_files_3.sizePolicy().hasHeightForWidth())
|
||||
self.rename_files_3.setSizePolicy(sizePolicy)
|
||||
self.rename_files_3.setMinimumSize(QtCore.QSize(397, 0))
|
||||
self.rename_files_3.setObjectName("rename_files_3")
|
||||
self.gridlayout = QtGui.QGridLayout(self.rename_files_3)
|
||||
self.gridlayout.setSpacing(2)
|
||||
self.gridlayout.setObjectName("gridlayout")
|
||||
self.label_3 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.gridlayout.addWidget(self.label_3, 0, 0, 1, 2)
|
||||
self.label_4 = QtGui.QLabel(self.rename_files_2)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridlayout.addWidget(self.label_4, 2, 0, 1, 2)
|
||||
self.nat_name = QtGui.QLineEdit(self.rename_files_2)
|
||||
self.label_6 = QtGui.QLabel(self.rename_files_3)
|
||||
self.label_6.setObjectName("label_6")
|
||||
self.gridlayout.addWidget(self.label_6, 0, 0, 1, 2)
|
||||
self.label_7 = QtGui.QLabel(self.rename_files_3)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridlayout.addWidget(self.label_7, 2, 0, 1, 2)
|
||||
self.nat_name = QtGui.QLineEdit(self.rename_files_3)
|
||||
self.nat_name.setObjectName("nat_name")
|
||||
self.gridlayout.addWidget(self.nat_name, 3, 0, 1, 1)
|
||||
self.nat_name_default = QtGui.QPushButton(self.rename_files_2)
|
||||
self.nat_name_default = QtGui.QPushButton(self.rename_files_3)
|
||||
self.nat_name_default.setObjectName("nat_name_default")
|
||||
self.gridlayout.addWidget(self.nat_name_default, 3, 1, 1, 1)
|
||||
self.va_name_default = QtGui.QPushButton(self.rename_files_2)
|
||||
self.va_name_default = QtGui.QPushButton(self.rename_files_3)
|
||||
self.va_name_default.setObjectName("va_name_default")
|
||||
self.gridlayout.addWidget(self.va_name_default, 1, 1, 1, 1)
|
||||
self.va_name = QtGui.QLineEdit(self.rename_files_2)
|
||||
self.va_name = QtGui.QLineEdit(self.rename_files_3)
|
||||
self.va_name.setObjectName("va_name")
|
||||
self.gridlayout.addWidget(self.va_name, 1, 0, 1, 1)
|
||||
self.verticalLayout.addWidget(self.rename_files_2)
|
||||
spacerItem1 = QtGui.QSpacerItem(261, 16, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem1)
|
||||
self.label_3.setBuddy(self.va_name_default)
|
||||
self.label_4.setBuddy(self.nat_name_default)
|
||||
self.verticalLayout_2.addWidget(self.rename_files_3)
|
||||
self.verticalLayout.addLayout(self.verticalLayout_2)
|
||||
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.MinimumExpanding)
|
||||
self.verticalLayout.addItem(spacerItem)
|
||||
self.label_6.setBuddy(self.va_name_default)
|
||||
self.label_7.setBuddy(self.nat_name_default)
|
||||
|
||||
self.retranslateUi(MetadataOptionsPage)
|
||||
QtCore.QMetaObject.connectSlotsByName(MetadataOptionsPage)
|
||||
@@ -74,14 +204,21 @@ class Ui_MetadataOptionsPage(object):
|
||||
MetadataOptionsPage.setTabOrder(self.nat_name, self.nat_name_default)
|
||||
|
||||
def retranslateUi(self, MetadataOptionsPage):
|
||||
self.rename_files.setTitle(_("Metadata"))
|
||||
self.rename_files.setTitle(_("MetadataOptionsPage"))
|
||||
self.translate_artist_names.setText(_("Translate foreign artist names to English where possible"))
|
||||
self.convert_punctuation.setText(_("Convert Unicode punctuation characters to ASCII"))
|
||||
self.release_ars.setText(_("Use release relationships"))
|
||||
self.track_ars.setText(_("Use track relationships"))
|
||||
self.folksonomy_tags.setText(_("Use folksonomy tags as genre"))
|
||||
self.rename_files_2.setTitle(_("Custom Fields"))
|
||||
self.label_3.setText(_("Various artists:"))
|
||||
self.label_4.setText(_("Non-album tracks:"))
|
||||
self.rename_files_2.setTitle(_("Standardization"))
|
||||
self.label_5.setText(_("Artist names"))
|
||||
self.label_3.setText(_("Track titles"))
|
||||
self.label_2.setText(_("Standardized"))
|
||||
self.label.setText(_("As on cover"))
|
||||
self.label_4.setText(_("Release titles"))
|
||||
self.rename_files_3.setTitle(_("Custom Fields"))
|
||||
self.label_6.setText(_("Various artists:"))
|
||||
self.label_7.setText(_("Non-album tracks:"))
|
||||
self.nat_name_default.setText(_("Default"))
|
||||
self.va_name_default.setText(_("Default"))
|
||||
|
||||
|
||||
@@ -7,118 +7,470 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>423</width>
|
||||
<height>445</height>
|
||||
<height>485</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rename_files">
|
||||
<property name="title">
|
||||
<string>Metadata</string>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rename_files">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>397</width>
|
||||
<height>135</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<kerning>false</kerning>
|
||||
</font>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Metadata</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<widget class="QCheckBox" name="translate_artist_names">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>34</y>
|
||||
<width>380</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Translate foreign artist names to English where possible</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="convert_punctuation">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>51</y>
|
||||
<width>332</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Convert Unicode punctuation characters to ASCII</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="release_ars">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>68</y>
|
||||
<width>182</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use release relationships</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="track_ars">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>85</y>
|
||||
<width>170</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use track relationships</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="folksonomy_tags">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>102</y>
|
||||
<width>215</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use folksonomy tags as genre</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rename_files_2">
|
||||
<property name="title">
|
||||
<string>Custom Fields</string>
|
||||
</property>
|
||||
<layout class="QGridLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="0" colspan="2">
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rename_files_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>397</width>
|
||||
<height>152</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Standardization</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>115</y>
|
||||
<width>80</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Artist names</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Various artists:</string>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>65</y>
|
||||
<width>71</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>va_name_default</cstring>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Track titles</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="standardize_releases">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>243</x>
|
||||
<y>90</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup_2</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>212</x>
|
||||
<y>34</y>
|
||||
<width>88</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Standardized</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="standardize_artists">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>243</x>
|
||||
<y>115</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup_3</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>103</x>
|
||||
<y>34</y>
|
||||
<width>79</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>As on cover</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Non-album tracks:</string>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>13</x>
|
||||
<y>90</y>
|
||||
<width>83</width>
|
||||
<height>17</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>nat_name_default</cstring>
|
||||
<property name="text">
|
||||
<string>Release titles</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLineEdit" name="nat_name"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="nat_name_default">
|
||||
<property name="text">
|
||||
<string>Default</string>
|
||||
<widget class="QRadioButton" name="artists_on_cover">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>129</x>
|
||||
<y>115</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="va_name_default">
|
||||
<property name="text">
|
||||
<string>Default</string>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup_3</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="va_name"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="releases_on_cover">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>129</x>
|
||||
<y>90</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup_2</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="standardize_tracks">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>243</x>
|
||||
<y>65</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="tracks_on_cover">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>129</x>
|
||||
<y>65</y>
|
||||
<width>19</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>16</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="buttonGroup">
|
||||
<string>buttonGroup</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="rename_files_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>397</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Custom Fields</string>
|
||||
</property>
|
||||
<layout class="QGridLayout">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Various artists:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>va_name_default</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Non-album tracks:</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>nat_name_default</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLineEdit" name="nat_name"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="nat_name_default">
|
||||
<property name="text">
|
||||
<string>Default</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="va_name_default">
|
||||
<property name="text">
|
||||
<string>Default</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="va_name"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::MinimumExpanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>261</width>
|
||||
<height>16</height>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
@@ -134,4 +486,9 @@
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
<buttongroups>
|
||||
<buttongroup name="buttonGroup_2"/>
|
||||
<buttongroup name="buttonGroup_3"/>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
||||
Reference in New Issue
Block a user