#!@PYTHON@ @PYOPTIONS@ # # deluge # Copyright (C) Zach Tibbitts 2006 # Copyright (C) Alon Zakai 2006 # # # # Deluge is free software. # # You may redistribute it and/or modify it under the terms of the # GNU General Public License, as published by the Free Software # Foundation; either version 2 of the License, or (at your option) # any later version. # # deluge is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with deluge. If not, write to: # The Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor # Boston, MA 02110-1301, USA. # # In addition, as a special exception, the copyright holders give # permission to link the code of portions of this program with the OpenSSL # library. # You must obey the GNU General Public License in all respects for all of # the code used other than OpenSSL. If you modify file(s) with this # exception, you may extend this exception to your version of the file(s), # but you are not obligated to do so. If you do not wish to do so, delete # this exception statement from your version. If you delete this exception # statement from all source files in the program, then also delete it here. from optparse import OptionParser import sys import os, os.path import gettext, locale import deluge, deluge.common, deluge.interface try: import dbus dbus_version = getattr(dbus, 'version', (0,0,0)) if dbus_version >= (0,41,0) and dbus_version < (0,80,0): import dbus.glib elif dbus_version >= (0,80,0): from dbus.mainloop.glib import DBusGMainLoop DBusGMainLoop(set_as_default=True) else: pass except: dbus_imported = False else: dbus_imported = True parser = OptionParser(usage="%prog [options] [actions]", version="@VERSION@") parser.add_option("--tray", dest="tray", help="start Deluge hidden in system tray", metavar="TRAY", action="store_true") parser.add_option("--url", dest="url", help="Load a torrent from a URL", metavar="URL", action="store") (options, args) = parser.parse_args() def start_deluge(): print "Starting new Deluge session..." interface = deluge.interface.DelugeGTK() add_args(interface) interface.start() def add_args(interface): if options.url: interface.external_add_url(options.url) else: for arg in args: apath = os.path.abspath(arg) if apath.endswith(".torrent"): interface.external_add_torrent(apath) else: print "Error,", arg, " does not seem to be a .torrent file" if dbus_imported: bus = dbus.SessionBus() dbus_objects = dbus.Interface(bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus'), 'org.freedesktop.DBus').ListNames() interface = None if not "org.deluge_torrent.Deluge" in dbus_objects: print "no existing Deluge session" start_deluge() else: ## This connects to the deluge interface print "create proxy object" proxy = bus.get_object('org.deluge_torrent.Deluge', '/org/deluge_torrent/DelugeObject') print "create iface" deluge_iface = dbus.Interface(proxy, 'org.deluge_torrent.Deluge') print "send to iface" add_args(deluge_iface) else: print "no existing Deluge session" start_deluge()