fixes #914 - Add option to save metadata hidden

This commit is contained in:
Luke Pulverenti
2014-09-06 00:21:23 -04:00
parent 195391aba0
commit 58eb500956
42 changed files with 511 additions and 182 deletions

View File

@@ -7,12 +7,13 @@ using MediaBrowser.Model.Providers;
using MediaBrowser.Providers.Genres;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Providers.FolderImages
{
public class DefaultImageProvider : IRemoteImageProvider
public class DefaultImageProvider : IRemoteImageProvider, IHasChangeMonitor
{
private readonly IHttpClient _httpClient;
@@ -130,5 +131,10 @@ namespace MediaBrowser.Providers.FolderImages
ResourcePool = GenreImageProvider.ImageDownloadResourcePool
});
}
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{
return GetSupportedImages(item).Any(i => !item.HasImage(i));
}
}
}

View File

@@ -216,6 +216,14 @@ namespace MediaBrowser.Providers.Manager
{
await source.CopyToAsync(fs, StreamDefaults.DefaultCopyToBufferSize, cancellationToken).ConfigureAwait(false);
}
if (_config.Configuration.SaveMetadataHidden)
{
file.Refresh();
// Add back the attribute
file.Attributes |= FileAttributes.Hidden;
}
}
finally
{

View File

@@ -501,8 +501,7 @@ namespace MediaBrowser.Providers.MediaInfo
var downloadedLanguages = await new SubtitleDownloader(_logger,
_subtitleManager)
.DownloadSubtitles(video,
currentStreams,
externalSubtitleStreams,
currentStreams.Concat(externalSubtitleStreams).ToList(),
subtitleOptions.SkipIfGraphicalSubtitlesPresent,
subtitleOptions.SkipIfAudioTrackMatches,
subtitleOptions.DownloadLanguages,

View File

@@ -25,8 +25,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
public async Task<List<string>> DownloadSubtitles(Video video,
List<MediaStream> internalMediaStreams,
List<MediaStream> externalSubtitleStreams,
List<MediaStream> mediaStreams,
bool skipIfGraphicalSubtitlesPresent,
bool skipIfAudioTrackMatches,
IEnumerable<string> languages,
@@ -60,7 +59,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
try
{
var downloaded = await DownloadSubtitles(video, internalMediaStreams, externalSubtitleStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfGraphicalSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
.ConfigureAwait(false);
if (downloaded)
@@ -78,8 +77,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
private async Task<bool> DownloadSubtitles(Video video,
List<MediaStream> internalMediaStreams,
IEnumerable<MediaStream> externalSubtitleStreams,
List<MediaStream> mediaStreams,
bool skipIfGraphicalSubtitlesPresent,
bool skipIfAudioTrackMatches,
string language,
@@ -87,12 +85,12 @@ namespace MediaBrowser.Providers.MediaInfo
CancellationToken cancellationToken)
{
// There's already subtitles for this language
if (externalSubtitleStreams.Any(i => string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
if (mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
{
return false;
}
var audioStreams = internalMediaStreams.Where(i => i.Type == MediaStreamType.Audio).ToList();
var audioStreams = mediaStreams.Where(i => i.Type == MediaStreamType.Audio).ToList();
var defaultAudioStreams = audioStreams.Where(i => i.IsDefault).ToList();
// If none are marked as default, just take a guess
@@ -110,7 +108,7 @@ namespace MediaBrowser.Providers.MediaInfo
// There's an internal subtitle stream for this language
if (skipIfGraphicalSubtitlesPresent &&
internalMediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle && !i.IsTextSubtitleStream && string.Equals(i.Language, language, StringComparison.OrdinalIgnoreCase)))
{
return false;
}

View File

@@ -105,14 +105,10 @@ namespace MediaBrowser.Providers.MediaInfo
{
var mediaStreams = video.GetMediaSources(false).First().MediaStreams;
var externalSubtitleStreams = mediaStreams.Where(i => i.Type == MediaStreamType.Subtitle && i.IsExternal).ToList();
var currentStreams = mediaStreams.Except(externalSubtitleStreams).ToList();
var downloadedLanguages = await new SubtitleDownloader(_logger,
_subtitleManager)
.DownloadSubtitles(video,
currentStreams,
externalSubtitleStreams,
mediaStreams,
options.SkipIfGraphicalSubtitlesPresent,
options.SkipIfAudioTrackMatches,
options.DownloadLanguages,