2
# source: https://wiki.ubuntu.com/DownloadService/DownloadManager#Code_Examples
4
from gi.repository import GLib
6
from dbus.mainloop.glib import DBusGMainLoop
8
DBusGMainLoop(set_as_default=True)
11
MANAGER_IFACE = 'com.canonical.applications.DownloadManager'
12
DOWNLOAD_IFACE = 'com.canonical.applications.Download'
13
IMAGE_FILE = 'http://i.imgur.com/y51njgu.jpg'
16
def download_created(path):
17
"""Deal with the download created signal."""
18
print('Download created in %s' % path)
21
def finished_callback(path, loop):
22
"""Deal with the finis signal."""
23
print('Download performed in "%s"' % path)
27
def progress_callback(total, progress):
28
"""Deal with the progress signals."""
29
print('Progress is %s/%s' % (progress, total))
31
if __name__ == '__main__':
33
bus = dbus.SessionBus()
34
loop = GLib.MainLoop()
35
manager = bus.get_object('com.canonical.applications.Downloader',
37
manager_dev_iface = dbus.Interface(manager, dbus_interface=MANAGER_IFACE)
39
# ensure that download created works
40
manager_dev_iface.connect_to_signal('downloadCreated', download_created)
42
down_path1 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
43
dbus.Dictionary({}, signature="sv"),
44
dbus.Dictionary({}, signature="ss")))
45
down_path2 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
46
dbus.Dictionary({}, signature="sv"),
47
dbus.Dictionary({}, signature="ss")))
48
down_path3 = manager_dev_iface.createDownload((IMAGE_FILE, "", "",
49
dbus.Dictionary({}, signature="sv"),
50
dbus.Dictionary({}, signature="ss")))
52
download1 = bus.get_object('com.canonical.applications.Downloader',
54
download2 = bus.get_object('com.canonical.applications.Downloader',
56
download3 = bus.get_object('com.canonical.applications.Downloader',
59
download_dev_iface1 = dbus.Interface(download1, dbus_interface=DOWNLOAD_IFACE)
60
download_dev_iface2 = dbus.Interface(download2, dbus_interface=DOWNLOAD_IFACE)
61
download_dev_iface3 = dbus.Interface(download3, dbus_interface=DOWNLOAD_IFACE)
64
download_dev_iface1.connect_to_signal('progress', progress_callback)
65
download_dev_iface2.connect_to_signal('progress', progress_callback)
66
download_dev_iface3.connect_to_signal('progress', progress_callback)
67
download_dev_iface3.connect_to_signal('finished',
68
lambda path: finished_callback(path, loop))
70
download_dev_iface1.start()
71
download_dev_iface2.start()
72
download_dev_iface3.start()