当前位置: 首页>>代码示例>>Python>>正文


Python Cache.file_complete方法代码示例

本文整理汇总了Python中cache.Cache.file_complete方法的典型用法代码示例。如果您正苦于以下问题:Python Cache.file_complete方法的具体用法?Python Cache.file_complete怎么用?Python Cache.file_complete使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在cache.Cache的用法示例。


在下文中一共展示了Cache.file_complete方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_torrent

# 需要导入模块: from cache import Cache [as 别名]
# 或者: from cache.Cache import file_complete [as 别名]
 def test_torrent(self):
     ti=lt.torrent_info(TEST_TORRENT)
     ih=str(ti.info_hash())
     c=Cache(self.dir)
     url='http:/nekde/neco'
     c.file_complete(ti, url)
     tmp_file=os.path.join(self.dir, '.cache' ,ih.upper()+'.torrent')
     self.assertTrue(os.path.exists(tmp_file))
     c.close()
     c=Cache(self.dir)
     res=c.get_torrent(url)
     self.assertEqual(res, tmp_file)
     c.close()
开发者ID:alexliyu,项目名称:btclient,代码行数:15,代码来源:test_torrent_cache.py

示例2: Client

# 需要导入模块: from cache import Cache [as 别名]
# 或者: from cache.Cache import file_complete [as 别名]

#.........这里部分代码省略.........
            #shutdown por no realizar ninguna conexion
            if (not self.file or not self.file.cursor) and self.start_time and self.wait_time and not self.connected:
                if time.time() - self.start_time - 1 > self.wait_time:
                    self.stop()

            #shutdown tras la ultima conexion
            if (not self.file or not self.file.cursor) and self.timeout and self.connected and not self.is_playing_fnc:
                if time.time() - self.last_connect - 1 > self.timeout:
                    self.stop()

    def announce_torrent(self):
        """
        Servicio encargado de anunciar el torrent
        """
        self._th.force_reannounce()
        self._th.force_dht_announce()
        
    def save_state(self):
        """
        Servicio encargado de guardar el estado
        """
        state=self._ses.save_state()
        f =  open(os.path.join(self.temp_path,self.state_file), 'wb')
        pickle.dump(state,f)
        f.close()

     
    def _update_ready_pieces(self, alert_type, alert):
        """
        Servicio encargado de informar que hay una pieza disponible
        """
        if alert_type == 'read_piece_alert' and self.file:
            self.file.update_piece(alert.piece, alert.buffer)
            
            
    def _check_meta(self):
        '''
        Servicio encargado de comprobar si los metadatos se han descargado
        '''
        if self.status.state>=3 and  self.status.state <= 5 and not self.has_meta:

            #Guardamos los metadatos
            self.meta = self._th.get_torrent_info()

            #Obtenemos la lista de archivos del meta
            fs=self.meta.files()
            if isinstance(fs, list):
              files=fs  
            else:
              files = [fs.at(i) for i in xrange(fs.num_files())]

            #Guardamos la lista de archivos
            self.files=self._find_files(files)

            #Marcamos el primer archivo como activo
            self.set_file(self.files[0])

            #Damos por iniciada la descarga
            self.start_time = time.time()

            #Guardamos el .torrent en el cahce
            self._cache.file_complete(self._th.get_torrent_info())

            self.has_meta = True

    def priorize_start_file(self):
        '''
        Servicio encargado de priorizar el principio y final de archivo cuando no hay conexion
        '''
        if self.file and not self.file.cursor:
          num_start_pieces = self.buffer_size - self.last_pieces_priorize   #Cantidad de piezas a priorizar al inicio
          num_end_pieces = self.last_pieces_priorize                        #Canridad de piezas a priorizar al final
          
          pieces_count = 0
          #Priorizamos las ultimas piezas
          for y in range(self.file.last_piece - num_end_pieces, self.file.last_piece + 1):
            if not self._th.have_piece(y):
              self.prioritize_piece(y,pieces_count)
              pieces_count +=1
          
          #Priorizamos las primeras piezas
          for y in range(self.file.first_piece,self.file.last_piece + 1):
            if not self._th.have_piece(y):
              if pieces_count == self.buffer_size:
                break
              self.prioritize_piece(y,pieces_count)
              pieces_count +=1

    def print_status(self):
        """
        Servicio encargado de mostrar en el log el estado de la descarga
        """
        s = self.status
        if self.file:
          archivo = self.file.index
        else:
          archivo = "N/D"
        logger.info('%.2f%% de %.1fMB %s | %.1f kB/s | #%s %d%% | AutoClose: %s | S: %d(%d) P: %d(%d)) | TRK: %d DHT: %d PEX: %d LSD %d | DHT:%s (%d) | Trakers: %d' % \
                    (s.progress_file , s.file_size, s.str_state, s._download_rate, archivo, s.buffer, s.timeout , s.num_seeds,\
                     s.num_complete, s.num_peers, s.num_incomplete, s.trk_peers,s.dht_peers, s.pex_peers, s.lsd_peers, s.dht_state, s.dht_nodes, s.trackers))                   
