[Core] Refactor torrent.set_file_priorities
This commit is contained in:
parent
6083a3078e
commit
4caf05c092
|
@ -477,35 +477,34 @@ class Torrent(object):
|
||||||
"""Sets the file priotities.
|
"""Sets the file priotities.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
file_priorities (list of int): List of file priorities
|
file_priorities (list of int): List of file priorities.
|
||||||
"""
|
"""
|
||||||
if not self.has_metadata:
|
|
||||||
return
|
torrent_fprios = self.handle.file_priorities()
|
||||||
if len(file_priorities) != self.torrent_info.num_files():
|
|
||||||
log.debug('file_priorities len != num_files')
|
|
||||||
self.options['file_priorities'] = self.handle.file_priorities()
|
|
||||||
return
|
|
||||||
|
|
||||||
if log.isEnabledFor(logging.DEBUG):
|
if log.isEnabledFor(logging.DEBUG):
|
||||||
log.debug('Setting %s file priorities to: %s', self.torrent_id, file_priorities)
|
log.debug('Setting %s file priorities to: %s', self.torrent_id, file_priorities)
|
||||||
|
|
||||||
|
if (self.handle.has_metadata() and file_priorities and
|
||||||
|
len(file_priorities) == len(self.get_files())):
|
||||||
self.handle.prioritize_files(file_priorities)
|
self.handle.prioritize_files(file_priorities)
|
||||||
|
else:
|
||||||
|
log.debug('Unable to set new file priorities.')
|
||||||
|
file_priorities = torrent_fprios
|
||||||
|
|
||||||
if 0 in self.options['file_priorities']:
|
if 0 in self.options['file_priorities']:
|
||||||
# We have previously marked a file 'Do Not Download'
|
# Previously marked a file 'Do Not Download' so check if changed any 0's to >0.
|
||||||
# Check to see if we have changed any 0's to >0 and change state accordingly
|
|
||||||
for index, priority in enumerate(self.options['file_priorities']):
|
for index, priority in enumerate(self.options['file_priorities']):
|
||||||
if priority == 0 and file_priorities[index] > 0:
|
if priority == 0 and file_priorities[index] > 0:
|
||||||
# We have a changed 'Do Not Download' to a download priority
|
# Changed 'Do Not Download' to a download priority so update state.
|
||||||
self.is_finished = False
|
self.is_finished = False
|
||||||
self.update_state()
|
self.update_state()
|
||||||
break
|
break
|
||||||
|
|
||||||
# In case values in file_priorities were faulty (old state?)
|
# Ensure stored options are in sync in case file_priorities were faulty (old state?).
|
||||||
# we make sure the stored options are in sync
|
self.options['file_priorities'] = torrent_fprios
|
||||||
self.options['file_priorities'] = self.handle.file_priorities()
|
|
||||||
|
|
||||||
# Set the first/last priorities if needed
|
# Set the first/last priorities if needed.
|
||||||
if self.options['prioritize_first_last_pieces']:
|
if self.options['prioritize_first_last_pieces']:
|
||||||
self.set_prioritize_first_last_pieces(self.options['prioritize_first_last_pieces'])
|
self.set_prioritize_first_last_pieces(self.options['prioritize_first_last_pieces'])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue