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
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
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))
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()