Opened 10 years ago

Last modified 3 years ago

#516 new enhancement

Smarter Downloading and Uploading

Reported by: nicotineplus@… Owned by: quinox
Priority: normal Milestone: Release 1.3.0
Component: nicotine Version: 1.2.13
Keywords: download upload duplicate Cc:


I am a new nicotine user. Thanks for the excellent client. This is a request for behavior the standard SoulSeek? client provides.

With the 156c SoulSeek? client(and earlier), when a user clicks to download a file or directory that has already been transferred, the operation completes immediately because the client detects the files are present and no work is required. Rows duplicating the filenames do not appear in the download list. When the same is done in Nicotine+, duplicates appear in the list and the client takes time and bandwidth to transfer files that are already there. When the transfer completes, the existing file is overwritten with a copy of itself.

Similar behavior can be seen in the upload list. Duplicates can appear there as well. When I try to clear only the duplicates, all instances of the duplicated file get cleared instead. I didn't find a way to prevent multiple uploads of a file without stopping the upload entirely.

I encountered the download problem while attempting to retrieve a user's folder with many small files. The user's client limited me to a small subset. When that set was mostly transferred, I repeated the operation expecting that the client would pull down the next subset. Instead, it started downloading the same subset again.

This is a request that:

1 - Nicotine+ checks the target directory for an identical filename of the same size before beginning a download. If it already exists, display it as 100% complete immediately (or do nothing if it's already showing 100%).

2 - If the user requests an entire remote directory, Nicotine+ checks the local target directory and requests only remote files that are not present locally.

3 - Nicotine+ makes similar improvements in the upload process.

Once again, thank you for a superb, multi-platform client.

Change History (2)

comment:1 Changed 10 years ago by quinox

Thanks for your input!

Actually nicotine+ never replaces files; when you have a file "Track 01.mp3" (file1) in your download folder and you're downloading another file called "Track 01.mp3" (file2), upon completion of file2 Nicotine+ will examine the two files. If they are identical (determined by checksum, so it's mathematically likely they are bit-for-bit identical) it will discard file2. If the two files have a different checksum it will store file2 under a different name, "Track 01.mp3.1".

  1. this is a very dangerous thing to do since SLSK has no checksums. We can never know if a file "Track 01.mp3" on the hard drive is the same as the user is sharing, even if it has the same amount of bytes (more discussion about this in #351).
  2. idem
  3. I agree, we shouldn't have duplicate upload entries

If everybody had a small download folder that they used to hold files temporarily we could implement the don't-download-if-already-exists rule, but from what I can tell a lot of people don't separate their download folder from their share folder.

So IMO the only concession we can do is to not queue files if your current view shows you've already downloaded it from that specific user.

comment:2 Changed 3 years ago by gfarmerfr

Milestone: Release 1.2.14Release 1.3.0
Note: See TracTickets for help on using tickets.