def _combine_requests(self):
"""Create single request that combines keys and filters of all subscribers"""
if not self.has_subscribers:
# Don't request anything
log.debug('No subscribers - setting request to None')
self.set_request(None)
else:
kwargs = {}
all_filters = tuple(self._tfilters.values())
if not all_filters or None in all_filters:
# No subscribers or at least one subscriber wants all torrents
kwargs['torrents'] = None
else:
kwargs['torrents'] = reduce(operator.__add__, all_filters)
kwargs['keys'] = reduce(operator.__add__, self._keys.values())
# Filters also need certain keys
for f in all_filters:
if f is not None:
kwargs['keys'] += f.needed_keys
kwargs['keys'] = tuple(set(kwargs['keys']))
kwargs['autoconnect'] = self._autoconnect
log.debug('Combined filters: %s', kwargs['torrents'])
log.debug('Combined keys: %s', kwargs['keys'])
self.set_request(self._api.torrents, **kwargs)
评论列表
文章目录