Disable audio fingerprinting by default

This commit is contained in:
Lukáš Lalinský
2011-12-04 10:47:56 +01:00
parent 7589375f45
commit 7858d2f63a
7 changed files with 100 additions and 59 deletions

View File

@@ -591,7 +591,20 @@ class MainWindow(QtGui.QMainWindow):
self.tagger.remove(self.panel.selected_objects())
def analyze(self):
self.tagger.analyze(self.panel.selected_objects())
if not self.config.setting['enable_fingerprinting']:
if self.show_analyze_settings_info():
self.show_options("fingerprinting")
if not self.config.setting['enable_fingerprinting']:
return
return self.tagger.analyze(self.panel.selected_objects())
def show_analyze_settings_info(self):
ret = QtGui.QMessageBox.question(self,
_(u"Configuration Required"),
_(u"Audio fingerprinting is not yet configured. Would you like to configure it now?"),
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes)
return ret == QtGui.QMessageBox.Yes
def edit_tags(self, objs=None):
if not objs:
@@ -617,10 +630,7 @@ class MainWindow(QtGui.QMainWindow):
if obj is None:
continue
if obj.can_analyze():
if self.tagger.use_acoustid:
can_analyze = True
elif picard.musicdns.ofa:
can_analyze = True
can_analyze = True
if obj.can_save():
can_save = True
if obj.can_remove():

View File

@@ -17,7 +17,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import os
import os, sys
import picard.musicdns
from PyQt4 import QtCore, QtGui
from picard.util import webbrowser2
from picard.config import BoolOption, TextOption
@@ -29,12 +30,13 @@ class FingerprintingOptionsPage(OptionsPage):
NAME = "fingerprinting"
TITLE = N_("Fingerprinting")
PARENT = "advanced"
SORT_ORDER = 35
PARENT = None
SORT_ORDER = 45
ACTIVE = True
options = [
TextOption("setting", "fingerprinting_system", "musicdns"),
BoolOption("setting", "enable_fingerprinting", False),
TextOption("setting", "fingerprinting_system", "acoustid"),
TextOption("setting", "acoustid_fpcalc", ""),
TextOption("setting", "acoustid_apikey", ""),
]
@@ -43,6 +45,7 @@ class FingerprintingOptionsPage(OptionsPage):
super(FingerprintingOptionsPage, self).__init__(parent)
self.ui = Ui_FingerprintingOptionsPage()
self.ui.setupUi(self)
self.connect(self.ui.enable_fingerprinting, QtCore.SIGNAL("clicked()"), self.update_groupboxes)
self.connect(self.ui.use_musicdns, QtCore.SIGNAL("clicked()"), self.update_groupboxes)
self.connect(self.ui.use_acoustid, QtCore.SIGNAL("clicked()"), self.update_groupboxes)
self.ui.acoustid_fpcalc_browse.clicked.connect(self.acoustid_fpcalc_browse)
@@ -50,6 +53,9 @@ class FingerprintingOptionsPage(OptionsPage):
self.ui.acoustid_apikey_get.clicked.connect(self.acoustid_apikey_get)
def load(self):
self.ui.enable_fingerprinting.setChecked(self.config.setting["enable_fingerprinting"])
if picard.musicdns.ofa is None:
self.ui.use_musicdns.setEnabled(False)
if self.config.setting["fingerprinting_system"] == "acoustid":
self.ui.use_acoustid.setChecked(True)
else:
@@ -59,6 +65,7 @@ class FingerprintingOptionsPage(OptionsPage):
self.update_groupboxes()
def save(self):
self.config.setting["enable_fingerprinting"] = self.ui.enable_fingerprinting.isChecked()
if self.ui.use_acoustid.isChecked():
self.config.setting["fingerprinting_system"] = "acoustid"
else:
@@ -67,8 +74,12 @@ class FingerprintingOptionsPage(OptionsPage):
self.config.setting["acoustid_apikey"] = unicode(self.ui.acoustid_apikey.text())
def update_groupboxes(self):
if self.ui.use_acoustid.isChecked():
if self.ui.enable_fingerprinting.isChecked() and self.ui.use_acoustid.isChecked():
self.ui.acoustid_settings.setEnabled(True)
if self.ui.acoustid_fpcalc.text().isEmpty():
fpcalc_path = self.find_executable("fpcalc")
if fpcalc_path:
self.ui.acoustid_fpcalc.setText(fpcalc_path)
else:
self.ui.acoustid_settings.setEnabled(False)
@@ -84,5 +95,16 @@ class FingerprintingOptionsPage(OptionsPage):
def acoustid_apikey_get(self):
webbrowser2.open("http://acoustid.org/api-key")
def find_executable(self, name):
if sys.platform == 'win32':
executables = [name + '.exe']
else:
executables = [name]
for path in os.environ.get('PATH', '').split(os.pathsep):
for executable in executables:
f = os.path.join(path, executable)
if os.path.isfile(f):
return f
register_options_page(FingerprintingOptionsPage)

