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
Exemple #4
0
    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