mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Add method to create a dummy library for testing
This commit is contained in:
parent
f445ccaa14
commit
81e05df304
@ -6,3 +6,53 @@ def db(path=None):
|
||||
from calibre.library.database2 import LibraryDatabase2
|
||||
from calibre.utils.config import prefs
|
||||
return LibraryDatabase2(path if path else prefs['library_path'])
|
||||
|
||||
|
||||
def generate_test_db(library_path,
|
||||
num_of_records=20000,
|
||||
num_of_authors=6000,
|
||||
num_of_tags=10000,
|
||||
tag_length=7,
|
||||
author_length=7,
|
||||
title_length=10,
|
||||
max_authors=10,
|
||||
max_tags=10
|
||||
):
|
||||
import random, string, os, sys, time
|
||||
|
||||
if not os.path.exists(library_path):
|
||||
os.makedirs(library_path)
|
||||
|
||||
def randstr(length):
|
||||
return ''.join(random.choice(string.letters) for i in
|
||||
xrange(length))
|
||||
|
||||
all_tags = [randstr(tag_length) for j in xrange(num_of_tags)]
|
||||
print 'Generated', num_of_tags, 'tags'
|
||||
all_authors = [randstr(author_length) for j in xrange(num_of_authors)]
|
||||
print 'Generated', num_of_authors, 'authors'
|
||||
all_titles = [randstr(title_length) for j in xrange(num_of_records)]
|
||||
print 'Generated', num_of_records, 'titles'
|
||||
|
||||
testdb = db(library_path)
|
||||
|
||||
print 'Creating', num_of_records, 'records...'
|
||||
|
||||
start = time.time()
|
||||
|
||||
for i, title in enumerate(all_titles):
|
||||
print i+1,
|
||||
sys.stdout.flush()
|
||||
authors = random.randint(1, max_authors)
|
||||
authors = [random.choice(all_authors) for i in xrange(authors)]
|
||||
tags = random.randint(0, max_tags)
|
||||
tags = [random.choice(all_tags) for i in xrange(tags)]
|
||||
from calibre.ebooks.metadata.book.base import Metadata
|
||||
mi = Metadata(title, authors)
|
||||
mi.tags = tags
|
||||
testdb.import_book(mi, [])
|
||||
|
||||
t = time.time() - start
|
||||
print '\nGenerated', num_of_records, 'records in:', t, 'seconds'
|
||||
print 'Time per record:', t/float(num_of_records)
|
||||
|
||||
|
@ -2089,8 +2089,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
||||
mi.timestamp = utcnow()
|
||||
if mi.pubdate is None:
|
||||
mi.pubdate = utcnow()
|
||||
self.set_metadata(id, mi, ignore_errors=True, commit=False)
|
||||
self.conn.commit()
|
||||
self.set_metadata(id, mi, ignore_errors=True, commit=True)
|
||||
if cover is not None:
|
||||
try:
|
||||
self.set_cover(id, cover)
|
||||
@ -2130,8 +2129,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
||||
mi.timestamp = utcnow()
|
||||
if mi.pubdate is None:
|
||||
mi.pubdate = utcnow()
|
||||
self.set_metadata(id, mi, commit=False)
|
||||
self.conn.commit()
|
||||
self.set_metadata(id, mi, commit=True, ignore_errors=True)
|
||||
npath = self.run_import_plugins(path, format)
|
||||
format = os.path.splitext(npath)[-1].lower().replace('.', '').upper()
|
||||
stream = lopen(npath, 'rb')
|
||||
@ -2169,7 +2167,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
||||
mi.timestamp = utcnow()
|
||||
if mi.pubdate is None:
|
||||
mi.pubdate = utcnow()
|
||||
self.set_metadata(id, mi, ignore_errors=True)
|
||||
self.set_metadata(id, mi, ignore_errors=True, commit=True)
|
||||
if preserve_uuid and mi.uuid:
|
||||
self.set_uuid(id, mi.uuid, commit=False)
|
||||
for path in formats:
|
||||
|
Loading…
x
Reference in New Issue
Block a user