如何在Python+Webkit+Gtk中下载文件浏览器?

How to download a file browser in Python+Webkit+Gtk?

这是 Python Webkit Gtk 中的一个简单浏览器:

#!/usr/bin/python

import gtk
import webkit

view = webkit.WebView()
sw = gtk.ScrolledWindow()

sw.add(view)

win = gtk.Window(gtk.WINDOW_TOPLEVEL)

win.add(sw)

win.show_all()

view.open("https://www.kernel.org/")

gtk.main()

浏览完美。不幸的是,在本地计算机上保存文件不起作用。我找不到现成的解决方案。我不需要进度条,文件夹选择,我要点击link导致下载。您知道将文件保存到目录 /home/user 的最简单方法吗?

docs 中所述,您必须连接到 mime-type-policy-decision-requesteddownload-requested 信号。

view.connect('download-requested', download_requested)
view.connect('mime-type-policy-decision-requested', policy_decision_requested)

然后检查 mime 类型并决定是否要下载它:

def policy_decision_requested(view, frame, request, mimetype, policy_decision):
    if mimetype != 'text/html':
        policy_decision.download()
        return True

download-requested 之后发出时,您可以让 WebKit.Download 对象处理下载或(在这种情况下)使用 python:

def download_requested(view, download):
    name = download.get_suggested_filename()
    path = os.path.join(
        GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOWNLOAD),
        name
    )
    urlretrieve(download.get_uri(), path)  # urllib.request.urlretrieve
    return False