diff --git a/src/calibre/library/cli.py b/src/calibre/library/cli.py index 968b7d24c9..1aae748593 100644 --- a/src/calibre/library/cli.py +++ b/src/calibre/library/cli.py @@ -99,7 +99,7 @@ def get_db(dbpath, options): if options.library_path is not None: dbpath = options.library_path dbpath = os.path.abspath(dbpath) - return LibraryDatabase2(dbpath, row_factory=True) + return LibraryDatabase2(dbpath) def do_list(db, fields, sort_by, ascending, search_text, line_width, separator, prefix, output_format, subtitle='Books in the calibre database'): @@ -241,7 +241,7 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates): if not mi.title: mi.title = os.path.splitext(os.path.basename(book))[0] if not mi.authors: - mi.authors = ['Unknown'] + mi.authors = [_('Unknown')] formats.append(format) metadata.append(mi) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 2d37d726ae..382c423cff 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -829,9 +829,9 @@ class LibraryDatabase2(LibraryDatabase): except IntegrityError: # Sometimes books specify the same author twice in their metadata pass self.conn.commit() - self.set_path(id, True) self.data.set(id, FIELD_MAP['authors'], ','.join([a.replace(',', '|') for a in authors]), row_is_id=True) self.data.set(id, FIELD_MAP['author_sort'], self.data[self.data.row(id)][FIELD_MAP['authors']], row_is_id=True) + self.set_path(id, True) if notify: self.notify('metadata', [id]) @@ -841,9 +841,9 @@ class LibraryDatabase2(LibraryDatabase): if not isinstance(title, unicode): title = title.decode(preferred_encoding, 'replace') self.conn.execute('UPDATE books SET title=? WHERE id=?', (title, id)) - self.set_path(id, True) self.data.set(id, FIELD_MAP['title'], title, row_is_id=True) self.data.set(id, FIELD_MAP['sort'], title_sort(title), row_is_id=True) + self.set_path(id, True) self.conn.commit() if notify: self.notify('metadata', [id]) @@ -1111,20 +1111,20 @@ class LibraryDatabase2(LibraryDatabase): if record is None: continue x = {} for field in FIELDS: - x[field] = record[field] + x[field] = record[FIELD_MAP[field]] data.append(x) - x['id'] = record[0] + x['id'] = record[FIELD_MAP['id']] x['formats'] = [] x['authors'] = [i.replace('|', ',') for i in x['authors'].split(',')] if authors_as_string: x['authors'] = authors_to_string(x['authors']) x['tags'] = [i.replace('|', ',').strip() for i in x['tags'].split(',')] if x['tags'] else [] - path = os.path.join(prefix, self.path(record['id'], index_is_id=True)) + path = os.path.join(prefix, self.path(record[FIELD_MAP['id']], index_is_id=True)) x['cover'] = os.path.join(path, 'cover.jpg') if not self.has_cover(x['id'], index_is_id=True): x['cover'] = None - path += os.sep + self.construct_file_name(record['id']) + '.%s' - formats = self.formats(record['id'], index_is_id=True) + path += os.sep + self.construct_file_name(record[FIELD_MAP['id']]) + '.%s' + formats = self.formats(record[FIELD_MAP['id']], index_is_id=True) if formats: for fmt in formats.split(','): x['formats'].append(path%fmt.lower())