mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Fix bug causing add books to report spurious duplicates on OS X
This commit is contained in:
parent
70cb798e32
commit
7dba0088e8
@ -90,19 +90,25 @@ class AddFiles(Add):
|
|||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.canceled = False
|
try:
|
||||||
for c, book in enumerate(self.paths):
|
self.canceled = False
|
||||||
if self.pd.canceled:
|
for c, book in enumerate(self.paths):
|
||||||
self.canceled = True
|
if self.pd.canceled:
|
||||||
break
|
self.canceled = True
|
||||||
format = os.path.splitext(book)[1]
|
break
|
||||||
format = format[1:] if format else None
|
format = os.path.splitext(book)[1]
|
||||||
stream = open(book, 'rb')
|
format = format[1:] if format else None
|
||||||
self.formats.append(format)
|
stream = open(book, 'rb')
|
||||||
self.names.append(os.path.basename(book))
|
self.formats.append(format)
|
||||||
self.get_metadata(c, stream, stream_type=format,
|
self.names.append(os.path.basename(book))
|
||||||
use_libprs_metadata=True)
|
self.get_metadata(c, stream, stream_type=format,
|
||||||
self.wait_for_condition()
|
use_libprs_metadata=True)
|
||||||
|
self.wait_for_condition()
|
||||||
|
finally:
|
||||||
|
self.disconnect(self.get_metadata,
|
||||||
|
SIGNAL('metadata(PyQt_PyObject, PyQt_PyObject)'),
|
||||||
|
self.metadata_delivered)
|
||||||
|
self.get_metadata = None
|
||||||
|
|
||||||
|
|
||||||
def process_duplicates(self):
|
def process_duplicates(self):
|
||||||
@ -178,34 +184,40 @@ class AddRecursive(Add):
|
|||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
root = os.path.abspath(self.path)
|
try:
|
||||||
for dirpath in os.walk(root):
|
root = os.path.abspath(self.path)
|
||||||
if self.is_canceled():
|
for dirpath in os.walk(root):
|
||||||
return
|
if self.is_canceled():
|
||||||
self.emit(SIGNAL('update(PyQt_PyObject)'),
|
return
|
||||||
_('Searching in')+' '+dirpath[0])
|
self.emit(SIGNAL('update(PyQt_PyObject)'),
|
||||||
self.books += list(self.db.find_books_in_directory(dirpath[0],
|
_('Searching in')+' '+dirpath[0])
|
||||||
self.single_book_per_directory))
|
self.books += list(self.db.find_books_in_directory(dirpath[0],
|
||||||
self.books = [formats for formats in self.books if formats]
|
self.single_book_per_directory))
|
||||||
# Reset progress bar
|
self.books = [formats for formats in self.books if formats]
|
||||||
self.emit(SIGNAL('searching_done()'))
|
# Reset progress bar
|
||||||
|
self.emit(SIGNAL('searching_done()'))
|
||||||
for c, formats in enumerate(self.books):
|
|
||||||
self.get_metadata.from_formats(c, formats)
|
for c, formats in enumerate(self.books):
|
||||||
self.wait_for_condition()
|
self.get_metadata.from_formats(c, formats)
|
||||||
|
self.wait_for_condition()
|
||||||
|
|
||||||
|
# Add books to database
|
||||||
|
for c, x in enumerate(self.metadata):
|
||||||
|
mi, formats = x
|
||||||
|
if self.is_canceled():
|
||||||
|
break
|
||||||
|
if self.db.has_book(mi):
|
||||||
|
self.duplicates.append((mi, formats))
|
||||||
|
else:
|
||||||
|
self.db.import_book(mi, formats, notify=False)
|
||||||
|
self.number_of_books_added += 1
|
||||||
|
self.emit(SIGNAL('pupdate(PyQt_PyObject)'), c)
|
||||||
|
finally:
|
||||||
|
self.disconnect(self.get_metadata,
|
||||||
|
SIGNAL('metadataf(PyQt_PyObject, PyQt_PyObject)'),
|
||||||
|
self.metadata_delivered)
|
||||||
|
self.get_metadata = None
|
||||||
|
|
||||||
# Add books to database
|
|
||||||
for c, x in enumerate(self.metadata):
|
|
||||||
mi, formats = x
|
|
||||||
if self.is_canceled():
|
|
||||||
break
|
|
||||||
if self.db.has_book(mi):
|
|
||||||
self.duplicates.append((mi, formats))
|
|
||||||
else:
|
|
||||||
self.db.import_book(mi, formats, notify=False)
|
|
||||||
self.number_of_books_added += 1
|
|
||||||
self.emit(SIGNAL('pupdate(PyQt_PyObject)'), c)
|
|
||||||
|
|
||||||
|
|
||||||
def process_duplicates(self):
|
def process_duplicates(self):
|
||||||
if self.duplicates:
|
if self.duplicates:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user