diff --git a/EnhancedTwitchIntegration/Bot/ChatCommands.cs b/EnhancedTwitchIntegration/Bot/ChatCommands.cs index af4e9e2..f685a74 100644 --- a/EnhancedTwitchIntegration/Bot/ChatCommands.cs +++ b/EnhancedTwitchIntegration/Bot/ChatCommands.cs @@ -196,7 +196,7 @@ private string SongSearchFilter(JSONObject song, bool fast = false, SongFilter f { string songid = song["id"].Value; - if (filter.HasFlag(SongFilter.AutoMAP) && song["metadata"]["automapper"] != null && RequestBotConfig.Instance.Automap == false) return fast ? "X" : $"{song["songName"].Value} ({song["songlength"].Value}) by {song["authorName"].Value} ({song["version"].Value}) is banned due to being automapped!"; ; + if (filter.HasFlag(SongFilter.AutoMAP) && song["automapper"] == true && RequestBotConfig.Instance.Automap == false) return fast ? "X" : $"{song["songName"].Value} ({song["songlength"].Value}) by {song["authorName"].Value} ({song["version"].Value}) is banned due to being automapped!"; ; if (filter.HasFlag(SongFilter.Queue) && RequestQueue.Songs.Any(req => req.song["version"] == song["version"])) return fast ? "X" : $"Request {song["songName"].Value} by {song["authorName"].Value} already exists in queue!"; @@ -270,7 +270,7 @@ private async Task Ban(ParseState state) if (!RequestBotConfig.Instance.OfflineMode) { - var requestUrl = $"https://beatsaver.com/api/maps/detail/{id}"; + var requestUrl = $"https://api.beatsaver.com/maps/id/{id}"; var resp = await Plugin.WebClient.GetAsync(requestUrl, System.Threading.CancellationToken.None); if (resp.IsSuccessStatusCode) @@ -702,7 +702,7 @@ private async Task makelistfromsearch(ParseState state) var id = GetBeatSaverId(state.parameter); - string requestUrl = (id != "") ? $"https://beatsaver.com/api/maps/detail/{normalize.RemoveSymbols(ref state.parameter, normalize._SymbolsNoDash)}" : $"https://beatsaver.com/api/search/text"; + string requestUrl = (id != "") ? $"https://beatsaver.com/api/maps/id/{normalize.RemoveSymbols(ref state.parameter, normalize._SymbolsNoDash)}" : $"https://beatsaver.com/api/search/text"; //if (RequestBotConfig.Instance.OfflineMode) return; @@ -774,7 +774,7 @@ private async Task addsongs(ParseState state) { var id = GetBeatSaverId(state.parameter); - string requestUrl = (id != "") ? $"https://beatsaver.com/api/maps/detail/{normalize.RemoveSymbols(ref state.parameter, normalize._SymbolsNoDash)}" : $"https://beatsaver.com/api/search/text/0?q={state.request}"; + string requestUrl = (id != "") ? $"https://beatsaver.com/api/maps/id/{normalize.RemoveSymbols(ref state.parameter, normalize._SymbolsNoDash)}" : $"https://beatsaver.com/api/search/text/0?q={state.request}"; string errorMessage = ""; @@ -924,7 +924,7 @@ private async Task LookupSongs(ParseState state) if (!RequestBotConfig.Instance.OfflineMode) { - string requestUrl = (id != "") ? $"https://beatsaver.com/api/maps/detail/{id}" : $"https://beatsaver.com/api/search/text/0?q={normalize.NormalizeBeatSaverString(state.parameter)}"; + string requestUrl = (id != "") ? $"https://api.beatsaver.com/maps/id/{id}" : $"https://beatsaver.com/api/search/text/0?q={normalize.NormalizeBeatSaverString(state.parameter)}"; var resp = await Plugin.WebClient.GetAsync(requestUrl, System.Threading.CancellationToken.None); if (resp.IsSuccessStatusCode) @@ -1442,7 +1442,7 @@ public DynamicText AddSong(ref JSONObject song, string prefix = "") Add("StarRating", GetStarRating(ref song)); // Add additional dynamic properties Add("Rating", GetRating(ref song)); - Add("BeatsaverLink", $"https://beatsaver.com/beatmap/{song["id"].Value}"); + Add("BeatsaverLink", $"https://beatsaver.com/maps/{song["id"].Value}"); Add("BeatsaberLink", $"https://bsaber.com/songs/{song["id"].Value}"); return this; } diff --git a/EnhancedTwitchIntegration/Bot/songdatabase.cs b/EnhancedTwitchIntegration/Bot/songdatabase.cs index 79a0f27..ccb8e4e 100644 --- a/EnhancedTwitchIntegration/Bot/songdatabase.cs +++ b/EnhancedTwitchIntegration/Bot/songdatabase.cs @@ -73,21 +73,26 @@ public SongMap(JSONObject song, string LevelId = "", string path = "") { if (!song["version"].IsString) - { + { + var version_nr = song["versions"].Count - 1; //RequestBot.Instance.QueueChatMessage($"{song["key"].Value}: {song["metadata"]}"); if (!song["key"].IsString) { song.Add("id", song["id"]); song.Add("version", song["id"]); - song.Add("hash", song["versions"][0]["hash"]); - song.Add("downloadURL", song["versions"][0]["downloadURL"]); - song.Add("coverURL", song["versions"][0]["coverURL"]); - song.Add("previewURL", song["versions"][0]["previewURL"]); + song.Add("hash", song["versions"][version_nr]["hash"]); + song.Add("downloadURL", song["versions"][version_nr]["downloadURL"]); + song.Add("coverURL", song["versions"][version_nr]["coverURL"]); + song.Add("previewURL", song["versions"][version_nr]["previewURL"]); } else { song.Add("id", song["key"]); song.Add("version", song["key"]); + song.Add("downloadURL", "https://cdn.beatsaver.com/" + song["hash"] + ".zip"); + song.Add("coverURL", "https://cdn.beatsaver.com/" + song["hash"] + ".jpg"); + song.Add("previewURL", "https://cdn.beatsaver.com/" + song["hash"] + ".mp3"); + song.Add("automapper", song["metadata"]["automapper"]); } var metadata = song["metadata"]; song.Add("songName", metadata["songName"].Value); @@ -106,7 +111,7 @@ public SongMap(JSONObject song, string LevelId = "", string path = "") var lenghtlabel = "length"; if (!song["key"].IsString) { - characteristics = song["versions"][0]["diffs"]; + characteristics = song["versions"][version_nr]["diffs"]; lenghtlabel = "seconds"; } diff --git a/EnhancedTwitchIntegration/WebClient.cs b/EnhancedTwitchIntegration/WebClient.cs index 2e28fa6..d0de77d 100644 --- a/EnhancedTwitchIntegration/WebClient.cs +++ b/EnhancedTwitchIntegration/WebClient.cs @@ -76,7 +76,7 @@ internal async Task DownloadImage(string url, CancellationToken token) internal async Task DownloadSong(string url, CancellationToken token, IProgress progress = null) { // check if beatsaver url needs to be pre-pended - if (!url.StartsWith(@"https://cdn.beatsaver.com/")) + if (!url.Contains(@"beatsaver.com/")) { url = $"https://cdn.beatsaver.com/{url}"; }