View File

@@ -2,59 +2,65 @@
# Form implementation generated from reading ui file 'ui/options_fingerprinting.ui'
#
# Created: Fri Oct 21 20:12:56 2011
# by: PyQt4 UI code generator 4.7.4
# Created: Sun Dec 4 00:12:39 2011
# by: PyQt4 UI code generator 4.8.3
#
# 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_FingerprintingOptionsPage(object):
def setupUi(self, FingerprintingOptionsPage):
FingerprintingOptionsPage.setObjectName("FingerprintingOptionsPage")
FingerprintingOptionsPage.resize(371, 305)
FingerprintingOptionsPage.setObjectName(_fromUtf8("FingerprintingOptionsPage"))
FingerprintingOptionsPage.resize(371, 408)
self.verticalLayout = QtGui.QVBoxLayout(FingerprintingOptionsPage)
self.verticalLayout.setObjectName("verticalLayout")
self.groupBox = QtGui.QGroupBox(FingerprintingOptionsPage)
self.groupBox.setObjectName("groupBox")
self.gridLayout = QtGui.QGridLayout(self.groupBox)
self.gridLayout.setObjectName("gridLayout")
self.use_musicdns = QtGui.QRadioButton(self.groupBox)
self.use_musicdns.setObjectName("use_musicdns")
self.gridLayout.addWidget(self.use_musicdns, 0, 0, 1, 1)
self.use_acoustid = QtGui.QRadioButton(self.groupBox)
self.use_acoustid.setObjectName("use_acoustid")
self.gridLayout.addWidget(self.use_acoustid, 1, 0, 1, 1)
self.verticalLayout.addWidget(self.groupBox)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.enable_fingerprinting = QtGui.QGroupBox(FingerprintingOptionsPage)
self.enable_fingerprinting.setCheckable(True)
self.enable_fingerprinting.setObjectName(_fromUtf8("enable_fingerprinting"))
self.verticalLayout_3 = QtGui.QVBoxLayout(self.enable_fingerprinting)
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
self.use_acoustid = QtGui.QRadioButton(self.enable_fingerprinting)
self.use_acoustid.setObjectName(_fromUtf8("use_acoustid"))
self.verticalLayout_3.addWidget(self.use_acoustid)
self.use_musicdns = QtGui.QRadioButton(self.enable_fingerprinting)
self.use_musicdns.setObjectName(_fromUtf8("use_musicdns"))
self.verticalLayout_3.addWidget(self.use_musicdns)
self.verticalLayout.addWidget(self.enable_fingerprinting)
self.acoustid_settings = QtGui.QGroupBox(FingerprintingOptionsPage)
self.acoustid_settings.setObjectName("acoustid_settings")
self.acoustid_settings.setObjectName(_fromUtf8("acoustid_settings"))
self.verticalLayout_2 = QtGui.QVBoxLayout(self.acoustid_settings)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.label = QtGui.QLabel(self.acoustid_settings)
self.label.setObjectName("label")
self.label.setObjectName(_fromUtf8("label"))
self.verticalLayout_2.addWidget(self.label)
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.acoustid_fpcalc = QtGui.QLineEdit(self.acoustid_settings)
self.acoustid_fpcalc.setObjectName("acoustid_fpcalc")
self.acoustid_fpcalc.setObjectName(_fromUtf8("acoustid_fpcalc"))
self.horizontalLayout_2.addWidget(self.acoustid_fpcalc)
self.acoustid_fpcalc_browse = QtGui.QPushButton(self.acoustid_settings)
self.acoustid_fpcalc_browse.setObjectName("acoustid_fpcalc_browse")
self.acoustid_fpcalc_browse.setObjectName(_fromUtf8("acoustid_fpcalc_browse"))
self.horizontalLayout_2.addWidget(self.acoustid_fpcalc_browse)
self.acoustid_fpcalc_download = QtGui.QPushButton(self.acoustid_settings)
self.acoustid_fpcalc_download.setObjectName("acoustid_fpcalc_download")
self.acoustid_fpcalc_download.setObjectName(_fromUtf8("acoustid_fpcalc_download"))
self.horizontalLayout_2.addWidget(self.acoustid_fpcalc_download)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.label_2 = QtGui.QLabel(self.acoustid_settings)
self.label_2.setObjectName("label_2")
self.label_2.setObjectName(_fromUtf8("label_2"))
self.verticalLayout_2.addWidget(self.label_2)
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.acoustid_apikey = QtGui.QLineEdit(self.acoustid_settings)
self.acoustid_apikey.setObjectName("acoustid_apikey")
self.acoustid_apikey.setObjectName(_fromUtf8("acoustid_apikey"))
self.horizontalLayout.addWidget(self.acoustid_apikey)
self.acoustid_apikey_get = QtGui.QPushButton(self.acoustid_settings)
self.acoustid_apikey_get.setObjectName("acoustid_apikey_get")
self.acoustid_apikey_get.setObjectName(_fromUtf8("acoustid_apikey_get"))
self.horizontalLayout.addWidget(self.acoustid_apikey_get)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.verticalLayout.addWidget(self.acoustid_settings)
@@ -65,10 +71,10 @@ class Ui_FingerprintingOptionsPage(object):
QtCore.QMetaObject.connectSlotsByName(FingerprintingOptionsPage)
def retranslateUi(self, FingerprintingOptionsPage):
self.groupBox.setTitle(_("Fingerprinting Systems"))
self.use_musicdns.setText(_("Use AmpliFIND (formerly MusicDNS)"))
self.enable_fingerprinting.setTitle(_("Audio Fingerprinting"))
self.use_acoustid.setText(_("Use AcoustID"))
self.acoustid_settings.setTitle(_("AcoustID\'s Settings"))
self.use_musicdns.setText(_("Use AmpliFIND (formerly MusicDNS)"))
self.acoustid_settings.setTitle(_("AcoustID Settings"))
self.label.setText(_("Fingerprint calculator:"))
self.acoustid_fpcalc_browse.setText(_("Browse..."))
self.acoustid_fpcalc_download.setText(_("Download..."))

