public async Task DownloadVersion(BlenderVersion version, string outputPath) { // var done = false; // double? perc = null; // using(var client = new HttpClientDownloadWithProgress(version.DownloadUrl.ToString(),outputPath)){ // client.ProgressChanged += (totalFileSize, totalBytesDownloaded, progressPercentage) => { // perc = progressPercentage; // Console.WriteLine($"{progressPercentage}% ({totalBytesDownloaded}/{totalFileSize})"); // if(progressPercentage == 100.0){ // done = true; // } // }; // } // while(!done){ // Thread.Sleep(1000); // } var client = new HttpClient(); client.Timeout = TimeSpan.FromHours(2); var response = await client.GetAsync(version.DownloadUrl); await response.Content.ReadAsFileAsync(outputPath, true); Console.WriteLine("Downloaded: " + version.Version); }
private BlenderVersion ParseVersionListItem(IElement el, string os) { /* * <li class="os windows"> * <a href="/download//blender-2.79-cd9ab9d99eb-win64.zip"> * <span class="name"> * Windows 64 bit * <small>November 16, 01:30:14</small> * </span> * <span class="build"> * <span class="build-var master">Master</span> * </span> * <span class="size">127.99MB</span> * </a> * </li> */ var version = new BlenderVersion { OperatingSystem = os }; var downloadUrl = el.QuerySelector("a").Attributes["href"].Value; version.DownloadUrl = new Uri("https://builder.blender.org" + downloadUrl); var dateAndHash = el.QuerySelector("a .name small").TextContent.Split('-', StringSplitOptions.RemoveEmptyEntries); var dateStr = dateAndHash[0].Trim(); version.BuildDate = DateTime.ParseExact(dateStr, "MMMM dd, HH:mm:ss", CultureInfo.InvariantCulture); version.Size = el.QuerySelector("a .size").TextContent; //version.Tag = el.QuerySelector(".build").TextContent; version.Tag = el.QuerySelector(".build-var").TextContent; version.Version = Path.GetFileNameWithoutExtension(downloadUrl); if (version.Version.EndsWith(".tar")) { version.Version = version.Version.Replace(".tar", ""); } if (version.Version.Contains("windows64")) { version.Architecture = "win64"; } else if (version.Version.Contains("win32")) { version.Architecture = "win32"; } else if (version.Version.Contains("x86_64")) { version.Architecture = "x86_64"; } else if (version.Version.Contains("i686")) { version.Architecture = "i686"; } else { version.Architecture = "---"; } return(version); }
static void AddVersionLine(Table table, BlenderVersion version) { var tag = version.Tag == "Alpha" ? $"[red]{version.Tag}[/]" : $"[yellow]{version.Tag}[/]"; table.AddRow(version.OperatingSystem, tag, version.Version.Replace("blender-", ""), version.Architecture, version.Size, version.BuildDate.ToString("yyyy-MM-dd hh:mm")); }