def get_torrents(self, view="main"): """Get list of all torrents in specified view @return: list of L{Torrent} instances @rtype: list @todo: add validity check for specified view """ self.torrents = [] methods = rtorrent.torrent.methods retriever_methods = [ m for m in methods if m.is_retriever() and m.is_available(self) ] m = rtorrent.rpc.Multicall(self) m.add("d.multicall", view, "d.get_hash=", *[method.rpc_call + "=" for method in retriever_methods]) results = m.call()[0] # only sent one call, only need first result for result in results: results_dict = {} # build results_dict # result[0] is the info_hash for m, r in zip(retriever_methods, result[1:]): results_dict[m.varname] = rtorrent.rpc.process_result(m, r) self.torrents.append( Torrent(self, info_hash=result[0], **results_dict)) self._manage_torrent_cache() return (self.torrents)
def get_torrents(self, view="main"): """Get list of all torrents in specified view @return: list of L{Torrent} instances @rtype: list @todo: add validity check for specified view """ self.torrents = [] methods = rtorrent.torrent.methods retriever_methods = [ m for m in methods if m.is_retriever() and m.is_available(self) ] m = rtorrent.rpc.Multicall(self) # multicall2 wants .. something .. as its first argument. It accepts a blank string, so let's go with that. MCFirstArg = "" m.add("d.multicall2", MCFirstArg, view, "d.hash=", *[method.rpc_call + "=" for method in retriever_methods]) results = m.call()[0] # only sent one call, only need first result for result in results: results_dict = {} # build results_dict for m, r in zip(retriever_methods, result[1:]): # result[0] is the info_hash results_dict[m.varname] = rtorrent.rpc.process_result(m, r) self.torrents.append( Torrent(self, info_hash=result[0], **results_dict)) self._manage_torrent_cache() return (self.torrents)