Beispiel #1
0
    def run(self):
        try:
            self.multitorrent = Multitorrent(self.config, self.doneflag,
                                             self.global_error)
            # raises BTFailure if bad
            metainfo = ConvertedMetainfo(bdecode(self.metainfo))
            torrent_name = metainfo.name_fs
            if self.config['save_as']:
                if self.config['save_in']:
                    raise BTFailure(
                        _("You cannot specify both --save_as and "
                          "--save_in"))
                saveas = self.config['save_as']
            elif self.config['save_in']:
                saveas = os.path.join(self.config['save_in'], torrent_name)
            else:
                saveas = torrent_name

            self.d.set_torrent_values(metainfo.name, os.path.abspath(saveas),
                                      metainfo.total_bytes,
                                      len(metainfo.hashes))
            self.torrent = self.multitorrent.start_torrent(
                metainfo, Preferences(self.config), self, saveas)
        except BTFailure, e:
            print str(e)
            return
Beispiel #2
0
    def run(self, scrwin):
        def reread():
            self.multitorrent.rawserver.external_add_task(
                self.reread_config, 0)

        self.d = CursesDisplayer(scrwin, self.errlist, self.doneflag, reread)
        try:
            self.multitorrent = Multitorrent(self.config, self.doneflag,
                                             self.global_error)
            # raises BTFailure if bad
            metainfo = ConvertedMetainfo(bdecode(self.metainfo))
            torrent_name = metainfo.name_fs
            if config['save_as']:
                if config['save_in']:
                    raise BTFailure('You cannot specify both --save_as and '
                                    '--save_in')
                saveas = config['save_as']
            elif config['save_in']:
                saveas = os.path.join(config['save_in'], torrent_name)
            else:
                saveas = torrent_name

            self.d.set_torrent_values(metainfo.name, os.path.abspath(saveas),
                                      metainfo.total_bytes,
                                      len(metainfo.hashes))
            self.torrent = self.multitorrent.start_torrent(
                metainfo, self.config, self, saveas)
        except BTFailure, e:
            errlist.append(str(e))
            return
Beispiel #3
0
 def run(self, ui, ui_wrap, startflag):
     self.ui = ui
     self.run_ui_task = ui_wrap
     self.multitorrent = Multitorrent(self.config, self.doneflag,
                                     self.global_error, listen_fail_ok=True)
     self.rawserver = self.multitorrent.rawserver
     self.controlsocket.set_rawserver(self.rawserver)
     self.controlsocket.start_listening(self.external_command)
     try:
         self._restore_state()
     except BTFailure, e:
         self.queue = []
         self.other_torrents = []
         self.torrents = {}
         self.global_error(ERROR, "Could not load saved state: "+str(e))
Beispiel #4
0
    def __init__(self, config, output, configfile_key):
        try:
            self.config = config
            self.output = output
            self.configfile_key = configfile_key

            self.torrent_dir = config['torrent_dir']
            self.torrent_cache = {}
            self.file_cache = {}
            self.blocked_files = {}

            self.torrent_list = []
            self.downloads = {}
            self.doneflag = Event()

            self.hashcheck_queue = []
            self.hashcheck_store = {}
            self.hashcheck_current = None

            self.multitorrent = Multitorrent(config, self.doneflag,
                                             self.global_error)
            self.rawserver = self.multitorrent.rawserver

            self.rawserver.add_task(self.scan, 0)
            self.rawserver.add_task(self.stats, 0)

            try:
                import signal

                def handler(signum, frame):
                    self.rawserver.external_add_task(self.read_config, 0)

                signal.signal(signal.SIGHUP, handler)
            except Exception, e:
                self.output.message('Could not set signal handler: ' + str(e))

            self.rawserver.listen_forever()

            self.output.message('shutting down')
            for infohash in self.torrent_list:
                self.output.message('dropped "' +
                                    self.torrent_cache[infohash]['path'] + '"')
                torrent = self.downloads[infohash]
                if torrent is not None:
                    torrent.shutdown()