aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs')
-rw-r--r--MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs79
1 files changed, 19 insertions, 60 deletions
diff --git a/MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs b/MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs
index f7e0eef48d..dc586cb515 100644
--- a/MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs
+++ b/MediaBrowser.Controller/Providers/Music/LastfmBaseProvider.cs
@@ -1,26 +1,17 @@
-using System.Collections.Generic;
-using System.Net;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Serialization;
using System;
+using System.Collections.Generic;
+using System.Net;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Controller.Providers.Music
{
- class LastfmProviderException : ApplicationException
- {
- public LastfmProviderException(string msg)
- : base(msg)
- {
- }
-
- }
/// <summary>
/// Class MovieDbProvider
/// </summary>
@@ -84,6 +75,14 @@ namespace MediaBrowser.Controller.Providers.Music
/// </summary>
protected string LocalMetaFileName { get; set; }
+ protected virtual bool SaveLocalMeta
+ {
+ get
+ {
+ return ConfigurationManager.Configuration.SaveLocalMeta;
+ }
+ }
+
/// <summary>
/// If we save locally, refresh if they delete something
/// </summary>
@@ -91,7 +90,7 @@ namespace MediaBrowser.Controller.Providers.Music
{
get
{
- return ConfigurationManager.Configuration.SaveLocalMeta;
+ return SaveLocalMeta;
}
}
@@ -173,16 +172,15 @@ namespace MediaBrowser.Controller.Providers.Music
{
if (item.DontFetchMeta) return false;
- if (ConfigurationManager.Configuration.SaveLocalMeta && HasFileSystemStampChanged(item, providerInfo))
+ if (RefreshOnFileSystemStampChange && HasFileSystemStampChanged(item, providerInfo))
{
//If they deleted something from file system, chances are, this item was mis-identified the first time
item.SetProviderId(MetadataProviders.Musicbrainz, null);
Logger.Debug("LastfmProvider reports file system stamp change...");
return true;
-
}
- if (providerInfo.LastRefreshStatus == ProviderRefreshStatus.CompletedWithErrors)
+ if (providerInfo.LastRefreshStatus != ProviderRefreshStatus.Success)
{
Logger.Debug("LastfmProvider for {0} - last attempt had errors. Will try again.", item.Path);
return true;
@@ -194,22 +192,10 @@ namespace MediaBrowser.Controller.Providers.Music
return true;
}
- var downloadDate = providerInfo.LastRefreshed;
-
- if (ConfigurationManager.Configuration.MetadataRefreshDays == -1 && downloadDate != DateTime.MinValue)
- {
- return false;
- }
-
- if (DateTime.Today.Subtract(item.DateCreated).TotalDays > 180 && downloadDate != DateTime.MinValue)
- return false; // don't trigger a refresh data for item that are more than 6 months old and have been refreshed before
-
- if (DateTime.Today.Subtract(downloadDate).TotalDays < ConfigurationManager.Configuration.MetadataRefreshDays) // only refresh every n days
- return false;
-
+ if (DateTime.UtcNow.Subtract(providerInfo.LastRefreshed).TotalDays > ConfigurationManager.Configuration.MetadataRefreshDays) // only refresh every n days
+ return true;
- Logger.Debug("LastfmProvider - " + item.Name + " needs refresh. Download date: " + downloadDate + " item created date: " + item.DateCreated + " Check for Update age: " + ConfigurationManager.Configuration.MetadataRefreshDays);
- return true;
+ return false;
}
/// <summary>
@@ -221,36 +207,9 @@ namespace MediaBrowser.Controller.Providers.Music
/// <returns>Task{System.Boolean}.</returns>
public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
{
- if (item.DontFetchMeta)
- {
- Logger.Info("LastfmProvider - Not fetching because requested to ignore " + item.Name);
- return false;
- }
-
cancellationToken.ThrowIfCancellationRequested();
- BaseProviderInfo providerData;
-
- if (!item.ProviderData.TryGetValue(Id, out providerData))
- {
- providerData = new BaseProviderInfo();
- }
-
- if (!ConfigurationManager.Configuration.SaveLocalMeta || !HasLocalMeta(item) || (force && !HasLocalMeta(item)) || (RefreshOnVersionChange && providerData.ProviderVersion != ProviderVersion))
- {
- try
- {
- await FetchData(item, cancellationToken).ConfigureAwait(false);
- SetLastRefreshed(item, DateTime.UtcNow);
- }
- catch (LastfmProviderException)
- {
- SetLastRefreshed(item, DateTime.UtcNow, ProviderRefreshStatus.CompletedWithErrors);
- }
-
- return true;
- }
- Logger.Debug("LastfmProvider not fetching because local meta exists for " + item.Name);
+ await FetchData(item, cancellationToken).ConfigureAwait(false);
SetLastRefreshed(item, DateTime.UtcNow);
return true;
}