I'm currently working on a app that needs for me to be able to download osu beatmap files using there id, I tried just copying the link to the download aka for me it would behttps://osu.ppy.sh/beatmapsets/1012634/download and then just sending a web request to it and download the response but it didn't quite work it made a 200kb file that's not the beatmap
also I found this GitHub osu! API issues https://github.com/ppy/osu-api/issues/288 saying to add the cookies but I am not sure how to get that to work in c#.
the code i tried:
using System;using System.IO;using System.Net.Http;using System.Threading.Tasks;class Program{ static async Task Main(string[] args) { string downloadUrl = "https://osu.ppy.sh/beatmapsets/1012634/download"; using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(downloadUrl); if (response.IsSuccessStatusCode) { // Read the response content as a byte array byte[] fileBytes = await response.Content.ReadAsByteArrayAsync(); // Save the downloaded file string filePath = @"C:\Users\chead\Downloads\map.osz"; File.WriteAllBytes(filePath, fileBytes); Console.WriteLine($"File downloaded successfully to: {filePath}"); } else { Console.WriteLine($"Failed to download file. Status code: {response.StatusCode}"); } } Console.WriteLine("That's it!"); Console.ReadKey(); }}i tried using the osu! API but it doesn't seem like there is any endpoint for downloading a beatmap
i also tried what Download file using webclientsaid to do but it didn't work
here is the code i tried:
using System;using System.IO;using System.Net;using System.Threading.Tasks;class Program{ static void Main(string[] args) { WebClient wc = new WebClient(); string strFile = Path.Combine(Directory.GetCurrentDirectory(), "downloaded_file.osz"); wc.Credentials = new System.Net.NetworkCredential("me", "pw"); wc.Headers.Add("User-Agent", "my user agent"); wc.DownloadFile("https://osu.ppy.sh/beatmapsets/1012634/download", strFile); Console.WriteLine("That's it!"); Console.ReadKey(); }}i also tried this (it didn't work):
using System.Net;class Program{ static void Main(string[] args) { using (var client = new HttpClient()) { using (var stream = client.GetStreamAsync("https://osu.ppy.sh/beatmapsets/1012634/download")) { using (var FileStream = new FileStream("map.osz", FileMode.OpenOrCreate)) { stream.Result.CopyTo(FileStream); Console.WriteLine($"Code Returned 0, saved to map.osz in the dir"); } } } Console.ReadKey(); }}any help would be greatly appreciated.