aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-28 01:29:27 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-28 01:29:27 -0400
commitb443d591a29bc18daea36a3871908a4c1c277990 (patch)
tree9f671e0484c1b42bd5cecfe58a4d7cc3e7a6ddc7 /MediaBrowser.Controller/Providers
parent90bb3d46c416676105d5cf89d12279b3f7ccb944 (diff)
fixes #200 - MB3 Locking Folders for a long time
Diffstat (limited to 'MediaBrowser.Controller/Providers')
-rw-r--r--MediaBrowser.Controller/Providers/FolderProviderFromXml.cs6
-rw-r--r--MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs59
-rw-r--r--MediaBrowser.Controller/Providers/ImagesByNameProvider.cs62
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs9
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs6
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs6
-rw-r--r--MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs6
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs13
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs6
-rw-r--r--MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs6
11 files changed, 75 insertions, 106 deletions
diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
index 99744390a..641a291ff 100644
--- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
@@ -46,7 +46,7 @@ namespace MediaBrowser.Controller.Providers
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.MetaLocation != null ? item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "folder.xml")) : null;
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
/// <summary>
@@ -73,9 +73,9 @@ namespace MediaBrowser.Controller.Providers
var metadataFile = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "folder.xml"));
- if (metadataFile.HasValue)
+ if (metadataFile != null)
{
- var path = metadataFile.Value.Path;
+ var path = metadataFile.FullName;
await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
index f11ba8f97..2adee6883 100644
--- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
@@ -17,7 +17,8 @@ namespace MediaBrowser.Controller.Providers
/// </summary>
public class ImageFromMediaLocationProvider : BaseMetadataProvider
{
- public ImageFromMediaLocationProvider(ILogManager logManager, IServerConfigurationManager configurationManager) : base(logManager, configurationManager)
+ public ImageFromMediaLocationProvider(ILogManager logManager, IServerConfigurationManager configurationManager)
+ : base(logManager, configurationManager)
{
}
@@ -62,7 +63,7 @@ namespace MediaBrowser.Controller.Providers
public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
-
+
// Make sure current image paths still exist
ValidateImages(item);
@@ -72,7 +73,7 @@ namespace MediaBrowser.Controller.Providers
ValidateBackdrops(item);
cancellationToken.ThrowIfCancellationRequested();
-
+
PopulateBaseItemImages(item);
SetLastRefreshed(item, DateTime.UtcNow);
@@ -95,11 +96,11 @@ namespace MediaBrowser.Controller.Providers
{
var path = item.Images[image];
- return IsInMetaLocation(item, path) && !item.ResolveArgs.GetMetaFileByPath(path).HasValue;
+ return IsInMetaLocation(item, path) && item.ResolveArgs.GetMetaFileByPath(path) == null;
}).ToList();
// Now remove them from the dictionary
- foreach(var key in deletedKeys)
+ foreach (var key in deletedKeys)
{
item.Images.Remove(key);
}
@@ -117,7 +118,7 @@ namespace MediaBrowser.Controller.Providers
}
// Only validate paths from the same directory - need to copy to a list because we are going to potentially modify the collection below
- var deletedImages = item.BackdropImagePaths.Where(path => IsInMetaLocation(item, path) && !item.ResolveArgs.GetMetaFileByPath(path).HasValue).ToList();
+ var deletedImages = item.BackdropImagePaths.Where(path => IsInMetaLocation(item, path) && item.ResolveArgs.GetMetaFileByPath(path) == null).ToList();
// Now remove them from the dictionary
foreach (var path in deletedImages)
@@ -143,7 +144,7 @@ namespace MediaBrowser.Controller.Providers
/// <param name="item">The item.</param>
/// <param name="filenameWithoutExtension">The filename without extension.</param>
/// <returns>System.Nullable{WIN32_FIND_DATA}.</returns>
- protected virtual WIN32_FIND_DATA? GetImage(BaseItem item, string filenameWithoutExtension)
+ protected virtual FileSystemInfo GetImage(BaseItem item, string filenameWithoutExtension)
{
return item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.ResolveArgs.Path, filenameWithoutExtension + ".png")) ?? item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.ResolveArgs.Path, filenameWithoutExtension + ".jpg"));
}
@@ -160,65 +161,65 @@ namespace MediaBrowser.Controller.Providers
// Primary Image
var image = GetImage(item, "folder");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Primary, image.Value.Path);
+ item.SetImage(ImageType.Primary, image.FullName);
}
// Logo Image
image = GetImage(item, "logo");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Logo, image.Value.Path);
+ item.SetImage(ImageType.Logo, image.FullName);
}
// Banner Image
image = GetImage(item, "banner");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Banner, image.Value.Path);
+ item.SetImage(ImageType.Banner, image.FullName);
}
// Clearart
image = GetImage(item, "clearart");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Art, image.Value.Path);
+ item.SetImage(ImageType.Art, image.FullName);
}
// Thumbnail Image
image = GetImage(item, "thumb");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Thumb, image.Value.Path);
+ item.SetImage(ImageType.Thumb, image.FullName);
}
// Thumbnail Image
image = GetImage(item, "box");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Box, image.Value.Path);
+ item.SetImage(ImageType.Box, image.FullName);
}
// Thumbnail Image
image = GetImage(item, "menu");
- if (image.HasValue)
+ if (image != null)
{
- item.SetImage(ImageType.Menu, image.Value.Path);
+ item.SetImage(ImageType.Menu, image.FullName);
}
// Backdrop Image
image = GetImage(item, "backdrop");
- if (image.HasValue)
+ if (image != null)
{
- backdropFiles.Add(image.Value.Path);
+ backdropFiles.Add(image.FullName);
}
var unfound = 0;
@@ -227,9 +228,9 @@ namespace MediaBrowser.Controller.Providers
// Backdrop Image
image = GetImage(item, "backdrop" + i);
- if (image.HasValue)
+ if (image != null)
{
- backdropFiles.Add(image.Value.Path);
+ backdropFiles.Add(image.FullName);
}
else
{
@@ -250,9 +251,9 @@ namespace MediaBrowser.Controller.Providers
// Screenshot Image
image = GetImage(item, "screenshot");
- if (image.HasValue)
+ if (image != null)
{
- screenshotFiles.Add(image.Value.Path);
+ screenshotFiles.Add(image.FullName);
}
unfound = 0;
@@ -261,9 +262,9 @@ namespace MediaBrowser.Controller.Providers
// Screenshot Image
image = GetImage(item, "screenshot" + i);
- if (image.HasValue)
+ if (image != null)
{
- screenshotFiles.Add(image.Value.Path);
+ screenshotFiles.Add(image.FullName);
}
else
{
diff --git a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
index 26ef98463..f4a807a64 100644
--- a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
@@ -88,7 +88,7 @@ namespace MediaBrowser.Controller.Providers
return DateTime.MinValue;
}
- var files = new DirectoryInfo(location).EnumerateFiles("*", SearchOption.TopDirectoryOnly).ToList();
+ var files = new DirectoryInfo(location).EnumerateFiles().ToList();
if (files.Count == 0)
{
@@ -97,8 +97,8 @@ namespace MediaBrowser.Controller.Providers
return files.Select(f =>
{
- var lastWriteTime = GetLastWriteTimeUtc(f);
- var creationTime = GetCreationTimeUtc(f);
+ var lastWriteTime = FileSystem.GetLastWriteTimeUtc(f, Logger);
+ var creationTime = FileSystem.GetCreationTimeUtc(f, Logger);
return creationTime > lastWriteTime ? creationTime : lastWriteTime;
@@ -106,46 +106,6 @@ namespace MediaBrowser.Controller.Providers
}
/// <summary>
- /// Gets the creation time UTC.
- /// </summary>
- /// <param name="info">The info.</param>
- /// <returns>DateTime.</returns>
- private DateTime GetLastWriteTimeUtc(FileSystemInfo info)
- {
- // This could throw an error on some file systems that have dates out of range
-
- try
- {
- return info.LastAccessTimeUtc;
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error determining LastAccessTimeUtc for {0}", ex, info.FullName);
- return DateTime.MinValue;
- }
- }
-
- /// <summary>
- /// Gets the creation time UTC.
- /// </summary>
- /// <param name="info">The info.</param>
- /// <returns>DateTime.</returns>
- private DateTime GetCreationTimeUtc(FileSystemInfo info)
- {
- // This could throw an error on some file systems that have dates out of range
-
- try
- {
- return info.CreationTimeUtc;
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error determining CreationTimeUtc for {0}", ex, info.FullName);
- return DateTime.MinValue;
- }
- }
-
- /// <summary>
/// Fetches metadata and returns true or false indicating if any work that requires persistence was done
/// </summary>
/// <param name="item">The item.</param>
@@ -184,15 +144,21 @@ namespace MediaBrowser.Controller.Providers
/// <param name="item">The item.</param>
/// <param name="filenameWithoutExtension">The filename without extension.</param>
/// <returns>System.Nullable{WIN32_FIND_DATA}.</returns>
- protected override WIN32_FIND_DATA? GetImage(BaseItem item, string filenameWithoutExtension)
+ protected override FileSystemInfo GetImage(BaseItem item, string filenameWithoutExtension)
{
var location = GetLocation(item);
- var result = FileSystem.GetFileData(Path.Combine(location, filenameWithoutExtension + ".png"));
- if (!result.HasValue)
- result = FileSystem.GetFileData(Path.Combine(location, filenameWithoutExtension + ".jpg"));
+ var result = new FileInfo(Path.Combine(location, filenameWithoutExtension + ".png"));
- return result;
+ if (!result.Exists)
+ result = new FileInfo(Path.Combine(location, filenameWithoutExtension + ".jpg"));
+
+ if (result.Exists)
+ {
+ return result;
+ }
+
+ return null;
}
}
}
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
index 1b7266d57..0fb3c853a 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
@@ -255,16 +255,17 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
var startIndex = video.MediaStreams == null ? 0 : video.MediaStreams.Count;
var streams = new List<MediaStream>();
- foreach (var file in fileSystemChildren.Where(f => !f.IsDirectory))
+ foreach (var file in fileSystemChildren.Where(f => !f.Attributes.HasFlag(FileAttributes.Directory)))
{
- var extension = Path.GetExtension(file.Path);
+ var fullName = file.FullName;
+ var extension = Path.GetExtension(fullName);
if (string.Equals(extension, ".srt", StringComparison.OrdinalIgnoreCase))
{
if (video.VideoType == VideoType.VideoFile)
{
// For video files the subtitle filename must match video filename
- if (!string.Equals(Path.GetFileNameWithoutExtension(video.Path), Path.GetFileNameWithoutExtension(file.Path)))
+ if (!string.Equals(Path.GetFileNameWithoutExtension(video.Path), Path.GetFileNameWithoutExtension(fullName)))
{
continue;
}
@@ -275,7 +276,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
Index = startIndex++,
Type = MediaStreamType.Subtitle,
IsExternal = true,
- Path = file.Path,
+ Path = fullName,
Codec = "srt"
});
}
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
index 4529e4890..a86b7c848 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Controller.Providers.Movies
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LOCAL_META_FILE_NAME));
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
/// <summary>
@@ -84,10 +84,10 @@ namespace MediaBrowser.Controller.Providers.Movies
cancellationToken.ThrowIfCancellationRequested();
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LOCAL_META_FILE_NAME));
- if (entry.HasValue)
+ if (entry != null)
{
// read in our saved meta and pass to processing function
- var movieData = JsonSerializer.DeserializeFromFile<CompleteMovieData>(entry.Value.Path);
+ var movieData = JsonSerializer.DeserializeFromFile<CompleteMovieData>(entry.FullName);
cancellationToken.ThrowIfCancellationRequested();
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
index 1ed003e87..40c6feb61 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
@@ -46,7 +46,7 @@ namespace MediaBrowser.Controller.Providers.Movies
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "movie.xml"));
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
/// <summary>
@@ -73,9 +73,9 @@ namespace MediaBrowser.Controller.Providers.Movies
var metadataFile = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "movie.xml"));
- if (metadataFile.HasValue)
+ if (metadataFile != null)
{
- var path = metadataFile.Value.Path;
+ var path = metadataFile.FullName;
var boxset = item as BoxSet;
await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
index 1860f16c2..f1c5d21c5 100644
--- a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
@@ -68,7 +68,7 @@ namespace MediaBrowser.Controller.Providers.Movies
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation,MetaFileName));
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs b/MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs
index ce96cd107..fe64c66b3 100644
--- a/MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Music/MusicArtistProviderFromJson.cs
@@ -35,10 +35,10 @@ namespace MediaBrowser.Controller.Providers.Music
cancellationToken.ThrowIfCancellationRequested();
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LastfmHelper.LocalArtistMetaFileName));
- if (entry.HasValue)
+ if (entry != null)
{
// read in our saved meta and pass to processing function
- var data = JsonSerializer.DeserializeFromFile<LastfmArtist>(entry.Value.Path);
+ var data = JsonSerializer.DeserializeFromFile<LastfmArtist>(entry.FullName);
cancellationToken.ThrowIfCancellationRequested();
@@ -93,7 +93,7 @@ namespace MediaBrowser.Controller.Providers.Music
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, LastfmHelper.LocalArtistMetaFileName));
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
}
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
index b7798309b..7eaf95a08 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
@@ -15,7 +15,8 @@ namespace MediaBrowser.Controller.Providers.TV
/// </summary>
public class EpisodeImageFromMediaLocationProvider : BaseMetadataProvider
{
- public EpisodeImageFromMediaLocationProvider(ILogManager logManager, IServerConfigurationManager configurationManager) : base(logManager, configurationManager)
+ public EpisodeImageFromMediaLocationProvider(ILogManager logManager, IServerConfigurationManager configurationManager)
+ : base(logManager, configurationManager)
{
}
@@ -60,7 +61,7 @@ namespace MediaBrowser.Controller.Providers.TV
public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
-
+
var episode = (Episode)item;
var episodeFileName = Path.GetFileName(episode.Path);
@@ -70,7 +71,7 @@ namespace MediaBrowser.Controller.Providers.TV
ValidateImage(episode, item.MetaLocation);
cancellationToken.ThrowIfCancellationRequested();
-
+
SetPrimaryImagePath(episode, parent, item.MetaLocation, episodeFileName);
SetLastRefreshed(item, DateTime.UtcNow);
@@ -98,7 +99,7 @@ namespace MediaBrowser.Controller.Providers.TV
return;
}
- if (!episode.Parent.ResolveArgs.GetMetaFileByPath(path).HasValue)
+ if (episode.Parent.ResolveArgs.GetMetaFileByPath(path) == null)
{
episode.PrimaryImagePath = null;
}
@@ -122,9 +123,9 @@ namespace MediaBrowser.Controller.Providers.TV
var file = parent.ResolveArgs.GetMetaFileByPath(imageFiles[0]) ??
parent.ResolveArgs.GetMetaFileByPath(imageFiles[1]);
- if (file.HasValue)
+ if (file != null)
{
- item.PrimaryImagePath = file.Value.Path;
+ item.PrimaryImagePath = file.FullName;
}
}
}
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
index e6fb2eb4f..0e7f1e66e 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
@@ -71,12 +71,12 @@ namespace MediaBrowser.Controller.Providers.TV
var file = item.ResolveArgs.Parent.ResolveArgs.GetMetaFileByPath(metadataFile);
- if (!file.HasValue)
+ if (file == null)
{
return base.CompareDate(item);
}
- return file.Value.LastWriteTimeUtc;
+ return file.LastWriteTimeUtc;
}
/// <summary>
@@ -93,7 +93,7 @@ namespace MediaBrowser.Controller.Providers.TV
var file = item.ResolveArgs.Parent.ResolveArgs.GetMetaFileByPath(metadataFile);
- if (!file.HasValue)
+ if (file == null)
{
return false;
}
diff --git a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
index 556ef24c9..786793069 100644
--- a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Controller.Providers.TV
protected override DateTime CompareDate(BaseItem item)
{
var entry = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "series.xml"));
- return entry != null ? entry.Value.LastWriteTimeUtc : DateTime.MinValue;
+ return entry != null ? entry.LastWriteTimeUtc : DateTime.MinValue;
}
/// <summary>
@@ -74,9 +74,9 @@ namespace MediaBrowser.Controller.Providers.TV
var metadataFile = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "series.xml"));
- if (metadataFile.HasValue)
+ if (metadataFile != null)
{
- var path = metadataFile.Value.Path;
+ var path = metadataFile.FullName;
await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);