mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix saving to disk. Offer to save file to disk when user wants to download a non support ebook file.
This commit is contained in:
parent
a097755a5c
commit
15816210ca
@ -4,11 +4,14 @@ __license__ = 'GPL 3'
|
||||
__copyright__ = '2011, John Schember <john@nachtimwald.com>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
import os
|
||||
from cookielib import Cookie, CookieJar
|
||||
|
||||
from PyQt4.Qt import QWebView, QWebPage, QNetworkCookieJar, QNetworkRequest, QString
|
||||
from PyQt4.Qt import QWebView, QWebPage, QNetworkCookieJar, QNetworkRequest, QString, \
|
||||
QFileDialog
|
||||
|
||||
from calibre import USER_AGENT
|
||||
from calibre import USER_AGENT, browser
|
||||
from calibre.ebooks import BOOK_EXTENSIONS
|
||||
|
||||
class NPWebView(QWebView):
|
||||
|
||||
@ -37,7 +40,23 @@ class NPWebView(QWebView):
|
||||
return
|
||||
|
||||
url = unicode(request.url().toString())
|
||||
self.gui.download_from_store(url, self.get_cookies())
|
||||
cj = self.get_cookies()
|
||||
|
||||
br = browser()
|
||||
br.set_cookiejar(cj)
|
||||
|
||||
basename = br.open(url).geturl().split('/')[-1]
|
||||
ext = os.path.splitext(basename)[1][1:].lower()
|
||||
if ext not in BOOK_EXTENSIONS:
|
||||
home = os.getenv('USERPROFILE') or os.getenv('HOME')
|
||||
name = QFileDialog.getSaveFileName(self,
|
||||
_('File is not a supported ebook type. Save to disk?'),
|
||||
os.path.join(home, basename),
|
||||
'*.*')
|
||||
if name:
|
||||
self.gui.download_from_store(url, cj, name, False)
|
||||
else:
|
||||
self.gui.download_from_store(url, cj)
|
||||
|
||||
def ignore_ssl_errors(self, reply, errors):
|
||||
reply.ignoreSslErrors(errors)
|
||||
|
@ -55,6 +55,11 @@ class StoreDownloadJob(BaseJob):
|
||||
self._log_file.close()
|
||||
self._log_file = None
|
||||
|
||||
try:
|
||||
os.remove(self.tmp_file_name)
|
||||
except:
|
||||
pass
|
||||
|
||||
self.job_manager.changed_queue.put(self)
|
||||
|
||||
def log_write(self, what):
|
||||
@ -126,12 +131,8 @@ class StoreDownloader(Thread):
|
||||
|
||||
br = browser()
|
||||
br.set_cookiejar(job.cookie_jar)
|
||||
|
||||
basename = br.open(url).geturl().split('/')[-1]
|
||||
ext = os.path.splitext(basename)[1][1:].lower()
|
||||
if ext not in BOOK_EXTENSIONS:
|
||||
raise Exception(_('Not a valid ebook format.'))
|
||||
|
||||
basename = br.open(url).geturl().split('/')[-1]
|
||||
tf = PersistentTemporaryFile(suffix=basename)
|
||||
with closing(br.open(url)) as f:
|
||||
tf.write(f.read())
|
||||
@ -142,6 +143,9 @@ class StoreDownloader(Thread):
|
||||
url, save_loc, add_to_lib = job.args
|
||||
if not add_to_lib and job.tmp_file_name:
|
||||
return
|
||||
ext = os.path.splitext(job.tmp_file_name)[1][1:].lower()
|
||||
if ext not in BOOK_EXTENSIONS:
|
||||
raise Exception(_('Not a support ebook format.'))
|
||||
|
||||
ext = os.path.splitext(job.tmp_file_name)[1][1:]
|
||||
|
||||
@ -156,7 +160,7 @@ class StoreDownloader(Thread):
|
||||
if not save_loc and job.tmp_file_name:
|
||||
return
|
||||
|
||||
shutil.copy(job.tmp_fie_name, save_loc)
|
||||
shutil.copy(job.tmp_file_name, save_loc)
|
||||
|
||||
def download_from_store(self, callback, db, cookie_jar, url='', save_as_loc='', add_to_lib=True):
|
||||
description = _('Downloading %s') % url
|
||||
|
Loading…
x
Reference in New Issue
Block a user