localstorage upgrage, custome colors, fixed broken files (encoding issues)

This commit is contained in:
ju09279
2024-09-01 01:38:52 +02:00
parent 97521f19e5
commit f4164ccf24
21 changed files with 454 additions and 236 deletions

View File

@@ -90,9 +90,8 @@ app.MapGet("/api/v1/audio/{*fileName}", async (string fileName, HttpContext cont
var decodedFileName = Uri.UnescapeDataString(fileName);
var filePath = Path.Combine(Osudb.osufolder, "Songs", decodedFileName);
if (!System.IO.File.Exists(filePath))
if (!File.Exists(filePath))
{
Console.WriteLine($"Not Found: {filePath}");
return Results.NotFound();
}
@@ -125,11 +124,15 @@ app.MapGet("/api/v1/search/artist", async (string? q, int? limit, int? offset) =
app.MapGet("/api/v1/search/songs", async (string? q, int? limit, int? offset) =>
{
var limitv = limit ?? 100;
var offsetv = offset ?? 0;
return Results.Ok();
});
app.MapGet("/api/v1/search/collections", async (string? q, int? limit, int? offset) =>
{
var limitv = limit ?? 100;
var offsetv = offset ?? 0;
return Results.Ok();
});
@@ -138,10 +141,9 @@ app.MapGet("/api/v1/images/{*filename}", async (string filename, int? h, int? w)
var decodedFileName = Uri.UnescapeDataString(filename);
var filePath = Path.Combine(Osudb.osufolder, "Songs", decodedFileName);
if (!System.IO.File.Exists(filePath))
if (!File.Exists(filePath))
{
Console.WriteLine($"Not Found: {filePath}");
return Results.NotFound();
filePath = "default-bg.png";
}
var fileExtension = Path.GetExtension(filePath).ToLowerInvariant();

View File

@@ -184,22 +184,7 @@ namespace shitweb
{
while (reader.Read())
{
string folder = reader.GetString(reader.GetOrdinal("FolderName"));
string file = reader.GetString(reader.GetOrdinal("FileName"));
string audio = reader.GetString(reader.GetOrdinal("AudioFileName"));
var img = Osudb.getBG(folder, file);
Song song = new Song(
hash: reader.GetString(reader.GetOrdinal("MD5Hash")),
name: reader.GetString(reader.GetOrdinal("Title")),
artist: reader.GetString(reader.GetOrdinal("Artist")),
length: reader.GetInt32(reader.GetOrdinal("TotalTime")),
url: $"{folder}/{audio}",
previewimage: img,
mapper: reader.GetString(reader.GetOrdinal("Creator"))
);
songs.Add(song);
songs.Add(new Song(reader));
}
}
}
@@ -281,23 +266,7 @@ namespace shitweb
{
while (reader.Read())
{
string folder = reader.GetString(reader.GetOrdinal("FolderName"));
string file = reader.GetString(reader.GetOrdinal("FileName"));
string audio = reader.GetString(reader.GetOrdinal("AudioFileName"));
var img = Osudb.getBG(folder, file);
Song song = new Song(
hash: reader.GetString(reader.GetOrdinal("MD5Hash")),
name: reader.GetString(reader.GetOrdinal("Title")),
artist: reader.GetString(reader.GetOrdinal("Artist")),
length: reader.GetInt32(reader.GetOrdinal("TotalTime")),
url: $"{folder}/{audio}",
previewimage: img,
mapper: reader.GetString(reader.GetOrdinal("Creator"))
);
return song;
return new Song(reader);
}
}
}
@@ -336,22 +305,7 @@ namespace shitweb
while (reader.Read()) {
string folder = reader.GetString(reader.GetOrdinal("FolderName"));
string file = reader.GetString(reader.GetOrdinal("FileName"));
string audio = reader.GetString(reader.GetOrdinal("AudioFileName"));
var img = Osudb.getBG(folder, file);
Song song = new Song(
hash: reader.GetString(reader.GetOrdinal("MD5Hash")),
name: reader.GetString(reader.GetOrdinal("Title")),
artist: reader.GetString(reader.GetOrdinal("Artist")),
length: reader.GetInt32(reader.GetOrdinal("TotalTime")),
url: $"{folder}/{audio}",
previewimage: img,
mapper: reader.GetString(reader.GetOrdinal("Creator"))
);
search.Songs.Add(song);
search.Songs.Add(new Song(reader));
}
}
}
@@ -360,6 +314,7 @@ namespace shitweb
Artist
FROM Beatmap
WHERE Artist LIKE @query
OR Title LIKE @query
Group By Artist
LIMIT 5";
@@ -417,22 +372,7 @@ namespace shitweb
while (reader.Read())
{
string folder = reader.GetString(reader.GetOrdinal("FolderName"));
string file = reader.GetString(reader.GetOrdinal("FileName"));
string audio = reader.GetString(reader.GetOrdinal("AudioFileName"));
var img = Osudb.getBG(folder, file);
Song song = new Song(
hash: reader.GetString(reader.GetOrdinal("MD5Hash")),
name: reader.GetString(reader.GetOrdinal("Title")),
artist: reader.GetString(reader.GetOrdinal("Artist")),
length: reader.GetInt32(reader.GetOrdinal("TotalTime")),
url: $"{folder}/{audio}",
previewimage: img,
mapper: reader.GetString(reader.GetOrdinal("Creator"))
);
songs.Add(song);
songs.Add(new Song(reader));
}
}
}

