qbittorrent / qBittorrent

qBittorrent BitTorrent client
https://www.qbittorrent.org
Other
27.75k stars 3.92k forks source link

[wishlist]Add ability to put unfinished torrent in upload-only state. #3992

Closed yurikoles closed 6 years ago

yurikoles commented 9 years ago

E.g. read-only, upload-only, whatever you call it. Or just literally '0' downlad speed, which now automatically converts to ininity.

chrishirst commented 8 years ago

Check "do not download" for the files that you know are missing from the payload when you load the task. You could also set a task to not start automatically until you have had the opportunity to check the 'missing' items. Always bearing in mind that "cross file pieces" for 'missing items' in the payload will have to be downloaded before the client can start seeding a partial payload. This is not something that can be made 'automatic', as libtorrent/qbittorrent has no way of 'knowing' that the task your are importing or loading is complete as far as you are concerned, only that it is 'incomplete' as far as the metadata is concerned and it cannot tell whether the omissions/missing parts are deliberate or if the payload has been damaged in some way or another.

yurikoles commented 8 years ago

I don't really understand the difficulties. Client knows hashes of all pieces, so why it can't just seed all full pieces? Simple use-case: full-duplex network. One may prioritize use of download path to some other torrents, or use it in another app. But another path, upload one, may be used at full speed for seeding at the same time.

chrishirst commented 8 years ago

Client knows hashes of all pieces, so why it can't just seed all full pieces?

Because that is not the way that bittorrent protocol clients work, if pieces are missing it WILL have to download them until it the required payload is complete, at which point it can announce itself as a 'seed' Just because a particular file 'works' from your point of view does not necessarily mean it is complete from the metadata aspect, due to 'cross-file pieces. While ever there are pieces missing that are NOT flagged as "not required" the task cannot go into a 'seeding' state and will start downloading the missing pieces, until the required payload is complete or are marked as "not required" by a user action.

Having the client "make a guess" at whether the 'missing' pieces ARE part of the required payload or not is a potential minefield for the future, but most importantly, libtorrent, the protocol engine used in qbittorrent does not have, and most probably will never have is an "ignore missing pieces" setting, that's just not the way the protocol works.

yurikoles commented 8 years ago

I don't mean official announce of client as seed. Just simple upload of data without download.

tgharib commented 8 years ago

+1 for this functionality. Deluge supports it but unfortunately, Deluge doesn't handle 1000+ torrents very well. :(

As @yurikoles said, there's no need to announce that you're a seed. Just upload what you have (or in other words, set the download limit on a torrent to 0).

tgharib commented 8 years ago

Here's a real-world scenario that happens every now and then: you're downloading a 80 gigabyte file and you've downloaded 30 gigabytes. You've decided you don't want the file but you're on a private tracker so you have to maintain a ratio of 1.0. How do you seed the 30 gigabytes you have without downloading any more (you also have a bandwidth cap so downloading the extra 50 gigabytes and then seeding 80 gigabytes would not be ideal)?

tgharib commented 8 years ago

After further investigation (I was going to add the functionality and create a pull request), it appears this feature is already supported by qBitTorrent. Simply select all the files in the content tab of the torrent, and set the priority to "Do not download". qBitTorrent will show the torrent as 0.0% progress and it will show the status as "Seeding". The torrent is now in an upload only state even if none of the files are complete. I've tested it and it does indeed upload data even though the progress is at 0.0%.

yurikoles commented 6 years ago

@tgharib thanks!