using System; using IPA; using IPALogger = IPA.Logging.Logger; namespace Setlist { [Plugin(RuntimeOptions.SingleStartInit)] public class Plugin { internal static Plugin Instance { get; private set; } /// /// BSIPA logger (shows in BSIPA console / game logs when verbose). /// internal static IPALogger Log { get; private set; } [Init] public Plugin(IPALogger logger) { Instance = this; Log = logger; } [OnStart] public void OnApplicationStart() { try { var playlists = BeatSaberPlaylistsLib.PlaylistManager.DefaultManager.GetAllPlaylists( includeChildren: true, out AggregateException loadErrors); if (loadErrors != null) { Log.Error(loadErrors.Message); foreach (var inner in loadErrors.InnerExceptions) { Log.Error(inner.ToString()); } } if (playlists == null || playlists.Length == 0) { Log.Info("No playlists loaded (or playlist library not initialized yet)."); return; } foreach (var playlist in playlists) { var hasSyncUrl = false; if (playlist.TryGetCustomData("syncURL", out var syncObj) && syncObj is string url) { hasSyncUrl = !string.IsNullOrWhiteSpace(url); } Log.Info($"Playlist \"{playlist.Title}\": hasSyncUrl={hasSyncUrl}"); } } catch (Exception ex) { Log.Error(ex.ToString()); } } [OnExit] public void OnApplicationQuit() { } } }