Beispiel #1
0
        private void DownloadBackground(List <BeatSaverSong> beatSaverSongs)
        {
            var Tempfolder = ".\\temp";

            // If the directory doesn't exist, create it.
            if (!Directory.Exists(Tempfolder))
            {
                Directory.CreateDirectory(Tempfolder);
            }

            double updateProgressAmountForeachSong = 0;
            double tempProgress = 0;

            ProgressBar = "0";
            ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));

            if (beatSaverSongs.Any())
            {
                updateProgressAmountForeachSong = 100.0 / beatSaverSongs.Count();
            }

            foreach (var song in beatSaverSongs)
            {
                var filePath = Path.Combine(Tempfolder, Guid.NewGuid().ToString() + ".zip");

                var wc = new WebClient();
                wc.DownloadFile(song.DownloadLink, filePath);

                try
                {
                    ZipFile.ExtractToDirectory(filePath, _config.Value.AvailableSongsFolder);
                }
                catch
                {
                }

                File.Delete(filePath);

                tempProgress += updateProgressAmountForeachSong;

                int holeNumber = (int)tempProgress;

                if (holeNumber > 98)
                {
                    holeNumber = 100;
                }

                ProgressBar = holeNumber.ToString();

                ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));
            }
        }
Beispiel #2
0
        private void DownloadDependencies(string OS)
        {
            var Tempfolder = ".\\temp";

            // If the directory doesn't exist, create it.
            if (!Directory.Exists(Tempfolder))
            {
                Directory.CreateDirectory(Tempfolder);
            }

            var Dependencies = _Dependencies.Value.Dependencie;


            double updateProgressAmountForeachDependencie = 0;
            double tempProgress = 0;

            ProgressBar = "0";
            ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));

            if (Dependencies.Any())
            {
                updateProgressAmountForeachDependencie = 100.0 / Dependencies.Count();
            }

            foreach (var Dependencie in Dependencies)
            {
                var filePath = Path.Combine(Tempfolder, Guid.NewGuid().ToString() + ".zip");

                var wc = new WebClient();
                wc.DownloadProgressChanged += (s, e) =>
                {
                    ProgressBarDependencieUpdatedEvent?.Invoke(this, new ProgressBarDependencieUpdatedEventArgs(e.ProgressPercentage.ToString(), Dependencie.Name));
                };

                wc.DownloadFileCompleted += (s, e) =>
                {
                    try
                    {
                        ZipFile.ExtractToDirectory(filePath, Dependencie.Folder);
                    }
                    catch
                    {
                    }

                    File.Delete(filePath);

                    tempProgress += updateProgressAmountForeachDependencie;

                    int holeNumber = (int)tempProgress;

                    if (holeNumber > 98)
                    {
                        holeNumber = 100;
                    }

                    ProgressBar = holeNumber.ToString();

                    ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));
                };

                if (OS == "Windows")
                {
                    wc.DownloadFileAsync(new Uri(Dependencie.DownloadURLWindows), filePath);
                }
                else if (OS == "Linux")
                {
                    wc.DownloadFileAsync(new Uri(Dependencie.DownloadURLLinux), filePath);
                }
                else if (OS == "OSX")
                {
                    wc.DownloadFileAsync(new Uri(Dependencie.DownloadURLOSX), filePath);
                }

                while (wc.IsBusy)
                {
                }
            }
        }
        public void TransferSongsToQuestSongDir(string[] selectedSongs)
        {
            double updateProgressAmountForeachSong = 0;
            double tempProgress = 0;

            ProgressBar = "0";
            ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));

            if (selectedSongs.Any())
            {
                updateProgressAmountForeachSong = 100.0 / selectedSongs.Count();
            }

            foreach (var song in selectedSongs)
            {
                var songName      = song.ToString();
                var AvailableSong = AvailableSongs.Single(s => s.SongName == song.ToString());
                var isValid       = !string.IsNullOrEmpty(songName) &&
                                    songName.IndexOfAny(Path.GetInvalidFileNameChars()) < 0 &&
                                    !File.Exists(Path.Combine(_config.Value.SongsToLoadFolder, songName));

                if (!isValid)
                {
                    songName = string.Join("", songName.Split(Path.GetInvalidFileNameChars()));
                }
                var destDirName = (_config.Value.SongsToLoadFolder + songName).Trim();
                // Get the subdirectories for the specified directory.
                DirectoryInfo dir = new DirectoryInfo(AvailableSong.SongFolder);

                if (!dir.Exists)
                {
                    throw new DirectoryNotFoundException(
                              "Source directory does not exist or could not be found: "
                              + AvailableSong.SongFolder);
                }
                else if (dir.FullName.Substring(dir.FullName.Length - 1, 1) == " ")
                {
                    Directory.Move(dir.FullName, dir.FullName.TrimEnd());
                }

                DirectoryInfo[] dirs = dir.GetDirectories();
                // If the destination directory doesn't exist, create it.
                if (!Directory.Exists(destDirName))
                {
                    Directory.CreateDirectory(destDirName);
                }

                // Get the files in the directory and copy them to the new location.
                FileInfo[] files = dir.GetFiles();
                foreach (FileInfo file in files)
                {
                    string temppath = Path.Combine(destDirName, file.Name);
                    file.CopyTo(temppath, false);
                }

                tempProgress += updateProgressAmountForeachSong;

                int holeNumber = (int)tempProgress;

                if (holeNumber > 98)
                {
                    holeNumber = 100;
                }

                ProgressBar = holeNumber.ToString();

                ProgressBarUpdatedEvent?.Invoke(this, new ProgressBarUpdatedEventArgs(ProgressBar));
            }
        }