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); } }
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)); }