mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Sorted user recipes in serialize_collection
This commit is contained in:
parent
8c952c2c32
commit
1a5c956188
@ -179,28 +179,42 @@ class DBAdder(QObject): # {{{
|
|||||||
cover = f.read()
|
cover = f.read()
|
||||||
orig_formats = formats
|
orig_formats = formats
|
||||||
formats = [f for f in formats if not f.lower().endswith('.opf')]
|
formats = [f for f in formats if not f.lower().endswith('.opf')]
|
||||||
if prefs['add_formats_to_existing']:
|
if prefs['add_formats_to_existing']: #automerge is on
|
||||||
identical_book_list = self.db.find_identical_books(mi)
|
identical_book_list = self.db.find_identical_books(mi)
|
||||||
|
print 'identical_book_list is: ', identical_book_list #We are dealing with only one file of a specific format, and this is a list of matching db book records to the one file/format being processed
|
||||||
if identical_book_list: # books with same author and nearly same title exist in db
|
if identical_book_list: # books with same author and nearly same title exist in db for the one format being handled
|
||||||
self.merged_books.add(mi.title)
|
self.merged_books.add(mi.title)
|
||||||
for identical_book in identical_book_list:
|
for identical_book in identical_book_list: #this will add the new format to *each* matching entry in the db - Do we need to do this?
|
||||||
if gprefs['automerge'] == 'ignore':
|
if gprefs['automerge'] == 'ignore':
|
||||||
self.add_formats(identical_book, formats, replace=False)
|
self.add_formats(identical_book, formats, replace=False)
|
||||||
print 'do something for ignore'
|
|
||||||
if gprefs['automerge'] == 'overwrite':
|
if gprefs['automerge'] == 'overwrite':
|
||||||
self.add_formats(identical_book, formats, replace=True)
|
self.add_formats(identical_book, formats, replace=True)
|
||||||
print 'do something for overwrite'
|
print 'inside overwrite'
|
||||||
if gprefs['automerge'] == 'new record':
|
if gprefs['automerge'] == 'new record':
|
||||||
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=True)
|
print 'We are in new record'
|
||||||
self.number_of_books_added += 1
|
'''
|
||||||
self.add_formats(id, formats)
|
We are here because we have at least one book record in the db that matches the one file/format being processed
|
||||||
print 'do something for new record'
|
We need to check if the file/format being processed matches a format in the matching book record.
|
||||||
else:
|
If so, create new record (as below), else, add to existing record, as above.
|
||||||
|
Test if format exists in matching record. identical_book is an id, formats is a FQPN path in a list
|
||||||
|
'''
|
||||||
|
for path in formats: #I think there's always only one path in formats - Check
|
||||||
|
fmt = os.path.splitext(path)[-1].replace('.', '').upper() #this is the format extension of the incoming file
|
||||||
|
ib_fmts = self.db.formats(identical_book, index_is_id=True) #These are the formats in the record
|
||||||
|
if fmt in ib_fmts: #Create a new record if the incoming format already exists in the identical book (ib) record
|
||||||
|
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=True)
|
||||||
|
self.number_of_books_added += 1
|
||||||
|
self.add_formats(id, formats)
|
||||||
|
#If we created a new record, are we done - or should we go on and add to other existing records that don't have this format?
|
||||||
|
else: #a new record is not required - the incoming format does not exist in the ib record
|
||||||
|
self.add_formats(identical_book, formats, replace=False)
|
||||||
|
|
||||||
|
else: # books with same author and nearly same title do not exist in db
|
||||||
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=True)
|
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=True)
|
||||||
self.number_of_books_added += 1
|
self.number_of_books_added += 1
|
||||||
self.add_formats(id, formats)
|
self.add_formats(id, formats)
|
||||||
else:
|
|
||||||
|
else: #automerge is off -use legacy duplicates code
|
||||||
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=False)
|
id = self.db.create_book_entry(mi, cover=cover, add_duplicates=False)
|
||||||
if id is None:
|
if id is None:
|
||||||
self.duplicates.append((mi, cover, orig_formats))
|
self.duplicates.append((mi, cover, orig_formats))
|
||||||
@ -214,7 +228,7 @@ class DBAdder(QObject): # {{{
|
|||||||
return mi.title
|
return mi.title
|
||||||
|
|
||||||
def add_formats(self, id, formats, replace=True):
|
def add_formats(self, id, formats, replace=True):
|
||||||
for path in formats:
|
for path in formats: #path and formats will be the same fully qualified path and book filename when used by automerge
|
||||||
fmt = os.path.splitext(path)[-1].replace('.', '').upper()
|
fmt = os.path.splitext(path)[-1].replace('.', '').upper()
|
||||||
with open(path, 'rb') as f:
|
with open(path, 'rb') as f:
|
||||||
self.db.add_format(id, fmt, f, index_is_id=True,
|
self.db.add_format(id, fmt, f, index_is_id=True,
|
||||||
|
@ -23,10 +23,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
r('read_file_metadata', prefs)
|
r('read_file_metadata', prefs)
|
||||||
r('swap_author_names', prefs)
|
r('swap_author_names', prefs)
|
||||||
r('add_formats_to_existing', prefs)
|
r('add_formats_to_existing', prefs)
|
||||||
choices = [(_('Ignore'), 'ignore'), (_('Overwrite'), 'overwrite'),
|
choices = [(_('Ignore the incoming format'), 'ignore'), (_('Overwrite the existing format with the incoming format'), 'overwrite'), (_('Create a new book record for the incoming format'), 'new record')]
|
||||||
(_('New Record'), 'new record')]
|
|
||||||
r('automerge', gprefs, choices=choices)
|
r('automerge', gprefs, choices=choices)
|
||||||
#print 'The automerge setting is: ', gprefs['automerge']
|
|
||||||
|
|
||||||
self.filename_pattern = FilenamePattern(self)
|
self.filename_pattern = FilenamePattern(self)
|
||||||
self.metadata_box.layout().insertWidget(0, self.filename_pattern)
|
self.metadata_box.layout().insertWidget(0, self.filename_pattern)
|
||||||
|
@ -31,22 +31,22 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="1"> #MOD was colspan="2"
|
<item row="2" column="0" colspan="1">
|
||||||
<widget class="QCheckBox" name="opt_add_formats_to_existing">
|
<widget class="QCheckBox" name="opt_add_formats_to_existing">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>If an existing book with a similar title and author is found, the incoming format will be added to the existing book record where possible.
|
<string>If an existing book with a similar title and author is found, the incoming format will be added to the existing book record, where possible.
|
||||||
If the existing book already has the incoming format, then the setting to the right controls and the new format will be ignored, it will overwrite the old format
|
If the existing book already has the incoming format, then the setting to the right controls and the new format will be ignored, it will overwrite the existing format
|
||||||
or a new record will be created.
|
or a new book record will be created for the incoming format.
|
||||||
|
|
||||||
Title match ignores leading indefinite articles ("the", "a", "an"), punctuation, case, etc. Author match is exact.</string>
|
Title match ignores leading indefinite articles ("the", "a", "an"), punctuation, case, etc. Author match is exact.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>If books with similar titles and authors found, &try to merge the new formats automatically
|
<string>Automerge: If books with similar titles and authors found, try to &merge the incoming formats automatically
|
||||||
and do this for duplicate formats: </string>
|
into existing book records. The option to the right controls what happens when the existing record already has the incoming format: </string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1"> #MOD added as new item
|
<item row="2" column="1">
|
||||||
<widget class="QComboBox" name="opt_automerge"/>
|
<widget class="QComboBox" name="opt_automerge"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user