/// <summary> /// Retrieves the specified playlist. If the playlist doesn't exist, creates one using the default. /// </summary> /// <param name="builtInPlaylist"></param> /// <returns></returns> public static Playlist GetPlaylist(BuiltInPlaylist builtInPlaylist) { Playlist playlist = null; bool playlistExists = AvailablePlaylists.TryGetValue(builtInPlaylist, out playlist); if (!playlistExists || playlist == null) { var defPlaylist = DefaultPlaylists[builtInPlaylist]; var path = FileIO.GetPlaylistFilePath(defPlaylist.FileName); if (string.IsNullOrEmpty(path)) // If GetPlaylistFilePath returned null, the file doesn't exist { //if (AvailablePlaylists[builtInPlaylist] == null) // AvailablePlaylists[builtInPlaylist] = defPlaylist; playlist = defPlaylist; } else { playlist = FileIO.ReadPlaylist(path); playlist.FileName = path; Logger.log?.Debug($"Playlist loaded from file: {playlist.FileName} with {playlist.Songs?.Count ?? 0} songs."); } AvailablePlaylists.Add(builtInPlaylist, playlist); } Logger.log?.Debug($"Returning {playlist?.FileName}: {playlist?.Title} for {builtInPlaylist.ToString()} with {playlist?.Songs?.Count} songs."); return(playlist); }
public static string GetBuiltinPlaylistFilename(BuiltInPlaylist builtInPlaylist) { return(builtInPlaylist switch { BuiltInPlaylist.BeatSyncAll => "BeatSyncPlaylist", BuiltInPlaylist.BeastSaberBookmarks => "BeatSyncBSaberBookmarks", BuiltInPlaylist.BeastSaberFollows => "BeatSyncBSaberFollows", BuiltInPlaylist.BeastSaberCurator => "BeatSyncBSaberCuratorRecommended", BuiltInPlaylist.ScoreSaberTopRanked => "BeatSyncScoreSaberTopRanked", BuiltInPlaylist.ScoreSaberLatestRanked => "BeatSyncScoreSaberLatestRanked", BuiltInPlaylist.ScoreSaberTopPlayed => "BeatSyncScoreSaberTopPlayed", BuiltInPlaylist.ScoreSaberTrending => "BeatSyncScoreSaberTrending", BuiltInPlaylist.BeatSaverFavoriteMappers => "BeatSyncFavoriteMappers", BuiltInPlaylist.BeatSaverLatest => "BeatSyncBeatSaverLatest", BuiltInPlaylist.BeatSaverHot => "BeatSyncBeatSaverHot", BuiltInPlaylist.BeatSaverPlays => "BeatSyncBeatSaverPlays", BuiltInPlaylist.BeatSaverDownloads => "BeatSyncBeatSaverDownloads", BuiltInPlaylist.BeatSaverMapper => throw new ArgumentException("BeatSaverMapper not a supported type for this method", nameof(builtInPlaylist)), BuiltInPlaylist.BeatSyncRecent => "BeatSyncRecent", _ => throw new ArgumentException($"{builtInPlaylist} BuiltInPlaylist type is not supported.") });