From f89f7c71a0e628fb734cd6bcb6f77e76ad6aade4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 20 Jun 2016 13:07:02 -0400 Subject: [PATCH] update musicbrainz --- .../Music/MusicBrainzAlbumProvider.cs | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs index 792f92b498..36676c6b20 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs @@ -14,6 +14,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml; +using MediaBrowser.Model.Serialization; namespace MediaBrowser.Providers.Music { @@ -24,14 +25,16 @@ namespace MediaBrowser.Providers.Music private readonly IHttpClient _httpClient; private readonly IApplicationHost _appHost; private readonly ILogger _logger; + private readonly IJsonSerializer _json; public static string MusicBrainzBaseUrl = "https://www.musicbrainz.org"; - public MusicBrainzAlbumProvider(IHttpClient httpClient, IApplicationHost appHost, ILogger logger) + public MusicBrainzAlbumProvider(IHttpClient httpClient, IApplicationHost appHost, ILogger logger, IJsonSerializer json) { _httpClient = httpClient; _appHost = appHost; _logger = logger; + _json = json; Current = this; } @@ -332,33 +335,38 @@ namespace MediaBrowser.Providers.Music private async Task GetMbzUrl() { - if (_mbzUrls == null || (DateTime.UtcNow.Ticks - _lastMbzUrlQueryTicks) > TimeSpan.FromHours(12).Ticks) + if (_chosenUrl == null || _mbzUrls == null || (DateTime.UtcNow.Ticks - _lastMbzUrlQueryTicks) > TimeSpan.FromHours(12).Ticks) { - await RefreshMzbUrls().ConfigureAwait(false); + var urls = await RefreshMzbUrls().ConfigureAwait(false); - var urls = _mbzUrls.ToList(); _chosenUrl = urls[new Random().Next(0, urls.Count - 1)]; } return _chosenUrl; } - private async Task RefreshMzbUrls() + private async Task> RefreshMzbUrls() { + List list; + try { - _mbzUrls = new List + var options = new HttpRequestOptions { - new MbzUrl - { - url = MusicBrainzBaseUrl, - throttleMs = 1000 - } + Url = "https://mb3admin.com/admin/service/standards/musicBrainzUrls", + UserAgent = _appHost.Name + "/" + _appHost.ApplicationVersion }; + + using (var stream = await _httpClient.Get(options).ConfigureAwait(false)) + { + list = _json.DeserializeFromStream>(stream); + } } - catch + catch (Exception ex) { - _mbzUrls = new List + _logger.ErrorException("Error getting music brainz info", ex); + + list = new List { new MbzUrl { @@ -367,6 +375,10 @@ namespace MediaBrowser.Providers.Music } }; } + + _mbzUrls = list.ToList(); + + return list; } ///