A free to use library as a download manager. Includes retry, priority, cancel, etc.. function. Features: • StatusRequest: Calls a Head request and returns a response message with the headers. • SiteRequest: Scans a website for all references. • GetRequest: To download the response into a file. • LoadRequest: Extends GetRequest with chunked download.
$ dotnet add package Shard.DownloadAssistantIntroducing the Download Assistant Library for .Net! 🚀
Looking for a powerful tool to effortlessly manage your download requests? Look no further! 🙌
🔗 Built on top of the Shard.Requests library, our Download Assistant Library is here to handle all your downloads with ease. 💪
With its intuitive classes, this library simplifies the process of downloading your desired files. Perfect for beginners, it offers a seamless user experience and great download capabilities. 💯
Simply create an object and let our assistant take care of the rest! ⚡️
⏳ Worried about failed downloads? Our assistant automatically retries downloads and tries to ensure a successful completion.
✨ Additionally, if the server throttles the connection, our assistant has the capability to download a file in parts, significantly speeding up the download time.
Get started with the Download Assistant Library today and experience the convenience and efficiency it brings to your download workflow. 🌟
Tested with more than 5000 simultaneously HTTP Requests and file sized over 80Gb
IProgress<float>It is available on Github:
You can install Shard.DownloadAssistant using NuGet Package Manager in Visual Studio.
Here are the steps:
Tools > NuGet Package Manager > Manage NuGet Packages for Solution....Shard.DownloadAssistant.Install.Import the Library.
using DownloadAssistant.Requests;
Then create a new LoadRequest.
This downloads a file into the download's folder of the PC with a ".part" file and uses the name that the server provides.
//To download a file and store it in "Downloads" folder
new LoadRequest("[Your URL]"); // e.g. https://www.sample-videos.com/video123/mkv/240/big_buck_bunny_240p_30mb.mkv
To set options on the Request create a RequestOption or for a LoadRequest a LoadRequestOption.
// Create an option for a LoadRequest
LoadRequestOptions requestOptions = new LoadRequestOptions
{
// Sets the filename of the download without the extension
// The extension will be added automatically!
FileName = "downloadfile.*",
// If this download has priority (default is Normal)
Priority = RequestPriority.High,
// Specifies the destination path for the downloaded file
// (default is the download folder)
DestinationPath = @"C:\Users\[Your Username]\Desktop",
// If this request contains a heavy workload, put it in a second thread (default is false)
IsDownload = true,
// Determines whether the downloader should override an existing file, create a new file, or append to an existing file (default is Append)
// Resume function is only available with append mode!
Mode = LoadMode.Create,
// Chunk a file to download faster (3 chunks in this case)
Chunks = 3,
// Merge the chunked files faster while making progress
MergeWhileProgress = true,
// Notify when the request completes successfully
RequestCompleated = (IRequest? req, string? url) => Console.WriteLine($"Finished successfully: {url}")
};
And use it in the request.
//To download a file and store it on the Desktop with a different name
new LoadRequest("https://speed.hetzner.de/100MB.bin",requestOptions);
To wait on the request, use await or Wait();.
await new LoadRequest("https://speed.hetzner.de/100MB.bin",requestOptions).Task;
//new LoadRequest("https://speed.hetzner.de/100MB.bin",requestOptions).Wait();
If you'd like to contribute to this library, submit a pull request or open an issue. We appreciate your help!
DownloadAssistant is licensed under the MIT license.