From 2070f1c54d7e180cb2c1d61f9849556fc5c50924 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 10 Sep 2014 21:57:11 -0400 Subject: [PATCH] update translations --- .../Providers/IHasChangeMonitor.cs | 12 + .../Providers/MetadataStatus.cs | 2 + .../Configuration/ServerConfiguration.cs | 2 - .../FolderImages/DefaultImageProvider.cs | 4 +- .../Manager/MetadataService.cs | 92 +++++-- .../MediaInfo/AudioImageProvider.cs | 14 +- .../MediaInfo/FFProbeProvider.cs | 14 +- .../MediaInfo/VideoImageProvider.cs | 20 +- .../Photos/PhotoProvider.cs | 14 +- .../TV/TvdbSeriesImageProvider.cs | 6 +- .../Channels/ChannelImageProvider.cs | 12 +- .../Channels/ChannelItemImageProvider.cs | 4 +- .../LiveTv/ChannelImageProvider.cs | 4 +- .../LiveTv/ProgramImageProvider.cs | 4 +- .../LiveTv/RecordingImageProvider.cs | 4 +- .../Localization/JavaScript/ar.json | 3 +- .../Localization/JavaScript/ca.json | 3 +- .../Localization/JavaScript/cs.json | 3 +- .../Localization/JavaScript/da.json | 3 +- .../Localization/JavaScript/de.json | 3 +- .../Localization/JavaScript/el.json | 3 +- .../Localization/JavaScript/en_GB.json | 3 +- .../Localization/JavaScript/en_US.json | 3 +- .../Localization/JavaScript/es.json | 3 +- .../Localization/JavaScript/es_MX.json | 3 +- .../Localization/JavaScript/fr.json | 3 +- .../Localization/JavaScript/he.json | 3 +- .../Localization/JavaScript/it.json | 147 +++++----- .../Localization/JavaScript/javascript.json | 6 +- .../Localization/JavaScript/kk.json | 3 +- .../Localization/JavaScript/ms.json | 3 +- .../Localization/JavaScript/nb.json | 3 +- .../Localization/JavaScript/nl.json | 3 +- .../Localization/JavaScript/pl.json | 3 +- .../Localization/JavaScript/pt_BR.json | 3 +- .../Localization/JavaScript/pt_PT.json | 3 +- .../Localization/JavaScript/ru.json | 7 +- .../Localization/JavaScript/sv.json | 3 +- .../Localization/JavaScript/tr.json | 3 +- .../Localization/JavaScript/vi.json | 3 +- .../Localization/JavaScript/zh_TW.json | 3 +- .../Localization/Server/ar.json | 2 + .../Localization/Server/ca.json | 2 + .../Localization/Server/cs.json | 2 + .../Localization/Server/da.json | 2 + .../Localization/Server/de.json | 2 + .../Localization/Server/el.json | 2 + .../Localization/Server/en_GB.json | 2 + .../Localization/Server/en_US.json | 2 + .../Localization/Server/es.json | 2 + .../Localization/Server/es_MX.json | 2 + .../Localization/Server/fr.json | 2 + .../Localization/Server/he.json | 2 + .../Localization/Server/it.json | 260 +++++++++--------- .../Localization/Server/kk.json | 8 +- .../Localization/Server/ko.json | 2 + .../Localization/Server/ms.json | 2 + .../Localization/Server/nb.json | 2 + .../Localization/Server/nl.json | 12 +- .../Localization/Server/pl.json | 2 + .../Localization/Server/pt_BR.json | 14 +- .../Localization/Server/pt_PT.json | 2 + .../Localization/Server/ru.json | 12 +- .../Localization/Server/sv.json | 2 + .../Localization/Server/tr.json | 2 + .../Localization/Server/vi.json | 2 + .../Localization/Server/zh_TW.json | 2 + .../SqliteMediaStreamsRepository.cs | 43 ++- .../SqliteProviderInfoRepository.cs | 47 +++- .../Imazen.WebP.dll.config | 2 +- .../MediaBrowser.Server.Mono.csproj | 4 + .../ApplicationHost.cs | 10 - .../Api/DashboardService.cs | 2 +- 73 files changed, 564 insertions(+), 329 deletions(-) diff --git a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs index aa0b0e3c97..d914abf618 100644 --- a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs +++ b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs @@ -14,4 +14,16 @@ namespace MediaBrowser.Controller.Providers /// true if the specified item has changed; otherwise, false. bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date); } + + public interface IHasItemChangeMonitor + { + /// + /// Determines whether the specified item has changed. + /// + /// The item. + /// The status. + /// The directory service. + /// true if the specified item has changed; otherwise, false. + bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService); + } } diff --git a/MediaBrowser.Controller/Providers/MetadataStatus.cs b/MediaBrowser.Controller/Providers/MetadataStatus.cs index 1e84e58802..12844c3c4d 100644 --- a/MediaBrowser.Controller/Providers/MetadataStatus.cs +++ b/MediaBrowser.Controller/Providers/MetadataStatus.cs @@ -61,6 +61,8 @@ namespace MediaBrowser.Controller.Providers public List MetadataProvidersRefreshed { get; set; } public List ImageProvidersRefreshed { get; set; } + public DateTime? ItemDateModified { get; set; } + public void AddStatus(ProviderRefreshStatus status, string errorMessage) { if (LastStatus != status) diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index ab618dc5a2..0fdb8f7cc3 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -159,8 +159,6 @@ namespace MediaBrowser.Model.Configuration public bool EnableAutomaticRestart { get; set; } - public TvFileOrganizationOptions TvFileOrganizationOptions { get; set; } - public bool EnableRealtimeMonitor { get; set; } public PathSubstitution[] PathSubstitutions { get; set; } diff --git a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs index aaedc96842..c2e4939e94 100644 --- a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs +++ b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs @@ -13,7 +13,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.FolderImages { - public class DefaultImageProvider : IRemoteImageProvider, IHasChangeMonitor + public class DefaultImageProvider : IRemoteImageProvider, IHasItemChangeMonitor { private readonly IHttpClient _httpClient; @@ -132,7 +132,7 @@ namespace MediaBrowser.Providers.FolderImages }); } - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) + public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService) { return GetSupportedImages(item).Any(i => !item.HasImage(i)); } diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index eee8b59e24..92df1c86e6 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Extensions; +using System.IO; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; @@ -38,8 +39,9 @@ namespace MediaBrowser.Providers.Manager /// /// The item. /// The result. + /// The directory service. /// Task. - protected Task SaveProviderResult(TItemType item, MetadataStatus result) + protected Task SaveProviderResult(TItemType item, MetadataStatus result, IDirectoryService directoryService) { result.ItemId = item.Id; result.ItemName = item.Name; @@ -49,6 +51,23 @@ namespace MediaBrowser.Providers.Manager result.SeriesName = series == null ? null : series.SeriesName; + //var locationType = item.LocationType; + + //if (locationType == LocationType.FileSystem || locationType == LocationType.Offline) + //{ + // if (!string.IsNullOrWhiteSpace(item.Path)) + // { + // var file = directoryService.GetFile(item.Path); + + // if ((file.Attributes & FileAttributes.Directory) != FileAttributes.Directory && file.Exists) + // { + // result.ItemDateModified = FileSystem.GetLastWriteTimeUtc(file); + // } + // } + //} + + result.ItemDateModified = item.DateModified; + return ProviderRepo.SaveMetadataStatus(result, CancellationToken.None); } @@ -106,7 +125,7 @@ namespace MediaBrowser.Providers.Manager // Next run metadata providers if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None) { - var providers = GetProviders(item, refreshResult.DateLastMetadataRefresh.HasValue, refreshOptions) + var providers = GetProviders(item, refreshResult, refreshOptions) .ToList(); if (providers.Count > 0 || !refreshResult.DateLastMetadataRefresh.HasValue) @@ -135,7 +154,7 @@ namespace MediaBrowser.Providers.Manager // Next run remote image providers, but only if local image providers didn't throw an exception if (!localImagesFailed && refreshOptions.ImageRefreshMode != ImageRefreshMode.ValidationOnly) { - var providers = GetNonLocalImageProviders(item, allImageProviders, refreshResult.DateLastImagesRefresh, refreshOptions).ToList(); + var providers = GetNonLocalImageProviders(item, allImageProviders, refreshResult, refreshOptions).ToList(); if (providers.Count > 0) { @@ -161,7 +180,7 @@ namespace MediaBrowser.Providers.Manager if (providersHadChanges || refreshResult.IsDirty) { - await SaveProviderResult(itemOfType, refreshResult).ConfigureAwait(false); + await SaveProviderResult(itemOfType, refreshResult, refreshOptions.DirectoryService).ConfigureAwait(false); } } @@ -188,25 +207,39 @@ namespace MediaBrowser.Providers.Manager /// Gets the providers. /// /// The item. - /// if set to true [has refreshed metadata]. + /// The status. /// The options. /// IEnumerable{`0}. - protected virtual IEnumerable GetProviders(IHasMetadata item, bool hasRefreshedMetadata, MetadataRefreshOptions options) + protected IEnumerable GetProviders(IHasMetadata item, MetadataStatus status, MetadataRefreshOptions options) { // Get providers to refresh var providers = ((ProviderManager)ProviderManager).GetMetadataProviders(item).ToList(); // Run all if either of these flags are true - var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !hasRefreshedMetadata; + var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !status.DateLastMetadataRefresh.HasValue; if (!runAllProviders) { // Avoid implicitly captured closure var currentItem = item; - var providersWithChanges = providers.OfType() - .Where(i => HasChanged(currentItem, i, currentItem.DateLastSaved, options.DirectoryService)) - .Cast>() + var providersWithChanges = providers + .Where(i => + { + var hasChangeMonitor = i as IHasChangeMonitor; + if (hasChangeMonitor != null) + { + return HasChanged(item, hasChangeMonitor, currentItem.DateLastSaved, options.DirectoryService); + } + + var hasFileChangeMonitor = i as IHasItemChangeMonitor; + if (hasFileChangeMonitor != null) + { + return HasChanged(item, hasFileChangeMonitor, status, options.DirectoryService); + } + + return false; + }) .ToList(); if (providersWithChanges.Count == 0) @@ -242,19 +275,33 @@ namespace MediaBrowser.Providers.Manager return providers; } - protected virtual IEnumerable GetNonLocalImageProviders(IHasMetadata item, IEnumerable allImageProviders, DateTime? dateLastImageRefresh, ImageRefreshOptions options) + protected virtual IEnumerable GetNonLocalImageProviders(IHasMetadata item, IEnumerable allImageProviders, MetadataStatus status, ImageRefreshOptions options) { // Get providers to refresh var providers = allImageProviders.Where(i => !(i is ILocalImageProvider)).ToList(); // Run all if either of these flags are true - var runAllProviders = options.ImageRefreshMode == ImageRefreshMode.FullRefresh || !dateLastImageRefresh.HasValue; + var runAllProviders = options.ImageRefreshMode == ImageRefreshMode.FullRefresh || !status.DateLastImagesRefresh.HasValue; if (!runAllProviders) { - providers = providers.OfType() - .Where(i => HasChanged(item, i, dateLastImageRefresh.Value, options.DirectoryService)) - .Cast() + providers = providers + .Where(i => + { + var hasChangeMonitor = i as IHasChangeMonitor; + if (hasChangeMonitor != null) + { + return HasChanged(item, hasChangeMonitor, status.DateLastImagesRefresh.Value, options.DirectoryService); + } + + var hasFileChangeMonitor = i as IHasItemChangeMonitor; + if (hasFileChangeMonitor != null) + { + return HasChanged(item, hasFileChangeMonitor, status, options.DirectoryService); + } + + return false; + }) .ToList(); } @@ -520,6 +567,19 @@ namespace MediaBrowser.Providers.Manager } } + private bool HasChanged(IHasMetadata item, IHasItemChangeMonitor changeMonitor, MetadataStatus status, IDirectoryService directoryService) + { + try + { + return changeMonitor.HasChanged(item, status, directoryService); + } + catch (Exception ex) + { + Logger.ErrorException("Error in {0}.HasChanged", ex, changeMonitor.GetType().Name); + return false; + } + } + private bool HasChanged(IHasMetadata item, IHasChangeMonitor changeMonitor, DateTime date, IDirectoryService directoryService) { try diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index 9188a22814..b0c1b10e4c 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.Providers.MediaInfo /// /// Uses ffmpeg to create video images /// - public class AudioImageProvider : IDynamicImageProvider, IHasChangeMonitor + public class AudioImageProvider : IDynamicImageProvider, IHasItemChangeMonitor { private readonly ConcurrentDictionary _locks = new ConcurrentDictionary(); @@ -135,9 +135,17 @@ namespace MediaBrowser.Providers.MediaInfo return item is Audio; } - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) + public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService) { - return item.DateModified > date; + if (status.ItemDateModified.HasValue) + { + if (status.ItemDateModified.Value != item.DateModified) + { + return true; + } + } + + return false; } } } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs index e3324fe827..cf0c4bbc29 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Providers.MediaInfo ICustomMetadataProvider, ICustomMetadataProvider