Beispiel #1
0
        private void RunTask(BeatmapDownloadTask task)
        {
            Log.Verbose("Detect {name} {id} downloading",
                        task.IsBeatmapSet ? "beatmapset" : "beatmap",
                        task.Id);

            IBeatmapInfo beatmapInfo = null;

            try
            {
                Task <IBeatmapInfo> infoTask = task.IsBeatmapSet ?
                                               _beatmapProvider.LookupBySetIdAsync(task.Id) :
                                               _beatmapProvider.LookupByIdAsync(task.Id);

                beatmapInfo = infoTask.Result ?? throw new BeatmapNotFoundException(task.Id);

                DownloadStarted?.Invoke(this, new BeatmapDownloadEventArgs(beatmapInfo));

                var option = new BeatmapDownloadOption();

                if (DownloadProgressChanged != null)
                {
                    option.Progress = new PropagateHandler(this, beatmapInfo);
                }

                var result = _beatmapProvider.DownloadAsync(beatmapInfo, option).Result;

                if (result.Exception != null)
                {
                    throw result.Exception;
                }

                if (File.Exists(_process.MainModule?.FileName))
                {
                    Process.Start(_process.MainModule !.FileName, result.FilePath);
                }

                DownloadCompleted?.Invoke(this, new BeatmapDownloadEventArgs(beatmapInfo));
            }
            catch (Exception e)
            {
                DownloadFailed?.Invoke(this, new BeatmapDownloadFailedEventArgs(beatmapInfo, e));

                var fallbackUrl = task.IsBeatmapSet ?
                                  $"https://osu.ppy.sh/beatmapsets/{task.Id}" :
                                  $"https://osu.ppy.sh/b/{task.Id}";

                Process.Start(fallbackUrl);
            }
        }
Beispiel #2
0
 public Task <BeatmapDownloadResult> DownloadAsync(IBeatmapInfo beatmapInfo, BeatmapDownloadOption option = null)
 {
     throw new NotSupportedException();
 }
        public Task <BeatmapDownloadResult> DownloadAsync(IBeatmapInfo beatmapInfo, BeatmapDownloadOption option = null)
        {
            string url = $"https://bloodcat.com/osu/s/{beatmapInfo.SetId}";

            return(BeatmapDownloadManager.DownloadAsync(url, beatmapInfo, option));
        }
        public Task <BeatmapDownloadResult> DownloadAsync(IBeatmapInfo beatmapInfo, BeatmapDownloadOption option = null)
        {
            var compositeBeatmapInfo = (CompositeBeatmapInfo)beatmapInfo;

            return(compositeBeatmapInfo.Provider.DownloadAsync(compositeBeatmapInfo.Info, option));
        }