Hi everyone,
I discovered nzbget a few days ago and it is pretty close to what I am looking for. I have browsed through the code and it looks fairly well architected.
The first problem I encountered was that I had a lot of broken files. I think this is due to my ISP's news servers disconnecting frequently. It seems to me that nzbget gives up a little too easily in this case, resulting in a broken file. I have a patch that remedies this.
I also added a new feature that I wanted, which is the ability to have multiple servers in each level. My use case for this is that my ISP provides 6 servers that each allow 4 connections. I want to use these as my level 0 servers, since they have good bandwidth and no quotas. Then, in level 1, I want my fill servers, which have less bandwidth, and quota restrictions.
So now I can have 24 threads downloading until an article is not available at level 0, then I can get it from level 1. The implementation of this is not perfect yet. I would like to try all level 0 servers before going to the next levels, but this currently does not happen.
I have been using BNR2 up until now, and I really like the way that it manages the article queue and the servers. I would like to modify nzbget to behave more like BNR2 for downloading, which I think it does optimally. Of course, BNR2 has its quirks in other areas.
I love the client/server feature of nzbget. I think a daemon mode would be useful. I'm really getting used to one-click downloads.
I think it would be cool to integrate par2 handling, so only the minimal required par2 files would be downloaded, and recovery would be automagic. I see that nget does this, and is also written in c++, so I think it is possible to take the nget code and glue it into nzbget.
Anyway, I think I will be doing a bit of work on nzbget over the next few months. I would be keen to share ideas and patches with others. I think that with the "broken file" problem fixed that this could be a release-worthy project. There are also some minor issues, like not failing gracefully if your downloads or temp directories don't exist.
cheers,
kevin