def on_download_folders_to(self, widget): directories = choose_dir( self.frame.MainWindow, self.frame.np.config.sections["transfers"]["downloaddir"], multichoice=False) if directories is None or directories == []: return destination = directories[0] for i in self.selected_results: user = i[0] folder = i[1].rsplit('\\', 1)[0] if user not in self.frame.np.requested_folders: self.frame.np.requested_folders[user] = {} if folder not in self.frame.np.requested_folders[user]: """ Ensure we don't send folder content requests for a folder more than once, e.g. when several selected resuls belong to the same folder. """ self.frame.np.requested_folders[user][folder] = destination self.frame.np.send_message_to_peer( user, slskmessages.FolderContentsRequest(None, folder))
def OnDownloadFolders(self, widget): for i in self.selected_results: user = i[0] directory = '\\'.join(reversed(i[5].split('\\'))) self.frame.np.ProcessRequestToPeer( user, slskmessages.FolderContentsRequest(None, directory))
def on_download_folders(self, *args, download_location=""): if not self.frame.np.transfers: return if download_location: """ Custom download location specified, remember it when peer sends a folder contents reply """ requested_folders = self.frame.np.transfers.requested_folders else: requested_folders = defaultdict(dict) for i in self.selected_results: user = i[0] folder = i[1].rsplit('\\', 1)[0] if folder in requested_folders[user]: """ Ensure we don't send folder content requests for a folder more than once, e.g. when several selected resuls belong to the same folder. """ continue requested_folders[user][folder] = download_location # First queue the visible search results files = [] for row in self.all_data: # Find the wanted directory if folder != row[12].rsplit('\\', 1)[0]: continue destination = self.frame.np.transfers.get_folder_destination( user, folder) counter, user, flag, immediatedl, h_speed, h_queue, directory, filename, h_size, h_bitrate, h_length, bitrate, fullpath, country, size, speed, queue, length, color = row files.append((user, fullpath, destination, size.get_uint64(), bitrate.get_uint64(), length.get_uint64())) if config.sections["transfers"]["reverseorder"]: files.sort(key=lambda x: x[1], reverse=True) for file in files: user, fullpath, destination, size, bitrate, length = file self.frame.np.transfers.get_file(user, fullpath, destination, size=size, bitrate=bitrate, length=length, checkduplicate=True) # Ask for the rest of the files in the folder self.frame.np.send_message_to_peer( user, slskmessages.FolderContentsRequest(None, folder))
def OnDownloadFolders(self, widget): folders = [] for i in self.selected_results: user = i[0] dir = string.join(i[1].split("\\")[:-1], "\\") if (user, dir) in folders: continue self.frame.np.ProcessRequestToPeer(user, slskmessages.FolderContentsRequest(None, dir)) folders.append((user, dir)) if user not in self.frame.np.requestedFolders: continue if dir in self.frame.np.requestedFolders[user]: del self.frame.np.requestedFolders[user][dir]
def on_soul_seek_uri(url): import urllib.parse try: user, file = urllib.parse.unquote(url[7:]).split("/", 1) if file[-1] == "/": NICOTINE.np.send_message_to_peer( user, slskmessages.FolderContentsRequest( None, file[:-1].replace("/", "\\"))) else: NICOTINE.np.transfers.get_file(user, file.replace("/", "\\"), "") except Exception: log.add(_("Invalid SoulSeek meta-url: %s"), url)
def on_download_folders(self, widget): requested_folders = {} for i in self.selected_results: user = i[0] folder = i[1].rsplit('\\', 1)[0] if user not in requested_folders: requested_folders[user] = [] if folder not in requested_folders[user]: """ Ensure we don't send folder content requests for a folder more than once, e.g. when several selected resuls belong to the same folder. """ self.frame.np.process_request_to_peer(user, slskmessages.FolderContentsRequest(None, folder)) requested_folders[user].append(folder)
def OnDownloadFoldersTo(self, widget): subdir = None folders = [] directories = ChooseDir(self.frame.MainWindow, self.frame.np.config.sections["transfers"]["downloaddir"], create=True, name=subdir) if directories is None or directories == []: return destination = directories[0] for i in self.selected_results: user = i[0] dir = string.join(i[1].split("\\")[:-1], "\\") if (user, dir) in folders: continue folders.append((user, dir)) for tup in folders: user, dir = tup if user not in self.frame.np.requestedFolders: self.frame.np.requestedFolders[user] = {} self.frame.np.requestedFolders[user][dir] = destination self.frame.np.ProcessRequestToPeer(user, slskmessages.FolderContentsRequest(None, dir))
def OnDownloadFoldersTo(self, widget): directories = ChooseDir( self.frame.MainWindow, self.frame.np.config.sections["transfers"]["downloaddir"], multichoice=False) if directories is None or directories == []: return destination = directories[0] for i in self.selected_results: user = i[0] dir = '\\'.join(reversed(i[5].split('\\'))) if user not in self.frame.np.requestedFolders: self.frame.np.requestedFolders[user] = {} self.frame.np.requestedFolders[user][dir] = destination self.frame.np.ProcessRequestToPeer( user, slskmessages.FolderContentsRequest(None, dir))