mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-03 07:16:31 +01:00
a few more async optimizations
This commit is contained in:
parent
1c5f728ec2
commit
fbf8cc833c
@@ -23,16 +23,22 @@ namespace MediaBrowser.Controller.Providers
|
||||
get { return MetadataProviderPriority.First; }
|
||||
}
|
||||
|
||||
public async override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
|
||||
public async override Task FetchAsync(BaseEntity item, ItemResolveEventArgs args)
|
||||
{
|
||||
Audio audio = item as Audio;
|
||||
|
||||
Fetch(audio, await FFProbe.Run(audio, GetFFProbeOutputPath(item)).ConfigureAwait(false));
|
||||
}
|
||||
|
||||
private string GetFFProbeOutputPath(BaseEntity item)
|
||||
{
|
||||
string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeAudioCacheDirectory, item.Id.ToString().Substring(0, 1));
|
||||
|
||||
string outputPath = Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
|
||||
|
||||
FFProbeResult data = await FFProbe.Run(audio, outputPath).ConfigureAwait(false);
|
||||
return Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
|
||||
}
|
||||
|
||||
private void Fetch(Audio audio, FFProbeResult data)
|
||||
{
|
||||
MediaStream stream = data.streams.First(s => s.codec_type.Equals("audio", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
string bitrate = null;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace MediaBrowser.Controller.Providers
|
||||
}
|
||||
}
|
||||
|
||||
public abstract Task Fetch(BaseEntity item, ItemResolveEventArgs args);
|
||||
public abstract Task FetchAsync(BaseEntity item, ItemResolveEventArgs args);
|
||||
|
||||
public abstract MetadataProviderPriority Priority { get; }
|
||||
}
|
||||
|
||||
@@ -19,14 +19,16 @@ namespace MediaBrowser.Controller.Providers
|
||||
get { return MetadataProviderPriority.First; }
|
||||
}
|
||||
|
||||
public async override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
|
||||
public override Task FetchAsync(BaseEntity item, ItemResolveEventArgs args)
|
||||
{
|
||||
var metadataFile = args.GetFileSystemEntryByName("folder.xml");
|
||||
|
||||
if (metadataFile.HasValue)
|
||||
{
|
||||
await Task.Run(() => { new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Path); }).ConfigureAwait(false);
|
||||
return Task.Run(() => { new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Path); });
|
||||
}
|
||||
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,24 +21,23 @@ namespace MediaBrowser.Controller.Providers
|
||||
get { return MetadataProviderPriority.First; }
|
||||
}
|
||||
|
||||
public override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
|
||||
public override Task FetchAsync(BaseEntity item, ItemResolveEventArgs args)
|
||||
{
|
||||
return Task.Run(() =>
|
||||
if (args.IsDirectory)
|
||||
{
|
||||
if (args.IsDirectory)
|
||||
{
|
||||
var baseItem = item as BaseItem;
|
||||
var baseItem = item as BaseItem;
|
||||
|
||||
if (baseItem != null)
|
||||
{
|
||||
PopulateImages(baseItem, args);
|
||||
}
|
||||
else
|
||||
{
|
||||
PopulateImages(item, args);
|
||||
}
|
||||
if (baseItem != null)
|
||||
{
|
||||
return Task.Run(() => { PopulateImages(baseItem, args); });
|
||||
}
|
||||
});
|
||||
else
|
||||
{
|
||||
return Task.Run(() => { PopulateImages(item, args); });
|
||||
}
|
||||
}
|
||||
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -49,7 +48,7 @@ namespace MediaBrowser.Controller.Providers
|
||||
for (int i = 0; i < args.FileSystemChildren.Length; i++)
|
||||
{
|
||||
var file = args.FileSystemChildren[i];
|
||||
|
||||
|
||||
string filePath = file.Path;
|
||||
|
||||
string ext = Path.GetExtension(filePath);
|
||||
|
||||
@@ -20,10 +20,8 @@ namespace MediaBrowser.Controller.Providers
|
||||
get { return MetadataProviderPriority.First; }
|
||||
}
|
||||
|
||||
public async override Task Fetch(BaseEntity item, ItemResolveEventArgs args)
|
||||
public async override Task FetchAsync(BaseEntity item, ItemResolveEventArgs args)
|
||||
{
|
||||
BaseItem baseItem = item as BaseItem;
|
||||
|
||||
var trailerPath = args.GetFileSystemEntryByName("trailers", true);
|
||||
|
||||
if (trailerPath.HasValue)
|
||||
@@ -36,9 +34,7 @@ namespace MediaBrowser.Controller.Providers
|
||||
{
|
||||
string file = allFiles[i];
|
||||
|
||||
BaseItem child = await Kernel.Instance.ItemController.GetItem(file).ConfigureAwait(false);
|
||||
|
||||
Video video = child as Video;
|
||||
Video video = await Kernel.Instance.ItemController.GetItem(file).ConfigureAwait(false) as Video;
|
||||
|
||||
if (video != null)
|
||||
{
|
||||
@@ -46,7 +42,7 @@ namespace MediaBrowser.Controller.Providers
|
||||
}
|
||||
}
|
||||
|
||||
baseItem.LocalTrailers = localTrailers;
|
||||
(item as BaseItem).LocalTrailers = localTrailers;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace MediaBrowser.Controller.Providers
|
||||
get { return MetadataProviderPriority.Second; }
|
||||
}
|
||||
|
||||
public override async Task Fetch(BaseEntity item, ItemResolveEventArgs args)
|
||||
public override async Task FetchAsync(BaseEntity item, ItemResolveEventArgs args)
|
||||
{
|
||||
Video video = item as Video;
|
||||
|
||||
@@ -39,11 +39,14 @@ namespace MediaBrowser.Controller.Providers
|
||||
return;
|
||||
}
|
||||
|
||||
Fetch(video, await FFProbe.Run(video, GetFFProbeOutputPath(video)).ConfigureAwait(false));
|
||||
}
|
||||
|
||||
private string GetFFProbeOutputPath(Video item)
|
||||
{
|
||||
string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeVideoCacheDirectory, item.Id.ToString().Substring(0, 1));
|
||||
|
||||
string outputPath = Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
|
||||
|
||||
FFProbeResult data = await FFProbe.Run(video, outputPath).ConfigureAwait(false);
|
||||
return Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
|
||||
}
|
||||
|
||||
private void Fetch(Video video, FFProbeResult data)
|
||||
|
||||
Reference in New Issue
Block a user