From 111feebf89606df39d5e990aa0c0760bbae5e896 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 20 Sep 2015 17:57:32 +0200 Subject: [PATCH] Refactor start_download to a class --- qutebrowser/misc/mhtml.py | 171 ++++++++++++++++++++++---------------- 1 file changed, 98 insertions(+), 73 deletions(-) diff --git a/qutebrowser/misc/mhtml.py b/qutebrowser/misc/mhtml.py index 1266fb6a3..2d8a5e069 100644 --- a/qutebrowser/misc/mhtml.py +++ b/qutebrowser/misc/mhtml.py @@ -182,83 +182,108 @@ class MHTMLWriter(object): fp.write(b"\r\n\r\n") +class _Downloader(object): + + """A class to download whole websites.""" + + def __init__(self, web_view, dest): + self.web_view = web_view + self.dest = dest + self.writer = MHTMLWriter() + self.loaded_urls = set() + self.pending_downloads = set() + + def run(self): + """Download and save the page. + + The object must not be reused, you should create a new one if + you want to download another page. + """ + download_manager = objreg.get("download-manager", scope="window", + window="current") + web_url_str = self.web_view.url().toString() + web_frame = self.web_view.page().mainFrame() + + self.writer.root_content = web_frame.toHtml().encode("utf-8") + self.writer.content_location = web_url_str + # I've found no way of getting the content type of a QWebView, but + # since we're using .toHtml, it's probably safe to say that the + # content-type is HTML + self.writer.content_type = 'text/html; charset="UTF-8"' + # Currently only downloading (stylesheets),