rendered paste bodydiff -rU3 picard-0.12.1/picard/album.py picard-0.12.1-unsmartquote/picard/album.py
--- picard-0.12.1/picard/album.py 2009-11-01 10:10:27.000000000 -0800
+++ picard-0.12.1-unsmartquote/picard/album.py 2011-01-01 20:58:41.000000000 -0800
@@ -40,6 +40,33 @@
"electronica": u"Electronic",
}
+_TRANSLATE_TYPOGRAPHIC_PUNCTUATION = {
+ u"…": u"...",
+ u"‘": u"'",
+ u"’": u"'",
+ u"‚": u"'",
+ u"“": u"\"",
+ u"”": u"\"",
+ u"„": u"\"",
+ u"′": u"'",
+ u"″": u"\"",
+ u"‹": u"<",
+ u"›": u">",
+ }
+
+_TYPOGRAPHIC_PUNCTUATION_ALBUM_FIELDS = [
+ 'album',
+ 'artist', 'artistsort', 'albumartist', 'albumartistsort',
+ 'label',
+ ]
+
+_TYPOGRAPHIC_PUNCTUATION_TRACK_FIELDS = [
+ 'album',
+ 'artist', 'artistsort', 'albumartist', 'albumartistsort',
+ 'label',
+ 'composer', 'conductor', 'arranger', 'lyricist',
+ 'remixer', 'producer', 'engineer', 'mixer', 'djmixer'
+ ]
class ReleaseEvent(object):
@@ -188,6 +215,13 @@
if m['musicbrainz_artistid'] == VARIOUS_ARTISTS_ID:
m['albumartistsort'] = m['artistsort'] = m['albumartist'] = m['artist'] = self.config.setting['va_name']
+ # Remove typographic punctuation
+ if self.config.setting['convert_typographic_punctuation']:
+ for field in _TYPOGRAPHIC_PUNCTUATION_ALBUM_FIELDS:
+ for i, j in _TRANSLATE_TYPOGRAPHIC_PUNCTUATION.iteritems():
+ if hasattr(m, field):
+ m[field] = m[field].replace(i, j)
+
# Album metadata plugins
try:
run_album_metadata_processors(self, m, release_node)
@@ -230,6 +264,14 @@
if self.config.setting['folksonomy_tags']:
self._convert_folksonomy_tags_to_genre(t, ignore_tags)
+ # Remove typographic punctuation
+ if self.config.setting['convert_typographic_punctuation']:
+ for field in _TYPOGRAPHIC_PUNCTUATION_TRACK_FIELDS:
+ for i, j in _TRANSLATE_TYPOGRAPHIC_PUNCTUATION.iteritems():
+ if hasattr(tm, field):
+
+ tm[field] = tm[field].replace(i, j)
+
# Track metadata plugins
try:
run_track_metadata_processors(self, tm, release_node, node)
diff -rU3 picard-0.12.1/picard/ui/options/metadata.py picard-0.12.1-unsmartquote/picard/ui/options/metadata.py
--- picard-0.12.1/picard/ui/options/metadata.py 2009-11-01 10:10:27.000000000 -0800
+++ picard-0.12.1-unsmartquote/picard/ui/options/metadata.py 2011-01-01 21:06:14.000000000 -0800
@@ -38,6 +38,7 @@
TextOption("setting", "va_name", u"Various Artists"),
TextOption("setting", "nat_name", u"[non-album tracks]"),
BoolOption("setting", "translate_artist_names", False),
+ BoolOption("setting", "convert_typographic_punctuation", False),
BoolOption("setting", "release_ars", True),
BoolOption("setting", "track_ars", False),
BoolOption("setting", "folksonomy_tags", False),
@@ -58,6 +59,7 @@
def load(self):
self.ui.translate_artist_names.setChecked(self.config.setting["translate_artist_names"])
+ self.ui.convert_typographic_punctuation.setChecked(self.config.setting["convert_typographic_punctuation"])
self.ui.release_ars.setChecked(self.config.setting["release_ars"])
self.ui.track_ars.setChecked(self.config.setting["track_ars"])
self.ui.folksonomy_tags.setChecked(self.config.setting["folksonomy_tags"])
@@ -68,6 +70,7 @@
def save(self):
self.config.setting["translate_artist_names"] = self.ui.translate_artist_names.isChecked()
+ self.config.setting["convert_typographic_punctuation"] = self.ui.convert_typographic_punctuation.isChecked()
self.config.setting["release_ars"] = self.ui.release_ars.isChecked()
self.config.setting["track_ars"] = self.ui.track_ars.isChecked()
self.config.setting["folksonomy_tags"] = self.ui.folksonomy_tags.isChecked()
diff -rU3 picard-0.12.1/picard/ui/ui_options_metadata.py picard-0.12.1-unsmartquote/picard/ui/ui_options_metadata.py
--- picard-0.12.1/picard/ui/ui_options_metadata.py 2009-11-01 10:10:27.000000000 -0800
+++ picard-0.12.1-unsmartquote/picard/ui/ui_options_metadata.py 2011-01-01 21:04:03.000000000 -0800
@@ -2,110 +2,100 @@
# Form implementation generated from reading ui file 'ui/options_metadata.ui'
#
-# Created: Wed Apr 2 08:48:11 2008
-# by: PyQt4 UI code generator 4.3
+# Created: Sat Jan 1 21:04:03 2011
+# by: PyQt4 UI code generator 4.8.1
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
+try:
+ _fromUtf8 = QtCore.QString.fromUtf8
+except AttributeError:
+ _fromUtf8 = lambda s: s
+
class Ui_MetadataOptionsPage(object):
def setupUi(self, MetadataOptionsPage):
- MetadataOptionsPage.setObjectName("MetadataOptionsPage")
- MetadataOptionsPage.resize(QtCore.QSize(QtCore.QRect(0,0,387,355).size()).expandedTo(MetadataOptionsPage.minimumSizeHint()))
-
+ MetadataOptionsPage.setObjectName(_fromUtf8("MetadataOptionsPage"))
+ MetadataOptionsPage.resize(423, 360)
self.vboxlayout = QtGui.QVBoxLayout(MetadataOptionsPage)
- self.vboxlayout.setObjectName("vboxlayout")
-
+ self.vboxlayout.setObjectName(_fromUtf8("vboxlayout"))
self.rename_files = QtGui.QGroupBox(MetadataOptionsPage)
- self.rename_files.setObjectName("rename_files")
-
+ self.rename_files.setObjectName(_fromUtf8("rename_files"))
self.gridlayout = QtGui.QGridLayout(self.rename_files)
- self.gridlayout.setObjectName("gridlayout")
-
+ self.gridlayout.setObjectName(_fromUtf8("gridlayout"))
self.translate_artist_names = QtGui.QCheckBox(self.rename_files)
- self.translate_artist_names.setObjectName("translate_artist_names")
- self.gridlayout.addWidget(self.translate_artist_names,0,0,1,2)
-
+ self.translate_artist_names.setObjectName(_fromUtf8("translate_artist_names"))
+ self.gridlayout.addWidget(self.translate_artist_names, 0, 0, 1, 2)
self.release_ars = QtGui.QCheckBox(self.rename_files)
- self.release_ars.setObjectName("release_ars")
- self.gridlayout.addWidget(self.release_ars,1,0,1,2)
-
+ self.release_ars.setObjectName(_fromUtf8("release_ars"))
+ self.gridlayout.addWidget(self.release_ars, 2, 0, 1, 2)
self.track_ars = QtGui.QCheckBox(self.rename_files)
- self.track_ars.setObjectName("track_ars")
- self.gridlayout.addWidget(self.track_ars,2,0,1,2)
-
+ self.track_ars.setObjectName(_fromUtf8("track_ars"))
+ self.gridlayout.addWidget(self.track_ars, 3, 0, 1, 2)
self.folksonomy_tags = QtGui.QCheckBox(self.rename_files)
- self.folksonomy_tags.setObjectName("folksonomy_tags")
- self.gridlayout.addWidget(self.folksonomy_tags,3,0,1,2)
-
+ self.folksonomy_tags.setObjectName(_fromUtf8("folksonomy_tags"))
+ self.gridlayout.addWidget(self.folksonomy_tags, 4, 0, 1, 2)
self.label = QtGui.QLabel(self.rename_files)
- self.label.setObjectName("label")
- self.gridlayout.addWidget(self.label,4,0,1,2)
-
+ self.label.setObjectName(_fromUtf8("label"))
+ self.gridlayout.addWidget(self.label, 5, 0, 1, 2)
self.preferred_release_country = QtGui.QComboBox(self.rename_files)
- self.preferred_release_country.setObjectName("preferred_release_country")
- self.gridlayout.addWidget(self.preferred_release_country,5,0,1,1)
-
- spacerItem = QtGui.QSpacerItem(161,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
- self.gridlayout.addItem(spacerItem,5,1,1,1)
+ self.preferred_release_country.setObjectName(_fromUtf8("preferred_release_country"))
+ self.gridlayout.addWidget(self.preferred_release_country, 6, 0, 1, 1)
+ spacerItem = QtGui.QSpacerItem(161, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+ self.gridlayout.addItem(spacerItem, 6, 1, 1, 1)
+ self.convert_typographic_punctuation = QtGui.QCheckBox(self.rename_files)
+ self.convert_typographic_punctuation.setObjectName(_fromUtf8("convert_typographic_punctuation"))
+ self.gridlayout.addWidget(self.convert_typographic_punctuation, 1, 0, 1, 1)
self.vboxlayout.addWidget(self.rename_files)
-
self.rename_files_2 = QtGui.QGroupBox(MetadataOptionsPage)
- self.rename_files_2.setObjectName("rename_files_2")
-
+ self.rename_files_2.setObjectName(_fromUtf8("rename_files_2"))
self.gridlayout1 = QtGui.QGridLayout(self.rename_files_2)
self.gridlayout1.setMargin(9)
self.gridlayout1.setSpacing(2)
- self.gridlayout1.setObjectName("gridlayout1")
-
+ self.gridlayout1.setObjectName(_fromUtf8("gridlayout1"))
self.label_3 = QtGui.QLabel(self.rename_files_2)
- self.label_3.setObjectName("label_3")
- self.gridlayout1.addWidget(self.label_3,0,0,1,2)
-
+ self.label_3.setObjectName(_fromUtf8("label_3"))
+ self.gridlayout1.addWidget(self.label_3, 0, 0, 1, 2)
self.label_4 = QtGui.QLabel(self.rename_files_2)
- self.label_4.setObjectName("label_4")
- self.gridlayout1.addWidget(self.label_4,2,0,1,2)
-
+ self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.gridlayout1.addWidget(self.label_4, 2, 0, 1, 2)
self.nat_name = QtGui.QLineEdit(self.rename_files_2)
- self.nat_name.setObjectName("nat_name")
- self.gridlayout1.addWidget(self.nat_name,3,0,1,1)
-
+ self.nat_name.setObjectName(_fromUtf8("nat_name"))
+ self.gridlayout1.addWidget(self.nat_name, 3, 0, 1, 1)
self.nat_name_default = QtGui.QPushButton(self.rename_files_2)
- self.nat_name_default.setObjectName("nat_name_default")
- self.gridlayout1.addWidget(self.nat_name_default,3,1,1,1)
-
+ self.nat_name_default.setObjectName(_fromUtf8("nat_name_default"))
+ self.gridlayout1.addWidget(self.nat_name_default, 3, 1, 1, 1)
self.va_name_default = QtGui.QPushButton(self.rename_files_2)
- self.va_name_default.setObjectName("va_name_default")
- self.gridlayout1.addWidget(self.va_name_default,1,1,1,1)
-
+ self.va_name_default.setObjectName(_fromUtf8("va_name_default"))
+ self.gridlayout1.addWidget(self.va_name_default, 1, 1, 1, 1)
self.va_name = QtGui.QLineEdit(self.rename_files_2)
- self.va_name.setObjectName("va_name")
- self.gridlayout1.addWidget(self.va_name,1,0,1,1)
+ self.va_name.setObjectName(_fromUtf8("va_name"))
+ self.gridlayout1.addWidget(self.va_name, 1, 0, 1, 1)
self.vboxlayout.addWidget(self.rename_files_2)
-
- spacerItem1 = QtGui.QSpacerItem(261,16,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding)
+ spacerItem1 = QtGui.QSpacerItem(261, 16, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.vboxlayout.addItem(spacerItem1)
self.label_3.setBuddy(self.va_name_default)
self.label_4.setBuddy(self.nat_name_default)
self.retranslateUi(MetadataOptionsPage)
QtCore.QMetaObject.connectSlotsByName(MetadataOptionsPage)
- MetadataOptionsPage.setTabOrder(self.translate_artist_names,self.va_name)
- MetadataOptionsPage.setTabOrder(self.va_name,self.va_name_default)
- MetadataOptionsPage.setTabOrder(self.va_name_default,self.nat_name)
- MetadataOptionsPage.setTabOrder(self.nat_name,self.nat_name_default)
+ MetadataOptionsPage.setTabOrder(self.translate_artist_names, self.va_name)
+ MetadataOptionsPage.setTabOrder(self.va_name, self.va_name_default)
+ MetadataOptionsPage.setTabOrder(self.va_name_default, self.nat_name)
+ MetadataOptionsPage.setTabOrder(self.nat_name, self.nat_name_default)
def retranslateUi(self, MetadataOptionsPage):
- self.rename_files.setTitle(_("Metadata"))
- self.translate_artist_names.setText(_("Translate foreign artist names to English where possible"))
- self.release_ars.setText(_("Use release relationships"))
- self.track_ars.setText(_("Use track relationships"))
- self.folksonomy_tags.setText(_("Use folksonomy tags as genre"))
- self.label.setText(_("Preferred release country:"))
- self.rename_files_2.setTitle(_("Custom Fields"))
- self.label_3.setText(_("Various artists:"))
- self.label_4.setText(_("Non-album tracks:"))
- self.nat_name_default.setText(_("Default"))
- self.va_name_default.setText(_("Default"))
+ self.rename_files.setTitle(QtGui.QApplication.translate("MetadataOptionsPage", "Metadata", None, QtGui.QApplication.UnicodeUTF8))
+ self.translate_artist_names.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Translate foreign artist names to English where possible", None, QtGui.QApplication.UnicodeUTF8))
+ self.release_ars.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Use release relationships", None, QtGui.QApplication.UnicodeUTF8))
+ self.track_ars.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Use track relationships", None, QtGui.QApplication.UnicodeUTF8))
+ self.folksonomy_tags.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Use folksonomy tags as genre", None, QtGui.QApplication.UnicodeUTF8))
+ self.label.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Preferred release country:", None, QtGui.QApplication.UnicodeUTF8))
+ self.convert_typographic_punctuation.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Convert typographic punctuation into searchable ASCII", None, QtGui.QApplication.UnicodeUTF8))
+ self.rename_files_2.setTitle(QtGui.QApplication.translate("MetadataOptionsPage", "Custom Fields", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_3.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Various artists:", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_4.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Non-album tracks:", None, QtGui.QApplication.UnicodeUTF8))
+ self.nat_name_default.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Default", None, QtGui.QApplication.UnicodeUTF8))
+ self.va_name_default.setText(QtGui.QApplication.translate("MetadataOptionsPage", "Default", None, QtGui.QApplication.UnicodeUTF8))
diff -rU3 picard-0.12.1/ui/options_metadata.ui picard-0.12.1-unsmartquote/ui/options_metadata.ui
--- picard-0.12.1/ui/options_metadata.ui 2009-11-01 10:10:27.000000000 -0800
+++ picard-0.12.1-unsmartquote/ui/options_metadata.ui 2011-01-01 21:01:11.000000000 -0800
@@ -1,65 +1,66 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>MetadataOptionsPage</class>
- <widget class="QWidget" name="MetadataOptionsPage" >
- <property name="geometry" >
+ <widget class="QWidget" name="MetadataOptionsPage">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>387</width>
- <height>355</height>
+ <width>423</width>
+ <height>360</height>
</rect>
</property>
- <layout class="QVBoxLayout" >
+ <layout class="QVBoxLayout">
<item>
- <widget class="QGroupBox" name="rename_files" >
- <property name="title" >
+ <widget class="QGroupBox" name="rename_files">
+ <property name="title">
<string>Metadata</string>
</property>
- <layout class="QGridLayout" >
- <item row="0" column="0" colspan="2" >
- <widget class="QCheckBox" name="translate_artist_names" >
- <property name="text" >
+ <layout class="QGridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="translate_artist_names">
+ <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="release_ars" >
- <property name="text" >
+ <item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="release_ars">
+ <property name="text">
<string>Use release relationships</string>
</property>
</widget>
</item>
- <item row="2" column="0" colspan="2" >
- <widget class="QCheckBox" name="track_ars" >
- <property name="text" >
+ <item row="3" column="0" colspan="2">
+ <widget class="QCheckBox" name="track_ars">
+ <property name="text">
<string>Use track relationships</string>
</property>
</widget>
</item>
- <item row="3" column="0" colspan="2" >
- <widget class="QCheckBox" name="folksonomy_tags" >
- <property name="text" >
+ <item row="4" column="0" colspan="2">
+ <widget class="QCheckBox" name="folksonomy_tags">
+ <property name="text">
<string>Use folksonomy tags as genre</string>
</property>
</widget>
</item>
- <item row="4" column="0" colspan="2" >
- <widget class="QLabel" name="label" >
- <property name="text" >
+ <item row="5" column="0" colspan="2">
+ <widget class="QLabel" name="label">
+ <property name="text">
<string>Preferred release country:</string>
</property>
</widget>
</item>
- <item row="5" column="0" >
- <widget class="QComboBox" name="preferred_release_country" />
+ <item row="6" column="0">
+ <widget class="QComboBox" name="preferred_release_country"/>
</item>
- <item row="5" column="1" >
+ <item row="6" column="1">
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>161</width>
<height>20</height>
@@ -67,82 +68,77 @@
</property>
</spacer>
</item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="convert_typographic_punctuation">
+ <property name="text">
+ <string>Convert typographic punctuation into searchable ASCII</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
<item>
- <widget class="QGroupBox" name="rename_files_2" >
- <property name="title" >
+ <widget class="QGroupBox" name="rename_files_2">
+ <property name="title">
<string>Custom Fields</string>
</property>
- <layout class="QGridLayout" >
- <property name="leftMargin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>9</number>
</property>
- <property name="topMargin" >
- <number>9</number>
- </property>
- <property name="rightMargin" >
- <number>9</number>
- </property>
- <property name="bottomMargin" >
- <number>9</number>
- </property>
- <property name="horizontalSpacing" >
- <number>2</number>
- </property>
- <property name="verticalSpacing" >
+ <property name="spacing">
<number>2</number>
</property>
- <item row="0" column="0" colspan="2" >
- <widget class="QLabel" name="label_3" >
- <property name="text" >
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
<string>Various artists:</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>va_name_default</cstring>
</property>
</widget>
</item>
- <item row="2" column="0" colspan="2" >
- <widget class="QLabel" name="label_4" >
- <property name="text" >
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
<string>Non-album tracks:</string>
</property>
- <property name="buddy" >
+ <property name="buddy">
<cstring>nat_name_default</cstring>
</property>
</widget>
</item>
- <item row="3" column="0" >
- <widget class="QLineEdit" name="nat_name" />
+ <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" >
+ <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" >
+ <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 row="1" column="0">
+ <widget class="QLineEdit" name="va_name"/>
</item>
</layout>
</widget>
</item>
<item>
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>261</width>
<height>16</height>