mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add support for date published field to edit metadata dialog. Also preferentially use ISBN13 numbers from ISBNDB
This commit is contained in:
parent
03dba92e8d
commit
119b154948
@ -49,7 +49,7 @@ class ISBNDBMetadata(MetaInformation):
|
|||||||
def __init__(self, book):
|
def __init__(self, book):
|
||||||
MetaInformation.__init__(self, None, [])
|
MetaInformation.__init__(self, None, [])
|
||||||
|
|
||||||
self.isbn = book['isbn']
|
self.isbn = book.get('isbn13', book.get('isbn'))
|
||||||
self.title = book.find('titlelong').string
|
self.title = book.find('titlelong').string
|
||||||
if not self.title:
|
if not self.title:
|
||||||
self.title = book.find('title').string
|
self.title = book.find('title').string
|
||||||
@ -74,7 +74,6 @@ class ISBNDBMetadata(MetaInformation):
|
|||||||
self.comments = 'SUMMARY:\n'+summ.string
|
self.comments = 'SUMMARY:\n'+summ.string
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def build_isbn(base_url, opts):
|
def build_isbn(base_url, opts):
|
||||||
return base_url + 'index1=isbn&value1='+opts.isbn
|
return base_url + 'index1=isbn&value1='+opts.isbn
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata
|
|||||||
from calibre.gui2 import error_dialog, NONE, info_dialog
|
from calibre.gui2 import error_dialog, NONE, info_dialog
|
||||||
from calibre.gui2.widgets import ProgressIndicator
|
from calibre.gui2.widgets import ProgressIndicator
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
|
from calibre import strftime
|
||||||
|
|
||||||
class Fetcher(QThread):
|
class Fetcher(QThread):
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ class Matches(QAbstractTableModel):
|
|||||||
return len(self.matches)
|
return len(self.matches)
|
||||||
|
|
||||||
def columnCount(self, *args):
|
def columnCount(self, *args):
|
||||||
return 5
|
return 6
|
||||||
|
|
||||||
def headerData(self, section, orientation, role):
|
def headerData(self, section, orientation, role):
|
||||||
if role != Qt.DisplayRole:
|
if role != Qt.DisplayRole:
|
||||||
@ -57,6 +58,7 @@ class Matches(QAbstractTableModel):
|
|||||||
elif section == 2: text = _("Author Sort")
|
elif section == 2: text = _("Author Sort")
|
||||||
elif section == 3: text = _("Publisher")
|
elif section == 3: text = _("Publisher")
|
||||||
elif section == 4: text = _("ISBN")
|
elif section == 4: text = _("ISBN")
|
||||||
|
elif section == 5: text = _("Published")
|
||||||
|
|
||||||
return QVariant(text)
|
return QVariant(text)
|
||||||
else:
|
else:
|
||||||
@ -80,6 +82,9 @@ class Matches(QAbstractTableModel):
|
|||||||
res = book.publisher
|
res = book.publisher
|
||||||
elif col == 4:
|
elif col == 4:
|
||||||
res = book.isbn
|
res = book.isbn
|
||||||
|
elif col == 5:
|
||||||
|
if hasattr(book.pubdate, 'timetuple'):
|
||||||
|
res = strftime('%b %Y', book.pubdate.timetuple())
|
||||||
if not res:
|
if not res:
|
||||||
return NONE
|
return NONE
|
||||||
return QVariant(res)
|
return QVariant(res)
|
||||||
@ -126,7 +131,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
|
|||||||
prefs['isbndb_com_key'] = key
|
prefs['isbndb_com_key'] = key
|
||||||
else:
|
else:
|
||||||
key = None
|
key = None
|
||||||
title = author = publisher = isbn = None
|
title = author = publisher = isbn = pubdate = None
|
||||||
if self.isbn:
|
if self.isbn:
|
||||||
isbn = self.isbn
|
isbn = self.isbn
|
||||||
if self.title:
|
if self.title:
|
||||||
|
@ -10,8 +10,9 @@ import os
|
|||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread
|
from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread, QDate
|
||||||
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog, QCompleter
|
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog, QCompleter
|
||||||
|
|
||||||
from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \
|
from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \
|
||||||
@ -234,6 +235,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
self.cover.setAcceptDrops(True)
|
self.cover.setAcceptDrops(True)
|
||||||
self._author_completer = AuthorCompleter(self.db)
|
self._author_completer = AuthorCompleter(self.db)
|
||||||
self.authors.setCompleter(self._author_completer)
|
self.authors.setCompleter(self._author_completer)
|
||||||
|
self.pubdate.setMinimumDate(QDate(100,1,1))
|
||||||
self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped)
|
self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped)
|
||||||
QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \
|
QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \
|
||||||
self.select_cover)
|
self.select_cover)
|
||||||
@ -279,6 +281,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
comments = self.db.comments(row)
|
comments = self.db.comments(row)
|
||||||
self.comments.setPlainText(comments if comments else '')
|
self.comments.setPlainText(comments if comments else '')
|
||||||
cover = self.db.cover(row)
|
cover = self.db.cover(row)
|
||||||
|
pubdate = db.pubdate(self.id, index_is_id=True)
|
||||||
|
self.pubdate.setDate(QDate(pubdate.year, pubdate.month,
|
||||||
|
pubdate.day))
|
||||||
|
|
||||||
exts = self.db.formats(row)
|
exts = self.db.formats(row)
|
||||||
if exts:
|
if exts:
|
||||||
@ -441,6 +446,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
if book.author_sort: self.author_sort.setText(book.author_sort)
|
if book.author_sort: self.author_sort.setText(book.author_sort)
|
||||||
if book.publisher: self.publisher.setEditText(book.publisher)
|
if book.publisher: self.publisher.setEditText(book.publisher)
|
||||||
if book.isbn: self.isbn.setText(book.isbn)
|
if book.isbn: self.isbn.setText(book.isbn)
|
||||||
|
if book.pubdate:
|
||||||
|
d = book.pubdate
|
||||||
|
self.pubdate.setDate(QDate(d.year, d.month, d.day))
|
||||||
summ = book.comments
|
summ = book.comments
|
||||||
if summ:
|
if summ:
|
||||||
prefix = qstring_to_unicode(self.comments.toPlainText())
|
prefix = qstring_to_unicode(self.comments.toPlainText())
|
||||||
@ -485,6 +493,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
self.db.set_series(self.id, qstring_to_unicode(self.series.currentText()), notify=False)
|
self.db.set_series(self.id, qstring_to_unicode(self.series.currentText()), notify=False)
|
||||||
self.db.set_series_index(self.id, self.series_index.value(), notify=False)
|
self.db.set_series_index(self.id, self.series_index.value(), notify=False)
|
||||||
self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()), notify=False)
|
self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()), notify=False)
|
||||||
|
d = self.pubdate.date()
|
||||||
|
self.db.set_pubdate(self.id, datetime(d.year(), d.month(), d.day()))
|
||||||
|
|
||||||
if self.cover_changed:
|
if self.cover_changed:
|
||||||
self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap()))
|
self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap()))
|
||||||
QDialog.accept(self)
|
QDialog.accept(self)
|
||||||
|
@ -325,6 +325,19 @@
|
|||||||
<item row="8" column="1" colspan="2">
|
<item row="8" column="1" colspan="2">
|
||||||
<widget class="QLineEdit" name="isbn"/>
|
<widget class="QLineEdit" name="isbn"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="9" column="0">
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="text">
|
||||||
|
<string>Publishe&d:</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>pubdate</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QComboBox" name="publisher">
|
<widget class="QComboBox" name="publisher">
|
||||||
<property name="editable">
|
<property name="editable">
|
||||||
@ -348,6 +361,16 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
|
<widget class="QDateEdit" name="pubdate">
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>MMM yyyy</string>
|
||||||
|
</property>
|
||||||
|
<property name="calendarPopup">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -632,6 +655,7 @@
|
|||||||
<tabstop>tag_editor_button</tabstop>
|
<tabstop>tag_editor_button</tabstop>
|
||||||
<tabstop>remove_series_button</tabstop>
|
<tabstop>remove_series_button</tabstop>
|
||||||
<tabstop>isbn</tabstop>
|
<tabstop>isbn</tabstop>
|
||||||
|
<tabstop>pubdate</tabstop>
|
||||||
<tabstop>comments</tabstop>
|
<tabstop>comments</tabstop>
|
||||||
<tabstop>fetch_metadata_button</tabstop>
|
<tabstop>fetch_metadata_button</tabstop>
|
||||||
<tabstop>fetch_cover_button</tabstop>
|
<tabstop>fetch_cover_button</tabstop>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user