diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/TubeArchivist/TubeArchivistApi.cs b/Jellyfin.Plugin.TubeArchivistMetadata/TubeArchivist/TubeArchivistApi.cs index 18e4672..f9585f3 100644 --- a/Jellyfin.Plugin.TubeArchivistMetadata/TubeArchivist/TubeArchivistApi.cs +++ b/Jellyfin.Plugin.TubeArchivistMetadata/TubeArchivist/TubeArchivistApi.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Data; using System.Net; using System.Net.Http; @@ -201,5 +202,34 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist return response.StatusCode; } + + /// + /// Retrieves the playlists from TubeArchivist. + /// + /// A task. + public async Task?> GetPlaylists() + { + ResponseContainer?>? playlists = null; + + var playlistsEndpoint = "/api/playlist/"; + var url = new Uri(Utils.SanitizeUrl(Plugin.Instance?.Configuration.TubeArchivistUrl + playlistsEndpoint)); + var response = await client.GetAsync(url).ConfigureAwait(true); + while (response.StatusCode == HttpStatusCode.Moved) + { + url = response.Headers.Location; + _logger.LogInformation("{Message}", "Received redirect to: " + url); + response = await client.GetAsync(url).ConfigureAwait(true); + } + + _logger.LogInformation("{Message}", url + ": " + response.StatusCode); + + if (response.IsSuccessStatusCode) + { + string rawData = await response.Content.ReadAsStringAsync().ConfigureAwait(true); + playlists = JsonConvert.DeserializeObject?>>(rawData); + } + + return playlists?.Data; + } } }