本文整理汇总了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()
示例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))
示例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: