diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-21 22:50:59 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-21 22:50:59 -0400 |
| commit | fbf8cc833c441de8890998600be044296acfc783 (patch) | |
| tree | d2980ddcbf5987f805916842f975795d9cabce83 /MediaBrowser.Controller/Providers | |
| parent | 1c5f728ec252f7a146b7e6fa1b409e2ca3f8d920 (diff) | |
a few more async optimizations
Diffstat (limited to 'MediaBrowser.Controller/Providers')
6 files changed, 39 insertions, 33 deletions
diff --git a/MediaBrowser.Controller/Providers/AudioInfoProvider.cs b/MediaBrowser.Controller/Providers/AudioInfoProvider.cs index 85a030ddf..64b397a69 100644 --- a/MediaBrowser.Controller/Providers/AudioInfoProvider.cs +++ b/MediaBrowser.Controller/Providers/AudioInfoProvider.cs @@ -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;
- string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeAudioCacheDirectory, item.Id.ToString().Substring(0, 1));
+ Fetch(audio, await FFProbe.Run(audio, GetFFProbeOutputPath(item)).ConfigureAwait(false));
+ }
- string outputPath = Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
+ private string GetFFProbeOutputPath(BaseEntity item)
+ {
+ string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeAudioCacheDirectory, item.Id.ToString().Substring(0, 1));
- 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;
diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 6222eec5f..5c536913e 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -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; }
}
diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs index cba41f780..2249fb6a5 100644 --- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs +++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs @@ -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);
}
}
}
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs index 2a5e0394c..59b58474f 100644 --- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs +++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs @@ -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;
+
+ if (baseItem != null)
+ {
+ return Task.Run(() => { PopulateImages(baseItem, args); });
+ }
+ else
{
- var baseItem = item as BaseItem;
-
- if (baseItem != null)
- {
- PopulateImages(baseItem, args);
- }
- else
- {
- PopulateImages(item, args);
- }
+ 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);
diff --git a/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs b/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs index c023edb9a..18ca261dc 100644 --- a/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs +++ b/MediaBrowser.Controller/Providers/LocalTrailerProvider.cs @@ -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;
}
}
}
diff --git a/MediaBrowser.Controller/Providers/VideoInfoProvider.cs b/MediaBrowser.Controller/Providers/VideoInfoProvider.cs index 5f88aa1cb..96ca8ed35 100644 --- a/MediaBrowser.Controller/Providers/VideoInfoProvider.cs +++ b/MediaBrowser.Controller/Providers/VideoInfoProvider.cs @@ -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;
}
- string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeVideoCacheDirectory, item.Id.ToString().Substring(0, 1));
+ Fetch(video, await FFProbe.Run(video, GetFFProbeOutputPath(video)).ConfigureAwait(false));
+ }
- string outputPath = Path.Combine(outputDirectory, item.Id + "-" + item.DateModified.Ticks + ".js");
+ private string GetFFProbeOutputPath(Video item)
+ {
+ string outputDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.FFProbeVideoCacheDirectory, item.Id.ToString().Substring(0, 1));
- 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)
|
