def save_torrent(self, infohash, metadata, source='BC', extra_info={}): # check if disk is full before save it to disk and database if not self.initialized: return None self.check_overflow() if self.min_free_space != 0 and (self.free_space - len(metadata) < self.min_free_space or self.num_collected_torrents % 10 == 0): self.free_space = self.get_free_space() if self.free_space - len(metadata) < self.min_free_space: self.warn_disk_full() return None file_name = get_collected_torrent_filename(infohash) if DEBUG: print >> sys.stderr,"metadata: Storing torrent", sha(infohash).hexdigest(),"in",file_name save_path = self.write_torrent(metadata, self.torrent_dir, file_name) if save_path: self.num_collected_torrents += 1 self.free_space -= len(metadata) self.addTorrentToDB(save_path, infohash, metadata, source=source, extra_info=extra_info) # check if space is enough and remove old torrents return file_name
def save_torrent(self, infohash, metadata, source='BC', extra_info={}): # check if disk is full before save it to disk and database if not self.initialized: return None self.check_overflow() if self.min_free_space != 0 and ( self.free_space - len(metadata) < self.min_free_space or self.num_collected_torrents % 10 == 0): self.free_space = self.get_free_space() if self.free_space - len(metadata) < self.min_free_space: self.warn_disk_full() return None file_name = get_collected_torrent_filename(infohash) if DEBUG: print >> sys.stderr, "metadata: Storing torrent", sha( infohash).hexdigest(), "in", file_name save_path = self.write_torrent(metadata, self.torrent_dir, file_name) if save_path: self.num_collected_torrents += 1 self.free_space -= len(metadata) self.addTorrentToDB(save_path, infohash, metadata, source=source, extra_info=extra_info) # check if space is enough and remove old torrents return file_name
def torrent_exists(self, infohash): # if the torrent is already on disk, put it in db file_name = get_collected_torrent_filename(infohash) torrent_path = os.path.join(self.torrent_dir, file_name) if not os.path.exists(torrent_path): return None,None else: metadata = self.read_torrent(torrent_path) if not self.valid_metadata(infohash, metadata): return None self.addTorrentToDB(torrent_path, infohash, metadata, source="BC", extra_info={}) return file_name, metadata
def tqueue_save_collected_torrent(self,metatype,metadata): """ Run by TimedTaskQueueThread """ if metatype == URL_MIME_TYPE: tdef = TorrentDef.load_from_url(metadata) else: metainfo = bdecode(metadata) tdef = TorrentDef.load_from_dict(metainfo) infohash = tdef.get_infohash() colldir = self.session.get_torrent_collecting_dir() filename = get_collected_torrent_filename(infohash) torrentpath = os.path.join(colldir, filename) print >>sys.stderr,"bg: search: saving remotehit",torrentpath tdef.save(torrentpath) return torrentpath
def torrent_exists(self, infohash): # if the torrent is already on disk, put it in db file_name = get_collected_torrent_filename(infohash) torrent_path = os.path.join(self.torrent_dir, file_name) if not os.path.exists(torrent_path): return None, None else: metadata = self.read_torrent(torrent_path) if not self.valid_metadata(infohash, metadata): return None self.addTorrentToDB(torrent_path, infohash, metadata, source="BC", extra_info={}) return file_name, metadata