aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-21 22:50:59 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-21 22:50:59 -0400
commitfbf8cc833c441de8890998600be044296acfc783 (patch)
treed2980ddcbf5987f805916842f975795d9cabce83 /MediaBrowser.Controller/Providers
parent1c5f728ec252f7a146b7e6fa1b409e2ca3f8d920 (diff)
a few more async optimizations
Diffstat (limited to 'MediaBrowser.Controller/Providers')
-rw-r--r--MediaBrowser.Controller/Providers/AudioInfoProvider.cs14
-rw-r--r--MediaBrowser.Controller/Providers/BaseMetadataProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/FolderProviderFromXml.cs6
-rw-r--r--MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs29
-rw-r--r--MediaBrowser.Controller/Providers/LocalTrailerProvider.cs10
-rw-r--r--MediaBrowser.Controller/Providers/VideoInfoProvider.cs11
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)