View File

@@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'ui/options_interface.ui'
#
# Created: Wed Oct 5 17:51:02 2011
# by: PyQt4 UI code generator 4.8.5
# Created: Sun Dec 4 00:06:45 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!

View File

@@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'ui/options_metadata.ui'
#
# Created: Mon Oct 17 14:24:15 2011
# by: PyQt4 UI code generator 4.8.5
# Created: Sun Dec 4 00:06:45 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
@@ -28,7 +28,6 @@ class Ui_MetadataOptionsPage(object):
self.rename_files.setSizePolicy(sizePolicy)
self.rename_files.setMinimumSize(QtCore.QSize(397, 135))
font = QtGui.QFont()
font.setKerning(False)
self.rename_files.setFont(font)
self.rename_files.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.rename_files.setObjectName(_fromUtf8("rename_files"))

View File

@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui/options_plugins.ui'
#
# Created: Thu Sep 15 13:39:10 2011
# Created: Sun Dec 4 00:06:45 2011
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
@@ -136,3 +136,4 @@ class Ui_PluginsOptionsPage(object):
self.folder_open.setText(_("Open plugin folder"))
self.plugin_download.setText(_("Download plugins"))
self.groupBox.setTitle(_("Details"))

View File

@@ -7,37 +7,40 @@
<x>0</x>
<y>0</y>
<width>371</width>
<height>305</height>
<height>408</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<widget class="QGroupBox" name="enable_fingerprinting">
<property name="title">
<string>Fingerprinting Systems</string>
<string>Audio Fingerprinting</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="use_musicdns">
<property name="text">
<string>Use AmpliFIND (formerly MusicDNS)</string>
</property>
</widget>
</item>
<item row="1" column="0">
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QRadioButton" name="use_acoustid">
<property name="text">
<string>Use AcoustID</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="use_musicdns">
<property name="text">
<string>Use AmpliFIND (formerly MusicDNS)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="acoustid_settings">
<property name="title">
<string>AcoustID's Settings</string>
<string>AcoustID Settings</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>