Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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"));
        }