public Playlist(JSONNode playlistNode) { string image = playlistNode["image"].Value; if (!string.IsNullOrEmpty(image)) { try { icon = Sprites.Base64ToSprite(image.Substring(image.IndexOf(",") + 1)); } catch { Logger.Exception("Unable to convert playlist image to sprite!"); icon = Sprites.BeastSaberLogo; } } else { icon = Sprites.BeastSaberLogo; } playlistTitle = playlistNode["playlistTitle"]; playlistAuthor = playlistNode["playlistAuthor"]; customDetailUrl = playlistNode["customDetailUrl"]; customArchiveUrl = playlistNode["customArchiveUrl"]; if (!string.IsNullOrEmpty(customDetailUrl)) { if (!customDetailUrl.EndsWith("/")) { customDetailUrl += "/"; } Logger.Log("Found playlist with customDetailUrl! Name: " + playlistTitle + ", CustomDetailUrl: " + customDetailUrl); } if (!string.IsNullOrEmpty(customArchiveUrl) && customArchiveUrl.Contains("[KEY]")) { Logger.Log("Found playlist with customArchiveUrl! Name: " + playlistTitle + ", CustomArchiveUrl: " + customArchiveUrl); } songs = new List <PlaylistSong>(); foreach (JSONNode node in playlistNode["songs"].AsArray) { PlaylistSong song = new PlaylistSong(); song.key = node["key"]; song.songName = node["songName"]; song.hash = node["hash"]; song.levelId = node["levelId"]; songs.Add(song); } if (playlistNode["playlistSongCount"] != null) { playlistSongCount = playlistNode["playlistSongCount"].AsInt; } if (playlistNode["fileLoc"] != null) { fileLoc = playlistNode["fileLoc"]; } if (playlistNode["playlistURL"] != null) { fileLoc = playlistNode["playlistURL"]; } }
/// <summary> /// Init this model. /// </summary> /// <param name="songSelectionMasterView"></param> /// <param name="songListViewController"></param> public void Init() { _settings = SongBrowserSettings.Load(); Logger.Info("Settings loaded, sorting mode is: {0}", _settings.sortMode); }
public static void ReloadPlaylists(bool fullRefresh = true) { try { List <string> playlistFiles = new List <string>(); if (PluginConfig.beatDropInstalled) { string[] beatDropJSONPlaylists = Directory.GetFiles(Path.Combine(PluginConfig.beatDropPlaylistsLocation, "playlists"), "*.json"); string[] beatDropBPLISTPlaylists = Directory.GetFiles(Path.Combine(PluginConfig.beatDropPlaylistsLocation, "playlists"), "*.bplist"); playlistFiles.AddRange(beatDropJSONPlaylists); playlistFiles.AddRange(beatDropBPLISTPlaylists); Logger.Log($"Found {beatDropJSONPlaylists.Length + beatDropBPLISTPlaylists.Length} playlists in BeatDrop folder"); } string[] localJSONPlaylists = Directory.GetFiles(Path.Combine(Environment.CurrentDirectory, "Playlists"), "*.json"); string[] localBPLISTPlaylists = Directory.GetFiles(Path.Combine(Environment.CurrentDirectory, "Playlists"), "*.bplist"); playlistFiles.AddRange(localJSONPlaylists); playlistFiles.AddRange(localBPLISTPlaylists); Logger.Log($"Found {localJSONPlaylists.Length + localBPLISTPlaylists.Length} playlists in Playlists folder"); if (fullRefresh) { loadedPlaylists.Clear(); foreach (string path in playlistFiles) { try { Playlist playlist = Playlist.LoadPlaylist(path); if (Path.GetFileName(path) == "favorites.json" && playlist.playlistTitle == "Your favorite songs") { continue; } loadedPlaylists.Add(playlist); Logger.Log($"Found \"{playlist.playlistTitle}\" by {playlist.playlistAuthor}"); } catch (Exception e) { Logger.Log($"Unable to parse playlist @ {path}! Exception: {e}"); } } } else { foreach (string path in playlistFiles) { if (!loadedPlaylists.Any(x => x.fileLoc == path)) { Logger.Log("Found new playlist! Path: " + path); try { Playlist playlist = Playlist.LoadPlaylist(path); if (Path.GetFileName(path) == "favorites.json" && playlist.playlistTitle == "Your favorite songs") { continue; } loadedPlaylists.Add(playlist); Logger.Log($"Found \"{playlist.playlistTitle}\" by {playlist.playlistAuthor}"); if (SongLoader.AreSongsLoaded) { MatchSongsForPlaylist(playlist); } } catch (Exception e) { Logger.Log($"Unable to parse playlist @ {path}! Exception: {e}"); } } } } } catch (Exception e) { Logger.Exception("Unable to load playlists! Exception: " + e); } }