mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-27 18:10:54 +01:00
fixes #914 - Add option to save metadata hidden
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user