diff --git a/backend/Program.cs b/backend/Program.cs index 2312198..230e6a5 100644 --- a/backend/Program.cs +++ b/backend/Program.cs @@ -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(); diff --git a/backend/SqliteDB.cs b/backend/SqliteDB.cs index 67dd38b..c30dedd 100644 --- a/backend/SqliteDB.cs +++ b/backend/SqliteDB.cs @@ -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)); } } } diff --git a/backend/default-bg.png b/backend/default-bg.png new file mode 100644 index 0000000..2c31f5a Binary files /dev/null and b/backend/default-bg.png differ diff --git a/backend/osudb.cs b/backend/osudb.cs index c6cdfc1..7a453da 100644 --- a/backend/osudb.cs +++ b/backend/osudb.cs @@ -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+,""(?[^""]+\.[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"; } } diff --git a/backend/shitweb.csproj b/backend/shitweb.csproj index 84f95c5..9026d11 100644 --- a/backend/shitweb.csproj +++ b/backend/shitweb.csproj @@ -12,4 +12,10 @@ + + + PreserveNewest + + + diff --git a/backend/types.cs b/backend/types.cs index af8ccb6..424cdb0 100644 --- a/backend/types.cs +++ b/backend/types.cs @@ -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 songs { get; set;} + public List songs { get; set;} = new List(); 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 Beatmaps { get; private set; } = new List(); diff --git a/frontend/public/default-bg.png b/frontend/public/default-bg.png new file mode 100644 index 0000000..2c31f5a Binary files /dev/null and b/frontend/public/default-bg.png differ diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 96f06cd..7ef6981 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -32,11 +32,24 @@ watch(route, async (to) => { }) +function loadColors() { + + document.documentElement.style.setProperty('--background-color', localStorage.getItem('bgColor') || '#1c1719'); + document.documentElement.style.setProperty('--action-color', localStorage.getItem('actionColor') || '#eab308'); + + document.documentElement.style.setProperty('--information-color', localStorage.getItem('infoColor') || '#ec4899'); + document.documentElement.style.setProperty('--border-color', localStorage.getItem('borderColor') || '#ec4899'); + + console.log(localStorage.getItem('bgColor')); +} + +loadColors(); + diff --git a/frontend/src/components/CollectionListItem.vue b/frontend/src/components/CollectionListItem.vue index 0afbaa6..0573115 100644 --- a/frontend/src/components/CollectionListItem.vue +++ b/frontend/src/components/CollectionListItem.vue @@ -5,10 +5,10 @@ import { useUserStore } from '@/stores/userStore'; import { useAudioStore } from '@/stores/audioStore'; const userStore = useUserStore(); const audioStore = useAudioStore(); -const props = defineProps<{ collection: CollectionPreview}>(); +const props = defineProps<{ collection: CollectionPreview }>(); -function hi(){ +function hi() { } @@ -16,11 +16,11 @@ function hi(){