mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
f3beb13b62
commit
15f638784d
@ -77,7 +77,7 @@ class ViewLog(QDialog): # {{{
|
|||||||
self.copy_button.clicked.connect(self.copy_to_clipboard)
|
self.copy_button.clicked.connect(self.copy_to_clipboard)
|
||||||
l.addWidget(self.bb)
|
l.addWidget(self.bb)
|
||||||
self.setModal(False)
|
self.setModal(False)
|
||||||
self.resize(QSize(500, 400))
|
self.resize(QSize(700, 500))
|
||||||
self.setWindowTitle(_('Download log'))
|
self.setWindowTitle(_('Download log'))
|
||||||
self.setWindowIcon(QIcon(I('debug.png')))
|
self.setWindowIcon(QIcon(I('debug.png')))
|
||||||
self.show()
|
self.show()
|
||||||
@ -121,7 +121,6 @@ class ApplyDialog(QDialog):
|
|||||||
self.canceled = False
|
self.canceled = False
|
||||||
|
|
||||||
QTimer.singleShot(20, self.do_one)
|
QTimer.singleShot(20, self.do_one)
|
||||||
self.exec_()
|
|
||||||
|
|
||||||
def do_one(self):
|
def do_one(self):
|
||||||
if self.canceled:
|
if self.canceled:
|
||||||
@ -189,7 +188,7 @@ def apply_metadata(job, gui, q, result):
|
|||||||
q.finished.disconnect()
|
q.finished.disconnect()
|
||||||
if result != q.Accepted:
|
if result != q.Accepted:
|
||||||
return
|
return
|
||||||
id_map, failed_ids = job.result
|
id_map, failed_ids, failed_covers, title_map = job.result
|
||||||
id_map = dict([(k, v) for k, v in id_map.iteritems() if k not in
|
id_map = dict([(k, v) for k, v in id_map.iteritems() if k not in
|
||||||
failed_ids])
|
failed_ids])
|
||||||
if not id_map:
|
if not id_map:
|
||||||
@ -219,24 +218,32 @@ def apply_metadata(job, gui, q, result):
|
|||||||
return
|
return
|
||||||
|
|
||||||
_amd = ApplyDialog(id_map, gui)
|
_amd = ApplyDialog(id_map, gui)
|
||||||
|
_amd.exec_()
|
||||||
|
|
||||||
def proceed(gui, job):
|
def proceed(gui, job):
|
||||||
gui.status_bar.show_message(_('Metadata download completed'), 3000)
|
gui.status_bar.show_message(_('Metadata download completed'), 3000)
|
||||||
id_map, failed_ids = job.result
|
id_map, failed_ids, failed_covers, title_map = job.result
|
||||||
fmsg = det_msg = ''
|
fmsg = det_msg = ''
|
||||||
if failed_ids:
|
if failed_ids or failed_covers:
|
||||||
fmsg = _('Could not download metadata for %d of the books. Click'
|
fmsg = '<p>'+_('Could not download metadata and/or covers for %d of the books. Click'
|
||||||
' "Show details" to see which books.')%len(failed_ids)
|
' "Show details" to see which books.')%len(failed_ids)
|
||||||
det_msg = '\n'.join([id_map[i].title for i in failed_ids])
|
det_msg = []
|
||||||
|
for i in failed_ids | failed_covers:
|
||||||
|
title = title_map[i]
|
||||||
|
if i in failed_ids:
|
||||||
|
title += (' ' + _('(Failed metadata)'))
|
||||||
|
if i in failed_covers:
|
||||||
|
title += (' ' + _('(Failed cover)'))
|
||||||
|
det_msg.append(title)
|
||||||
msg = '<p>' + _('Finished downloading metadata for <b>%d book(s)</b>. '
|
msg = '<p>' + _('Finished downloading metadata for <b>%d book(s)</b>. '
|
||||||
'Proceed with updating the metadata in your library?')%len(id_map)
|
'Proceed with updating the metadata in your library?')%len(id_map)
|
||||||
q = MessageBox(MessageBox.QUESTION, _('Download complete'),
|
q = MessageBox(MessageBox.QUESTION, _('Download complete'),
|
||||||
msg + fmsg, det_msg=det_msg, show_copy_button=bool(failed_ids),
|
msg + fmsg, det_msg='\n'.join(det_msg), show_copy_button=bool(failed_ids),
|
||||||
parent=gui)
|
parent=gui)
|
||||||
q.vlb = q.bb.addButton(_('View log'), q.bb.ActionRole)
|
q.vlb = q.bb.addButton(_('View log'), q.bb.ActionRole)
|
||||||
q.vlb.setIcon(QIcon(I('debug.png')))
|
q.vlb.setIcon(QIcon(I('debug.png')))
|
||||||
q.vlb.clicked.connect(partial(view_log, job, q))
|
q.vlb.clicked.connect(partial(view_log, job, q))
|
||||||
q.det_msg_toggle.setVisible(bool(failed_ids))
|
q.det_msg_toggle.setVisible(bool(failed_ids | failed_covers))
|
||||||
q.setModal(False)
|
q.setModal(False)
|
||||||
q.show()
|
q.show()
|
||||||
q.finished.connect(partial(apply_metadata, job, gui, q))
|
q.finished.connect(partial(apply_metadata, job, gui, q))
|
||||||
@ -265,6 +272,8 @@ def download(ids, db, do_identify, covers,
|
|||||||
metadata = [db.get_metadata(i, index_is_id=True, get_user_categories=False)
|
metadata = [db.get_metadata(i, index_is_id=True, get_user_categories=False)
|
||||||
for i in ids]
|
for i in ids]
|
||||||
failed_ids = set()
|
failed_ids = set()
|
||||||
|
failed_covers = set()
|
||||||
|
title_map = {}
|
||||||
ans = {}
|
ans = {}
|
||||||
count = 0
|
count = 0
|
||||||
for i, mi in izip(ids, metadata):
|
for i, mi in izip(ids, metadata):
|
||||||
@ -272,6 +281,7 @@ def download(ids, db, do_identify, covers,
|
|||||||
log.error('Aborting...')
|
log.error('Aborting...')
|
||||||
break
|
break
|
||||||
title, authors, identifiers = mi.title, mi.authors, mi.identifiers
|
title, authors, identifiers = mi.title, mi.authors, mi.identifiers
|
||||||
|
title_map[i] = title
|
||||||
if do_identify:
|
if do_identify:
|
||||||
results = []
|
results = []
|
||||||
try:
|
try:
|
||||||
@ -282,9 +292,14 @@ def download(ids, db, do_identify, covers,
|
|||||||
if results:
|
if results:
|
||||||
mi = merge_result(mi, results[0])
|
mi = merge_result(mi, results[0])
|
||||||
identifiers = mi.identifiers
|
identifiers = mi.identifiers
|
||||||
|
if not mi.is_null('rating'):
|
||||||
|
# set_metadata expects a rating out of 10
|
||||||
|
mi.rating *= 2
|
||||||
else:
|
else:
|
||||||
log.error('Failed to download metadata for', title)
|
log.error('Failed to download metadata for', title)
|
||||||
failed_ids.add(mi)
|
failed_ids.add(i)
|
||||||
|
# We don't want set_metadata operating on anything but covers
|
||||||
|
mi = merge_result(mi, mi)
|
||||||
if covers:
|
if covers:
|
||||||
cdata = download_cover(log, title=title, authors=authors,
|
cdata = download_cover(log, title=title, authors=authors,
|
||||||
identifiers=identifiers)
|
identifiers=identifiers)
|
||||||
@ -292,12 +307,14 @@ def download(ids, db, do_identify, covers,
|
|||||||
with PersistentTemporaryFile('.jpg', 'downloaded-cover-') as f:
|
with PersistentTemporaryFile('.jpg', 'downloaded-cover-') as f:
|
||||||
f.write(cdata[-1])
|
f.write(cdata[-1])
|
||||||
mi.cover = f.name
|
mi.cover = f.name
|
||||||
|
else:
|
||||||
|
failed_covers.add(i)
|
||||||
ans[i] = mi
|
ans[i] = mi
|
||||||
count += 1
|
count += 1
|
||||||
notifications.put((count/len(ids),
|
notifications.put((count/len(ids),
|
||||||
_('Downloaded %d of %d')%(count, len(ids))))
|
_('Downloaded %d of %d')%(count, len(ids))))
|
||||||
log('Download complete, with %d failures'%len(failed_ids))
|
log('Download complete, with %d failures'%len(failed_ids))
|
||||||
return (ans, failed_ids)
|
return (ans, failed_ids, failed_covers, title_map)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user