mirror of
https://github.com/fergalmoran/picard.git
synced 2026-02-21 07:04:02 +00:00
CD lookup code cleanup.
This commit is contained in:
@@ -24,6 +24,9 @@ from PyQt4 import QtCore
|
||||
from picard.ui.cdlookup import CDLookupDialog
|
||||
|
||||
|
||||
_libdiscid = None
|
||||
|
||||
|
||||
class DiscError(IOError):
|
||||
pass
|
||||
|
||||
@@ -36,16 +39,17 @@ class Disc(QtCore.QObject):
|
||||
self.submission_url = None
|
||||
|
||||
def read(self, device):
|
||||
libdiscid = _openLibrary()
|
||||
handle = libdiscid.discid_new()
|
||||
global _libdiscid
|
||||
if _libdiscid is None:
|
||||
_libdiscid = _openLibrary()
|
||||
handle = _libdiscid.discid_new()
|
||||
assert handle != 0, "libdiscid: discid_new() returned NULL"
|
||||
res = libdiscid.discid_read(handle, device)
|
||||
res = _libdiscid.discid_read(handle, device)
|
||||
if res == 0:
|
||||
raise DiscError(libdiscid.discid_get_error_msg(handle))
|
||||
self.id = libdiscid.discid_get_id(handle)
|
||||
self.submission_url = libdiscid.discid_get_submission_url(handle)
|
||||
print self.submission_url
|
||||
libdiscid.discid_free(handle)
|
||||
raise DiscError(_libdiscid.discid_get_error_msg(handle))
|
||||
self.id = _libdiscid.discid_get_id(handle)
|
||||
self.submission_url = _libdiscid.discid_get_submission_url(handle)
|
||||
_libdiscid.discid_free(handle)
|
||||
|
||||
def lookup(self):
|
||||
self.tagger.xmlws.find_releases(self._lookup_finished, discid=self.id)
|
||||
|
||||
@@ -58,6 +58,7 @@ from picard.browser.browser import BrowserIntegration
|
||||
from picard.browser.filelookup import FileLookup
|
||||
from picard.cluster import Cluster, ClusterList, UnmatchedFiles
|
||||
from picard.config import Config
|
||||
from picard.disc import Disc, DiscError
|
||||
from picard.file import File
|
||||
from picard.formats import open as open_file
|
||||
from picard.metadata import Metadata
|
||||
@@ -551,6 +552,7 @@ class Tagger(QtGui.QApplication):
|
||||
return album
|
||||
return None
|
||||
|
||||
|
||||
def remove_files(self, files):
|
||||
"""Remove files from the tagger."""
|
||||
for file in files:
|
||||
@@ -588,28 +590,34 @@ class Tagger(QtGui.QApplication):
|
||||
if files:
|
||||
self.remove_files(files)
|
||||
|
||||
|
||||
def lookup_cd(self, action=None):
|
||||
from picard.disc import Disc
|
||||
"""Reads CD from the selected drive and tries to lookup the DiscID on MusicBrainz."""
|
||||
if action is None:
|
||||
device = self.config.setting["cd_lookup_device"].split(",", 1)[0]
|
||||
else:
|
||||
device = unicode(action.text())
|
||||
|
||||
def read_disc_error(self, error):
|
||||
self.restore_cursor()
|
||||
QtGui.QMessageBox.critical(self.window, _(u"CD Lookup Error"), _(u"Error while reading CD:\n\n%s") % error)
|
||||
|
||||
def read_disc_finished(self, disc):
|
||||
self.restore_cursor()
|
||||
disc.lookup()
|
||||
|
||||
def read_disc_thread(self, disc, device):
|
||||
try:
|
||||
disc.read(encode_filename(device))
|
||||
except (NotImplementedError, DiscError), e:
|
||||
self.thread_assist.proxy_to_main(read_disc_error, self, str(e))
|
||||
else:
|
||||
self.thread_assist.proxy_to_main(read_disc_finished, self, disc)
|
||||
|
||||
disc = Disc()
|
||||
self.set_wait_cursor()
|
||||
self.util_thread.add_task(self._read_disc_thread, disc, device)
|
||||
self.util_thread.add_task(read_disc_thread, self, disc, device)
|
||||
|
||||
def _read_disc_thread(self, disc, device):
|
||||
from picard.disc import DiscError
|
||||
try:
|
||||
disc.read(encode_filename(device))
|
||||
except (NotImplementedError, DiscError), e:
|
||||
self.thread_assist.proxy_to_main(self._read_disc_error, str(e))
|
||||
return
|
||||
self.thread_assist.proxy_to_main(disc.lookup)
|
||||
|
||||
def _read_disc_error(self, error):
|
||||
self.restore_cursor()
|
||||
QtGui.QMessageBox.critical(self.window, _(u"CD Lookup Error"), _("Error while reading CD:\n\n%s") % error)
|
||||
|
||||
def analyze(self, objs):
|
||||
"""Analyze the file(s)."""
|
||||
|
||||
Reference in New Issue
Block a user