mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement cover fetching
This commit is contained in:
parent
4e26ef39aa
commit
0e23eed1b7
@ -12,20 +12,21 @@
|
|||||||
## You should have received a copy of the GNU General Public License along
|
## You should have received a copy of the GNU General Public License along
|
||||||
## with this program; if not, write to the Free Software Foundation, Inc.,
|
## with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
from libprs500.gui2.dialogs.fetch_metadata import FetchMetadata
|
|
||||||
'''
|
'''
|
||||||
The dialog used to edit meta information for a book as well as
|
The dialog used to edit meta information for a book as well as
|
||||||
add/remove formats
|
add/remove formats
|
||||||
'''
|
'''
|
||||||
import os
|
import os, urllib
|
||||||
|
|
||||||
from PyQt4.QtCore import SIGNAL, QObject
|
from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication
|
||||||
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog
|
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog
|
||||||
|
|
||||||
|
|
||||||
from libprs500.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \
|
from libprs500.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \
|
||||||
choose_files, pixmap_to_data, BOOK_EXTENSIONS, choose_images
|
choose_files, pixmap_to_data, BOOK_EXTENSIONS, choose_images
|
||||||
from libprs500.gui2.dialogs.metadata_single_ui import Ui_MetadataSingleDialog
|
from libprs500.gui2.dialogs.metadata_single_ui import Ui_MetadataSingleDialog
|
||||||
|
from libprs500.gui2.dialogs.fetch_metadata import FetchMetadata
|
||||||
|
from libprs500.ebooks.BeautifulSoup import BeautifulSoup
|
||||||
|
|
||||||
class Format(QListWidgetItem):
|
class Format(QListWidgetItem):
|
||||||
def __init__(self, parent, ext, path=None):
|
def __init__(self, parent, ext, path=None):
|
||||||
@ -141,6 +142,9 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
|
|||||||
QObject.connect(self.fetch_metadata_button, SIGNAL('clicked()'),
|
QObject.connect(self.fetch_metadata_button, SIGNAL('clicked()'),
|
||||||
self.fetch_metadata)
|
self.fetch_metadata)
|
||||||
|
|
||||||
|
QObject.connect(self.fetch_cover_button, SIGNAL('clicked()'),
|
||||||
|
self.fetch_cover)
|
||||||
|
|
||||||
self.title.setText(db.title(row))
|
self.title.setText(db.title(row))
|
||||||
isbn = db.isbn(self.id)
|
isbn = db.isbn(self.id)
|
||||||
if not isbn:
|
if not isbn:
|
||||||
@ -195,6 +199,33 @@ class MetadataSingleDialog(QDialog, Ui_MetadataSingleDialog):
|
|||||||
|
|
||||||
self.exec_()
|
self.exec_()
|
||||||
|
|
||||||
|
|
||||||
|
def fetch_cover(self):
|
||||||
|
isbn = qstring_to_unicode(self.isbn.text())
|
||||||
|
if isbn:
|
||||||
|
self.fetch_cover_button.setEnabled(False)
|
||||||
|
QCoreApplication.instance().processEvents()
|
||||||
|
try:
|
||||||
|
src = urllib.urlopen('http://www.librarything.com/isbn/'+isbn).read()
|
||||||
|
s = BeautifulSoup(src)
|
||||||
|
url = s.find('td', attrs={'class':'left'}).find('img')['src']
|
||||||
|
cover = urllib.urlopen(url).read()
|
||||||
|
pix = QPixmap()
|
||||||
|
pix.loadFromData(cover)
|
||||||
|
if pix.isNull():
|
||||||
|
error_dialog(self.window, url + " is not a valid picture").exec_()
|
||||||
|
else:
|
||||||
|
self.cover.setPixmap(pix)
|
||||||
|
self.cover_changed = True
|
||||||
|
self.cpixmap = pix
|
||||||
|
except Exception, err:
|
||||||
|
error_dialog(self, 'Could not fetch cover', 'Could not fetch cover. Error %s'%(err,)).exec_()
|
||||||
|
finally:
|
||||||
|
self.fetch_cover_button.setEnabled(True)
|
||||||
|
else:
|
||||||
|
error_dialog(self, 'Cannot fetch cover', 'You must specify the ISBN identifier for this book.').exec_()
|
||||||
|
|
||||||
|
|
||||||
def fetch_metadata(self):
|
def fetch_metadata(self):
|
||||||
isbn = qstring_to_unicode(self.isbn.text())
|
isbn = qstring_to_unicode(self.isbn.text())
|
||||||
title = qstring_to_unicode(self.title.text())
|
title = qstring_to_unicode(self.title.text())
|
||||||
|
@ -496,6 +496,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="0" >
|
||||||
|
<widget class="QPushButton" name="fetch_cover_button" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Fetch cover image from server</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user