mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update built in studio images
This commit is contained in:
parent
8c34f863fb
commit
858be5d788
@ -145,16 +145,13 @@ namespace MediaBrowser.Api.Playback.Hls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExtendPlaylistTimer(string playlist)
|
private async void ExtendPlaylistTimer(string playlist)
|
||||||
{
|
{
|
||||||
ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlist, TranscodingJobType.Hls);
|
ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlist, TranscodingJobType.Hls);
|
||||||
|
|
||||||
Task.Run(async () =>
|
await Task.Delay(20000).ConfigureAwait(false);
|
||||||
{
|
|
||||||
await Task.Delay(20000).ConfigureAwait(false);
|
|
||||||
|
|
||||||
ApiEntryPoint.Instance.OnTranscodeEndRequest(playlist, TranscodingJobType.Hls);
|
ApiEntryPoint.Instance.OnTranscodeEndRequest(playlist, TranscodingJobType.Hls);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1135,6 +1135,11 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
{
|
{
|
||||||
throw new ArgumentNullException();
|
throw new ArgumentNullException();
|
||||||
}
|
}
|
||||||
|
if (IsInMixedFolder != copy.IsInMixedFolder)
|
||||||
|
{
|
||||||
|
Logger.Debug(Name + " changed due to different value for IsInMixedFolder.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
var changed = copy.DateModified != DateModified;
|
var changed = copy.DateModified != DateModified;
|
||||||
if (changed)
|
if (changed)
|
||||||
|
@ -413,6 +413,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
EntityResolutionHelper.EnsureDates(FileSystem, currentChild, child.ResolveArgs, false);
|
EntityResolutionHelper.EnsureDates(FileSystem, currentChild, child.ResolveArgs, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentChild.IsInMixedFolder = child.IsInMixedFolder;
|
||||||
validChildren.Add(new Tuple<BaseItem, bool>(currentChild, true));
|
validChildren.Add(new Tuple<BaseItem, bool>(currentChild, true));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<MonoDevelop.Ide.Workspace ActiveConfiguration="Release Mono" />
|
<MonoDevelop.Ide.Workspace ActiveConfiguration="Release Mono" />
|
||||||
<MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\app.config">
|
<MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\app.config">
|
||||||
<Files>
|
<Files>
|
||||||
<File FileName="MediaBrowser.Server.Mono\app.config" Line="11" Column="68" />
|
<File FileName="MediaBrowser.Server.Mono\app.config" Line="5" Column="20" />
|
||||||
</Files>
|
</Files>
|
||||||
</MonoDevelop.Ide.Workbench>
|
</MonoDevelop.Ide.Workbench>
|
||||||
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||||
|
@ -69,7 +69,7 @@ namespace MediaBrowser.Providers.Studios
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return "3";
|
return "5";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@ Animal Planet
|
|||||||
Animation Domination High-Def
|
Animation Domination High-Def
|
||||||
Anime Network
|
Anime Network
|
||||||
Aniplex
|
Aniplex
|
||||||
Anyone But Me, LLC
|
|
||||||
Artists Den Entertainment
|
Artists Den Entertainment
|
||||||
Asian Crush
|
Asian Crush
|
||||||
Atlantic Records
|
Atlantic Records
|
||||||
@ -164,7 +163,6 @@ Food Network
|
|||||||
FORA.tv
|
FORA.tv
|
||||||
Ford
|
Ford
|
||||||
FOX
|
FOX
|
||||||
Fox Business
|
|
||||||
Fox College Sports
|
Fox College Sports
|
||||||
Fox Movie Channel
|
Fox Movie Channel
|
||||||
Fox News
|
Fox News
|
||||||
|
@ -529,27 +529,26 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.WhenAll(itemsToRefresh.Select(i => Task.Run(async () =>
|
foreach (var item in itemsToRefresh)
|
||||||
{
|
{
|
||||||
Logger.Info(i.Name + " (" + i.Path + ") will be refreshed.");
|
Logger.Info(item.Name + " (" + item.Path + ") will be refreshed.");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await i.ChangedExternally().ConfigureAwait(false);
|
await item.ChangedExternally().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (IOException ex)
|
catch (IOException ex)
|
||||||
{
|
{
|
||||||
// For now swallow and log.
|
// For now swallow and log.
|
||||||
// Research item: If an IOException occurs, the item may be in a disconnected state (media unavailable)
|
// Research item: If an IOException occurs, the item may be in a disconnected state (media unavailable)
|
||||||
// Should we remove it from it's parent?
|
// Should we remove it from it's parent?
|
||||||
Logger.ErrorException("Error refreshing {0}", ex, i.Name);
|
Logger.ErrorException("Error refreshing {0}", ex, item.Name);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.ErrorException("Error refreshing {0}", ex, i.Name);
|
Logger.ErrorException("Error refreshing {0}", ex, item.Name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}))).ConfigureAwait(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -114,6 +114,12 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't misidentify xbmc trailers as a movie
|
||||||
|
if (filename.IndexOf(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) != -1)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,31 +91,31 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
||||||
string.Equals(collectionType, CollectionType.Trailers, StringComparison.OrdinalIgnoreCase))
|
string.Equals(collectionType, CollectionType.Trailers, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return FindMovie<Trailer>(args.Path, args.FileSystemChildren);
|
return FindMovie<Trailer>(args.Path, args.Parent, args.FileSystemChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
||||||
string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
|
string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return FindMovie<MusicVideo>(args.Path, args.FileSystemChildren);
|
return FindMovie<MusicVideo>(args.Path, args.Parent, args.FileSystemChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Path.IndexOf("[adultvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
if (args.Path.IndexOf("[adultvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
|
||||||
string.Equals(collectionType, CollectionType.AdultVideos, StringComparison.OrdinalIgnoreCase))
|
string.Equals(collectionType, CollectionType.AdultVideos, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return FindMovie<AdultVideo>(args.Path, args.FileSystemChildren);
|
return FindMovie<AdultVideo>(args.Path, args.Parent, args.FileSystemChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return FindMovie<Video>(args.Path, args.FileSystemChildren);
|
return FindMovie<Video>(args.Path, args.Parent, args.FileSystemChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(collectionType) ||
|
if (string.IsNullOrEmpty(collectionType) ||
|
||||||
string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase) ||
|
string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase) ||
|
||||||
string.Equals(collectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase))
|
string.Equals(collectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return FindMovie<Movie>(args.Path, args.FileSystemChildren);
|
return FindMovie<Movie>(args.Path, args.Parent, args.FileSystemChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -199,9 +199,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
/// <param name="path">The path.</param>
|
/// <param name="path">The path.</param>
|
||||||
|
/// <param name="parent">The parent.</param>
|
||||||
/// <param name="fileSystemEntries">The file system entries.</param>
|
/// <param name="fileSystemEntries">The file system entries.</param>
|
||||||
/// <returns>Movie.</returns>
|
/// <returns>Movie.</returns>
|
||||||
private T FindMovie<T>(string path, IEnumerable<FileSystemInfo> fileSystemEntries)
|
private T FindMovie<T>(string path, Folder parent, IEnumerable<FileSystemInfo> fileSystemEntries)
|
||||||
where T : Video, new()
|
where T : Video, new()
|
||||||
{
|
{
|
||||||
var movies = new List<T>();
|
var movies = new List<T>();
|
||||||
@ -249,7 +250,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
|||||||
var childArgs = new ItemResolveArgs(_applicationPaths, _libraryManager)
|
var childArgs = new ItemResolveArgs(_applicationPaths, _libraryManager)
|
||||||
{
|
{
|
||||||
FileInfo = child,
|
FileInfo = child,
|
||||||
Path = child.FullName
|
Path = child.FullName,
|
||||||
|
Parent = parent
|
||||||
};
|
};
|
||||||
|
|
||||||
var item = ResolveVideo<T>(childArgs);
|
var item = ResolveVideo<T>(childArgs);
|
||||||
|
@ -172,7 +172,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|||||||
|
|
||||||
var channel = GetInternalChannel(id);
|
var channel = GetInternalChannel(id);
|
||||||
|
|
||||||
return await service.GetRecordingStream(channel.ChannelInfo.Id, cancellationToken).ConfigureAwait(false);
|
return await service.GetChannelStream(channel.ChannelInfo.Id, cancellationToken).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, CancellationToken cancellationToken)
|
private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, CancellationToken cancellationToken)
|
||||||
|
@ -380,35 +380,45 @@ namespace MediaBrowser.Server.Implementations.Providers
|
|||||||
|
|
||||||
var preferredLanguage = item.GetPreferredMetadataLanguage();
|
var preferredLanguage = item.GetPreferredMetadataLanguage();
|
||||||
|
|
||||||
var tasks = providers.Select(i => Task.Run(async () =>
|
var tasks = providers.Select(i => GetImages(item, cancellationToken, i, preferredLanguage, type));
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (type.HasValue)
|
|
||||||
{
|
|
||||||
var result = await i.GetImages(item, type.Value, cancellationToken).ConfigureAwait(false);
|
|
||||||
|
|
||||||
return FilterImages(result, preferredLanguage);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var result = await i.GetAllImages(item, cancellationToken).ConfigureAwait(false);
|
|
||||||
return FilterImages(result, preferredLanguage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.ErrorException("{0} failed in GetImages for type {1}", ex, i.GetType().Name, item.GetType().Name);
|
|
||||||
return new List<RemoteImageInfo>();
|
|
||||||
}
|
|
||||||
|
|
||||||
}, cancellationToken));
|
|
||||||
|
|
||||||
var results = await Task.WhenAll(tasks).ConfigureAwait(false);
|
var results = await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||||
|
|
||||||
return results.SelectMany(i => i);
|
return results.SelectMany(i => i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the images.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item">The item.</param>
|
||||||
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
|
/// <param name="i">The i.</param>
|
||||||
|
/// <param name="preferredLanguage">The preferred language.</param>
|
||||||
|
/// <param name="type">The type.</param>
|
||||||
|
/// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns>
|
||||||
|
private async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken, IImageProvider i, string preferredLanguage, ImageType? type = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (type.HasValue)
|
||||||
|
{
|
||||||
|
var result = await i.GetImages(item, type.Value, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
return FilterImages(result, preferredLanguage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var result = await i.GetAllImages(item, cancellationToken).ConfigureAwait(false);
|
||||||
|
return FilterImages(result, preferredLanguage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.ErrorException("{0} failed in GetImages for type {1}", ex, i.GetType().Name, item.GetType().Name);
|
||||||
|
return new List<RemoteImageInfo>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private IEnumerable<RemoteImageInfo> FilterImages(IEnumerable<RemoteImageInfo> images, string preferredLanguage)
|
private IEnumerable<RemoteImageInfo> FilterImages(IEnumerable<RemoteImageInfo> images, string preferredLanguage)
|
||||||
{
|
{
|
||||||
if (string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(preferredLanguage, "en", StringComparison.OrdinalIgnoreCase))
|
||||||
|
@ -243,7 +243,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
|
|||||||
/// <param name="dataFunction">The function that generates the data to send, if there are any connected clients</param>
|
/// <param name="dataFunction">The function that generates the data to send, if there are any connected clients</param>
|
||||||
public void SendWebSocketMessage<T>(string messageType, Func<T> dataFunction)
|
public void SendWebSocketMessage<T>(string messageType, Func<T> dataFunction)
|
||||||
{
|
{
|
||||||
Task.Run(async () => await SendWebSocketMessageAsync(messageType, dataFunction, CancellationToken.None).ConfigureAwait(false));
|
SendWebSocketMessageAsync(messageType, dataFunction, CancellationToken.None);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -608,7 +608,7 @@ namespace MediaBrowser.Server.Implementations.Session
|
|||||||
_logger.ErrorException("Error in SendServerShutdownNotification.", ex);
|
_logger.ErrorException("Error in SendServerShutdownNotification.", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}));
|
}, cancellationToken));
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
return Task.WhenAll(tasks);
|
||||||
}
|
}
|
||||||
@ -633,7 +633,7 @@ namespace MediaBrowser.Server.Implementations.Session
|
|||||||
_logger.ErrorException("Error in SendServerRestartNotification.", ex);
|
_logger.ErrorException("Error in SendServerRestartNotification.", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}));
|
}, cancellationToken));
|
||||||
|
|
||||||
return Task.WhenAll(tasks);
|
return Task.WhenAll(tasks);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user