Имя в статусе серии
parent
ad26862286
commit
3ecaa41dbb
|
@ -196,7 +196,7 @@ class Engine:
|
|||
'maxFailCount': self.max_failcount,
|
||||
'showPiecesProgress': self.log_pieces_progress,
|
||||
'idleTimeout': self.max_idle_timeout,
|
||||
'fileIndex': start_index,
|
||||
#'fileIndex': start_index,
|
||||
'connectionsLimit': self.connections_limit,
|
||||
'enableScrape': self.enable_scrape,
|
||||
'enableUTP': self.enable_utp,
|
||||
|
@ -245,6 +245,9 @@ class Engine:
|
|||
raise Error("Can't start pyrrent2http, time is out", Error.TIMEOUT)
|
||||
self._log("pyrrent2http successfully started.")
|
||||
|
||||
def activate_file(self, index):
|
||||
self.pyrrent2http.TorrentFS.file(index)
|
||||
|
||||
def check_torrent_error(self, status=None):
|
||||
"""
|
||||
It is recommended to call this method periodically to check if any libtorrent errors occurred.
|
||||
|
@ -324,11 +327,10 @@ class Engine:
|
|||
:return: File with specified index
|
||||
:rtype: FileStatus
|
||||
"""
|
||||
files = self.pyrrent2http.Ls()['files']
|
||||
if files:
|
||||
for f in files:
|
||||
if f['index'] == file_index:
|
||||
return FileStatus(**f)
|
||||
filestatus = self.pyrrent2http.Ls(file_index)
|
||||
try:
|
||||
return FileStatus(**filestatus)
|
||||
except:
|
||||
raise Error("Requested file index (%d) is invalid" % (file_index,), Error.INVALID_FILE_INDEX,
|
||||
file_index=file_index)
|
||||
|
||||
|
|
|
@ -261,25 +261,21 @@ class TorrentFS(object):
|
|||
progresses = list()
|
||||
save_path = None
|
||||
|
||||
def __init__(self, root, handle, startIndex):
|
||||
def __init__(self, root, handle):
|
||||
self.root = root
|
||||
self.handle = handle
|
||||
self.waitForMetadata()
|
||||
self.save_path = localize_path(self.root.torrentParams['save_path'])
|
||||
self.priorities = list(self.handle.file_priorities())
|
||||
file_ = self.__file_at_(startIndex)
|
||||
num_files = self.info.num_files()
|
||||
for i in range(num_files):
|
||||
self.setPriority(i, 0)
|
||||
def file(self, index):
|
||||
file_ = self.__file_at_(index)
|
||||
self.files = {file_.name: file_}
|
||||
#self.handle.set_piece_deadline(self.files[startIndex].startPiece, 50)
|
||||
if startIndex < 0:
|
||||
logging.info('No -file-index specified, downloading will be paused until any file is requested')
|
||||
|
||||
num_files = self.info.num_files()
|
||||
|
||||
for i in range(num_files):
|
||||
if startIndex == i:
|
||||
self.setPriority(i, 1)
|
||||
else:
|
||||
self.setPriority(i, 0)
|
||||
self.setPriority(index, 1)
|
||||
return file_
|
||||
|
||||
def Shutdown(self):
|
||||
self.shuttingDown = True
|
||||
|
@ -462,7 +458,7 @@ def HttpHandlerFactory():
|
|||
|
||||
class Pyrrent2http(object):
|
||||
def __init__(self, uri = '', bindAddress = 'localhost:5001', downloadPath = '.',
|
||||
idleTimeout = -1, fileIndex = -1, keepComplete = False,
|
||||
idleTimeout = -1, keepComplete = False,
|
||||
keepIncomplete = False, keepFiles = False, showAllStats = False,
|
||||
showOverallProgress = False, showFilesProgress = False,
|
||||
showPiecesProgress = False, debugAlerts = False,
|
||||
|
@ -484,7 +480,7 @@ class Pyrrent2http(object):
|
|||
self.config.bindAddress = bindAddress
|
||||
self.config.downloadPath = downloadPath
|
||||
self.config.idleTimeout = idleTimeout
|
||||
self.config.fileIndex = fileIndex
|
||||
#self.config.fileIndex = fileIndex
|
||||
self.config.keepComplete = keepComplete
|
||||
self.config.keepIncomplete = keepIncomplete
|
||||
self.config.keepFiles = keepFiles
|
||||
|
@ -582,9 +578,12 @@ class Pyrrent2http(object):
|
|||
info = self.torrentHandle.get_torrent_info()
|
||||
logging.info('Downloading torrent: %s' % (info.name(),))
|
||||
try:
|
||||
self.TorrentFS = TorrentFS(self, self.torrentHandle, self.config.fileIndex)
|
||||
self.TorrentFS = TorrentFS(self, self.torrentHandle)
|
||||
except Exception as e:
|
||||
logging.error(e.args)
|
||||
#_ = self.TorrentFS.file(self.config.fileIndex)
|
||||
name = self.TorrentFS.info.name()
|
||||
self.torrent_name = name.decode(chardet.detect(name)['encoding'])
|
||||
|
||||
def startHTTP(self):
|
||||
#def http_server_loop(listener, alive):
|
||||
|
@ -720,7 +719,7 @@ class Pyrrent2http(object):
|
|||
tstatus = self.torrentHandle.status()
|
||||
|
||||
status = {
|
||||
'name' : info.name(),
|
||||
'name' : self.torrent_name,
|
||||
'state' : int(tstatus.state),
|
||||
'state_str' : str(tstatus.state),
|
||||
'error' : tstatus.error,
|
||||
|
@ -735,25 +734,25 @@ class Pyrrent2http(object):
|
|||
'total_peers' : tstatus.num_incomplete
|
||||
}
|
||||
return status
|
||||
def Ls(self):
|
||||
retFiles = {'files': []}
|
||||
def Ls(self, index):
|
||||
fi = {}
|
||||
if self.TorrentFS.HasTorrentInfo():
|
||||
x = [n for n in self.TorrentFS.files.keys() if self.TorrentFS.files[n].index == index]
|
||||
name = x[0]
|
||||
files = self.TorrentFS.files
|
||||
for name in files.keys():
|
||||
Url = 'http://' + self.config.bindAddress + '/files/' + urllib.quote(name)
|
||||
fi = {
|
||||
'index': files[name].index,
|
||||
'name': files[name].unicode_name,
|
||||
'media_type': files[name].media_type,
|
||||
'size': files[name].size,
|
||||
'offset': files[name].offset,
|
||||
'download': files[name].downloaded,
|
||||
'progress': files[name].progress,
|
||||
'save_path': files[name].save_path,
|
||||
'url': Url
|
||||
}
|
||||
retFiles['files'].append(fi)
|
||||
return retFiles
|
||||
Url = 'http://' + self.config.bindAddress + '/files/' + urllib.quote(name)
|
||||
fi = {
|
||||
'index': files[name].index,
|
||||
'name': files[name].unicode_name,
|
||||
'media_type': files[name].media_type,
|
||||
'size': files[name].size,
|
||||
'offset': files[name].offset,
|
||||
'download': files[name].downloaded,
|
||||
'progress': files[name].progress,
|
||||
'save_path': files[name].save_path,
|
||||
'url': Url
|
||||
}
|
||||
return fi
|
||||
def Peers(self):
|
||||
peers = {'peers': []}
|
||||
for peer in self.torrentHandle.get_peer_info():
|
||||
|
|
Loading…
Reference in New Issue