Nuke track/release standardization options

This commit is contained in:
Michael Wiencek
2011-10-17 14:33:38 -05:00
parent 5815f43914
commit 6c1803397d
4 changed files with 23 additions and 657 deletions

View File

@@ -52,10 +52,6 @@ def _decamelcase(text):
return re.sub(r'([A-Z])', r' \1', text).strip()
def _setting(config, name):
return config and config.setting[name]
_REPLACE_MAP = {}
_EXTRA_ATTRS = ['guest', 'additional', 'minor']
def _parse_attributes(attrs):
@@ -111,7 +107,7 @@ def _relations_to_metadata(relation_lists, m, config):
def _translate_artist_node(node, config=None):
transl = None
if _setting(config, 'translate_artist_names'):
if config and config.setting['translate_artist_names']:
locale = config.setting["artist_locale"]
lang = locale.split("_")[0]
if "alias_list" in node.children:
@@ -136,7 +132,7 @@ def artist_credit_from_node(node, config=None):
if transl:
artist += transl
else:
if 'name' in credit.children and not _setting(config, "standardize_artists"):
if 'name' in credit.children and not (config and config.setting["standardize_artists"]):
artist += credit.name[0].text
else:
artist += a.name[0].text
@@ -188,21 +184,18 @@ def media_formats_from_node(node):
def track_to_metadata(node, track, config):
m = track.metadata
recording_to_metadata(node.recording[0], track, config)
transl = m['releasestatus'] == "pseudo-release"
# overwrite with data we have on the track
for name, nodes in node.children.iteritems():
if not nodes:
continue
if name == 'title':
if not config.setting["standardize_tracks"] or transl:
m['title'] = nodes[0].text
m['title'] = nodes[0].text
elif name == 'position':
m['tracknumber'] = nodes[0].text
elif name == 'length' and nodes[0].text:
m.length = int(nodes[0].text)
elif name == 'artist_credit':
if not config.setting["standardize_artists"] or transl:
artist_credit_to_metadata(nodes[0], m, config)
artist_credit_to_metadata(nodes[0], m, config)
def recording_to_metadata(node, track, config):
@@ -249,26 +242,21 @@ def medium_to_metadata(node, m):
def release_to_metadata(node, m, config, album=None):
"""Make metadata dict from a XML 'release' node."""
m['musicbrainz_albumid'] = node.attribs['id']
if "status" in node.children:
m['releasestatus'] = node.status[0].text.lower()
transl = m['releasestatus'] == "pseudo-release"
for name, nodes in node.children.iteritems():
if not nodes:
continue
if name == 'release_group':
release_group_to_metadata(nodes[0], m, config, album)
elif name == 'status':
m['releasestatus'] = nodes[0].text.lower()
elif name == 'title':
if not config.setting["standardize_releases"] or transl:
m['album'] = nodes[0].text
m['album'] = nodes[0].text
elif name == 'disambiguation':
m['~releasecomment'] = nodes[0].text
elif name == 'asin':
m['asin'] = nodes[0].text
elif name == 'artist_credit':
if not config.setting["standardize_artists"] or transl:
artist_credit_to_metadata(nodes[0], m, config, release=True)
artist_credit_to_metadata(nodes[0], m, config, release=True)
elif name == 'date':
m['date'] = nodes[0].text
elif name == 'country':
@@ -294,18 +282,10 @@ def release_group_to_metadata(node, m, config, album=None):
"""Make metadata dict from a XML 'release-group' node taken from inside a 'release' node."""
if 'type' in node.attribs:
m['releasetype'] = node.type.lower()
transl = m['releasestatus'] == "pseudo-release"
for name, nodes in node.children.iteritems():
if not nodes:
continue
if name == 'title':
if config.setting["standardize_releases"] and not transl:
m['album'] = node.title[0].text
elif name == 'artist_credit':
if config.setting["standardize_artists"] and not transl:
artist_credit_to_metadata(nodes[0], m, config, release=True)
elif name == 'first_release_date':
if name == 'first_release_date':
m['originaldate'] = nodes[0].text
elif name == 'tag_list':
add_folksonomy_tags(nodes[0], album)

View File

@@ -41,8 +41,6 @@ class MetadataOptionsPage(OptionsPage):
BoolOption("setting", "track_ars", False),
BoolOption("setting", "folksonomy_tags", False),
BoolOption("setting", "convert_punctuation", True),
BoolOption("setting", "standardize_tracks", False),
BoolOption("setting", "standardize_releases", False),
BoolOption("setting", "standardize_artists", False),
]
@@ -73,8 +71,6 @@ 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):
@@ -86,8 +82,6 @@ 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):

View File

@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui/options_metadata.ui'
#
# Created: Tue Oct 4 23:21:50 2011
# Created: Mon Oct 17 14:24:15 2011
# by: PyQt4 UI code generator 4.8.5
#
# WARNING! All changes made in this file will be lost!
@@ -40,6 +40,9 @@ class Ui_MetadataOptionsPage(object):
self.artist_locale = QtGui.QComboBox(self.rename_files)
self.artist_locale.setObjectName(_fromUtf8("artist_locale"))
self.verticalLayout_3.addWidget(self.artist_locale)
self.standardize_artists = QtGui.QCheckBox(self.rename_files)
self.standardize_artists.setObjectName(_fromUtf8("standardize_artists"))
self.verticalLayout_3.addWidget(self.standardize_artists)
self.convert_punctuation = QtGui.QCheckBox(self.rename_files)
self.convert_punctuation.setObjectName(_fromUtf8("convert_punctuation"))
self.verticalLayout_3.addWidget(self.convert_punctuation)
@@ -53,157 +56,6 @@ class Ui_MetadataOptionsPage(object):
self.folksonomy_tags.setObjectName(_fromUtf8("folksonomy_tags"))
self.verticalLayout_3.addWidget(self.folksonomy_tags)
self.verticalLayout.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, 144))
self.rename_files_2.setFlat(False)
self.rename_files_2.setObjectName(_fromUtf8("rename_files_2"))
self.gridLayout = QtGui.QGridLayout(self.rename_files_2)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.label = QtGui.QLabel(self.rename_files_2)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName(_fromUtf8("label"))
self.gridLayout.addWidget(self.label, 0, 1, 1, 3)
self.label_2 = QtGui.QLabel(self.rename_files_2)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.gridLayout.addWidget(self.label_2, 0, 4, 1, 3)
self.label_3 = QtGui.QLabel(self.rename_files_2)
self.label_3.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_3.setObjectName(_fromUtf8("label_3"))
self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1)
spacerItem = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 1, 1, 1, 1)
self.tracks_on_cover = QtGui.QRadioButton(self.rename_files_2)
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.setMinimumSize(QtCore.QSize(18, 18))
self.tracks_on_cover.setLayoutDirection(QtCore.Qt.LeftToRight)
self.tracks_on_cover.setText(_fromUtf8(""))
self.tracks_on_cover.setIconSize(QtCore.QSize(16, 16))
self.tracks_on_cover.setChecked(True)
self.tracks_on_cover.setObjectName(_fromUtf8("tracks_on_cover"))
self.buttonGroup = QtGui.QButtonGroup(MetadataOptionsPage)
self.buttonGroup.setObjectName(_fromUtf8("buttonGroup"))
self.buttonGroup.addButton(self.tracks_on_cover)
self.gridLayout.addWidget(self.tracks_on_cover, 1, 2, 1, 1)
spacerItem1 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem1, 1, 3, 1, 1)
spacerItem2 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 1, 4, 1, 1)
self.standardize_tracks = QtGui.QRadioButton(self.rename_files_2)
self.standardize_tracks.setEnabled(True)
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(18, 18))
self.standardize_tracks.setText(_fromUtf8(""))
self.standardize_tracks.setObjectName(_fromUtf8("standardize_tracks"))
self.buttonGroup.addButton(self.standardize_tracks)
self.gridLayout.addWidget(self.standardize_tracks, 1, 5, 1, 1)
spacerItem3 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem3, 1, 6, 1, 1)
self.label_4 = QtGui.QLabel(self.rename_files_2)
self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_4.setObjectName(_fromUtf8("label_4"))
self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1)
spacerItem4 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem4, 2, 1, 1, 1)
self.releases_on_cover = QtGui.QRadioButton(self.rename_files_2)
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.setMinimumSize(QtCore.QSize(18, 18))
self.releases_on_cover.setText(_fromUtf8(""))
self.releases_on_cover.setChecked(True)
self.releases_on_cover.setObjectName(_fromUtf8("releases_on_cover"))
self.buttonGroup_2 = QtGui.QButtonGroup(MetadataOptionsPage)
self.buttonGroup_2.setObjectName(_fromUtf8("buttonGroup_2"))
self.buttonGroup_2.addButton(self.releases_on_cover)
self.gridLayout.addWidget(self.releases_on_cover, 2, 2, 1, 1)
spacerItem5 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem5, 2, 3, 1, 1)
spacerItem6 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem6, 2, 4, 1, 1)
self.standardize_releases = QtGui.QRadioButton(self.rename_files_2)
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.setMinimumSize(QtCore.QSize(18, 18))
self.standardize_releases.setText(_fromUtf8(""))
self.standardize_releases.setObjectName(_fromUtf8("standardize_releases"))
self.buttonGroup_2.addButton(self.standardize_releases)
self.gridLayout.addWidget(self.standardize_releases, 2, 5, 1, 1)
spacerItem7 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem7, 2, 6, 1, 1)
self.label_5 = QtGui.QLabel(self.rename_files_2)
self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_5.setObjectName(_fromUtf8("label_5"))
self.gridLayout.addWidget(self.label_5, 3, 0, 1, 1)
spacerItem8 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem8, 3, 1, 1, 1)
self.artists_on_cover = QtGui.QRadioButton(self.rename_files_2)
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.setMinimumSize(QtCore.QSize(18, 18))
self.artists_on_cover.setText(_fromUtf8(""))
self.artists_on_cover.setIconSize(QtCore.QSize(16, 16))
self.artists_on_cover.setChecked(True)
self.artists_on_cover.setObjectName(_fromUtf8("artists_on_cover"))
self.buttonGroup_3 = QtGui.QButtonGroup(MetadataOptionsPage)
self.buttonGroup_3.setObjectName(_fromUtf8("buttonGroup_3"))
self.buttonGroup_3.addButton(self.artists_on_cover)
self.gridLayout.addWidget(self.artists_on_cover, 3, 2, 1, 1)
spacerItem9 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem9, 3, 3, 1, 1)
spacerItem10 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem10, 3, 4, 1, 1)
self.standardize_artists = QtGui.QRadioButton(self.rename_files_2)
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.setMinimumSize(QtCore.QSize(18, 18))
self.standardize_artists.setText(_fromUtf8(""))
self.standardize_artists.setObjectName(_fromUtf8("standardize_artists"))
self.buttonGroup_3.addButton(self.standardize_artists)
self.gridLayout.addWidget(self.standardize_artists, 3, 5, 1, 1)
spacerItem11 = QtGui.QSpacerItem(33, 18, QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem11, 3, 6, 1, 1)
spacerItem12 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem12, 2, 7, 1, 1)
self.verticalLayout.addWidget(self.rename_files_2)
self.rename_files_3 = QtGui.QGroupBox(MetadataOptionsPage)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
@@ -234,8 +86,8 @@ class Ui_MetadataOptionsPage(object):
self.va_name.setObjectName(_fromUtf8("va_name"))
self.gridlayout.addWidget(self.va_name, 1, 0, 1, 1)
self.verticalLayout.addWidget(self.rename_files_3)
spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.MinimumExpanding)
self.verticalLayout.addItem(spacerItem13)
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)
@@ -249,16 +101,11 @@ class Ui_MetadataOptionsPage(object):
def retranslateUi(self, MetadataOptionsPage):
self.rename_files.setTitle(_("Metadata"))
self.translate_artist_names.setText(_("Translate artist names to this locale where possible:"))
self.standardize_artists.setText(_("Use standardized artist names"))
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(_("Standardization"))
self.label.setText(_("As on cover"))
self.label_2.setText(_("Standardized"))
self.label_3.setText(_("Track titles"))
self.label_4.setText(_("Release titles"))
self.label_5.setText(_("Artist names"))
self.rename_files_3.setTitle(_("Custom Fields"))
self.label_6.setText(_("Various artists:"))
self.label_7.setText(_("Non-album tracks:"))

