Example #1
0
    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))
Example #2
0
    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))
Example #3
0
    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]
Example #5
0
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)
Example #6
0
    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))
Example #8
0
    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))