开发者ID:SpankyEsse,项目名称:plugin.video.streamondemand,代码行数:104,代码来源:client.py

示例3: Client

# 需要导入模块: from cache import Cache [as 别名]
# 或者: from cache.Cache import file_complete [as 别名]

#.........这里部分代码省略.........
                    self.stop()

    def save_state(self):
        state=self._ses.save_state()
        with open(os.path.join(self.temp_path,self.state_file), 'wb') as f:
            pickle.dump(state,f)

     
    def _update_ready_pieces(self, alert_type, alert):
        if alert_type == 'read_piece_alert' and self.file:
            self.file.update_piece(alert.piece, alert.buffer)
            
            
    def _check_meta(self):
        if self.status.state>=3 and  self.status.state <= 5 and not self.has_meta:

            #Guardamos los metadatos
            self.meta = self._th.get_torrent_info()

            #Obtenemos la lista de archivos del meta
            fs=self.meta.files()
            files=fs if isinstance(fs, list) else [fs.at(i) for i in xrange(fs.num_files())]

            #Guardamos la lista de archivos
            self.files=self._choose_files(files)

            #Marcamos el primer archivo como activo
            self.set_file(self.files[0])

            #Damos por iniciada la descarga
            self.start_time = time.time()

            #Guardamos el .torrent en el cahce
            self._cache.file_complete(self._th.get_torrent_info())

            self.has_meta = True



    def _choose_files(self, files, search=None):
        #Obtenemos los archivos que la extension este en la lista
        videos=filter(lambda f: self.VIDEO_EXTS.has_key(os.path.splitext(f.path)[1]), files)

        if not videos:
            raise Exception('No video files in torrent')
        for v in videos:
            videos[videos.index(v)].index = files.index(v)
        return videos


    def set_file(self, f):
        #Seleccionamos el archivo que vamos a servir
        fmap=self.meta.map_file(f.index, 0,1)
        self.file=File(f.path, self.temp_path, f.index, f.size, fmap, self.meta.piece_length(), self)
        self.prioritize_file()
        
    def priorize_start_file(self):
        #Si tenemos un archivo seleccionado, pero no hay conexion, priorizamos el inicio del archivo
        if self.file and not self.file.cursor:
          for x in range(self.file.first_piece,self.file.last_piece):

            if not self._th.have_piece(x):
                for y in range(x,x+self.buffer_size):
                  if y == x+self.buffer_size-1 and not self._th.have_piece(self.file.last_piece):
                    self.prioritize_piece(self.file.last_piece,y-x)
                  else:
开发者ID:neozeta,项目名称:plugin.video.streamondemand,代码行数:70,代码来源:client.py


注:本文中的cache.Cache.file_complete方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。