View File

@@ -47,6 +47,13 @@
<item>
<widget class="QComboBox" name="artist_locale"/>
</item>
<item>
<widget class="QCheckBox" name="standardize_artists">
<property name="text">
<string>Use standardized artist names</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="convert_punctuation">
<property name="text">
@@ -78,468 +85,6 @@
</layout>
</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>144</height>
</size>
</property>
<property name="title">
<string>Standardization</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1" colspan="3">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</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="0" column="4" colspan="3">
<widget class="QLabel" name="label_2">
<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>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<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>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2">
<widget class="QRadioButton" name="tracks_on_cover">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</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>
</item>
<item row="1" column="3">
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="4">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="5">
<widget class="QRadioButton" name="standardize_tracks">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="text">
<string/>
</property>
<attribute name="buttonGroup">
<string>buttonGroup</string>
</attribute>
</widget>
</item>
<item row="1" column="6">
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Release titles</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2">
<widget class="QRadioButton" name="releases_on_cover">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string>buttonGroup_2</string>
</attribute>
</widget>
</item>
<item row="2" column="3">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="4">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="5">
<widget class="QRadioButton" name="standardize_releases">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="text">
<string/>
</property>
<attribute name="buttonGroup">
<string>buttonGroup_2</string>
</attribute>
</widget>
</item>
<item row="2" column="6">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Artist names</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="2">
<widget class="QRadioButton" name="artists_on_cover">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</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_3</string>
</attribute>
</widget>
</item>
<item row="3" column="3">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="4">
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="5">
<widget class="QRadioButton" name="standardize_artists">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="text">
<string/>
</property>
<attribute name="buttonGroup">
<string>buttonGroup_3</string>
</attribute>
</widget>
</item>
<item row="3" column="6">
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>33</width>
<height>18</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="7">
<spacer name="horizontalSpacer_13">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="rename_files_3">
<property name="sizePolicy">