BIN
backend/default-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -144,9 +144,9 @@ public class Osudb
if (match.Success)
{
string background = match.Groups["image_filename"].Value;
string background = Uri.EscapeDataString(match.Groups["image_filename"].Value);
return Path.Combine(songfolder, background);
return Path.Combine(Uri.EscapeDataString(songfolder), background);
}
pattern = @"\d+,\d+,""(?<image_filename>[^""]+\.[a-zA-Z]+)""";
@@ -155,10 +155,10 @@ public class Osudb
if (match.Success)
{
string background = match.Groups["image_filename"].Value;
return Path.Combine(songfolder, background);
string background = Uri.EscapeDataString(match.Groups["image_filename"].Value);
return Path.Combine(Uri.EscapeDataString(songfolder), background);
}
}
return null;
return "default-bg.png";
}
}

View File

@@ -12,4 +12,10 @@
<PackageReference Include="System.Drawing.Common" Version="8.0.8" />
</ItemGroup>
<ItemGroup>
<None Update="default-bg.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -1,6 +1,8 @@
using OsuParsers.Database.Objects;
using OsuParsers.Enums.Database;
using OsuParsers.Enums;
using OsuParsers.Enums;
using System.Data.SQLite;
using System.CodeDom;
public class Song{
public string hash {get; set;}
@@ -15,13 +17,27 @@ public class Song{
this.hash = hash; this.name = name; this.artist = artist; this.length = length; this.url = url; this.previewimage = previewimage; this.mapper = mapper;
}
public Song(SQLiteDataReader reader) {
string folder = reader.GetString(reader.GetOrdinal("FolderName"));
string file = reader.GetString(reader.GetOrdinal("FileName"));
string audio = reader.GetString(reader.GetOrdinal("AudioFileName"));
this.hash = reader.GetString(reader.GetOrdinal("MD5Hash"));
this.name = reader.GetString(reader.GetOrdinal("Title"));
this.artist = reader.GetString(reader.GetOrdinal("Artist"));
this.length = reader.GetInt32(reader.GetOrdinal("TotalTime"));
this.url = Uri.EscapeDataString($"{folder}/{audio}");
this.previewimage = Osudb.getBG(folder, file);
this.mapper = reader.GetString(reader.GetOrdinal("Creator"));
}
}
public class CollectionPreview{
public int index { get; set;}
public string name {get; set;}
public string? name {get; set;}
public int length {get; set;}
public string previewimage {get; set;}
public string? previewimage {get; set;}
private CollectionPreview() { }
@@ -31,9 +47,9 @@ public class CollectionPreview{
}
public class Collection{
public string name {get; set;}
public string? name {get; set;}
public int length {get; set;}
public List<Song> songs { get; set;}
public List<Song> songs { get; set;} = new List<Song>();
private Collection() { }
@@ -50,31 +66,31 @@ public class ActiveSearch{
public class Beatmap
{
public string Artist { get; set; }
public string ArtistUnicode { get; set; }
public string Title { get; set; }
public string TitleUnicode { get; set; }
public string Creator { get; set; }
public string Difficulty { get; set; }
public string AudioFileName { get; set; }
public string MD5Hash { get; set; }
public string FileName { get; set; }
public string? Artist { get; set; }
public string? ArtistUnicode { get; set; }
public string? Title { get; set; }
public string? TitleUnicode { get; set; }
public string? Creator { get; set; }
public string? Difficulty { get; set; }
public string? AudioFileName { get; set; }
public string? MD5Hash { get; set; }
public string? FileName { get; set; }
public RankedStatus RankedStatus { get; set; }
public DateTime LastModifiedTime { get; set; }
public int TotalTime { get; set; }
public int AudioPreviewTime { get; set; }
public int BeatmapId { get; set; }
public int BeatmapSetId { get; set; }
public string Source { get; set; }
public string Tags { get; set; }
public string? Source { get; set; }
public string? Tags { get; set; }
public DateTime LastPlayed { get; set; }
public string FolderName { get; set; }
public string? FolderName { get; set; }
}
public class BeatmapSet {
public int BeatmapSetId { get; set; }
public string FolderName { get; set; }
public string Creator { get; set; }
public string? FolderName { get; set; }
public string? Creator { get; set; }
public DateTime LastModifiedTime { get; set; }
public List<Beatmap> Beatmaps { get; private set; } = new List<Beatmap>();