mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update providers to use core interfaces
This commit is contained in:
parent
872aec9352
commit
099b4d3e5b
@ -70,9 +70,11 @@ namespace MediaBrowser.Providers.ImagesByName
|
|||||||
.Replace("/", string.Empty);
|
.Replace("/", string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<string> GetAvailableImages(string file)
|
public static IEnumerable<string> GetAvailableImages(string file, IFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
using (var reader = new StreamReader(file))
|
using (var fileStream = fileSystem.GetFileStream(file, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
|
||||||
|
{
|
||||||
|
using (var reader = new StreamReader(fileStream))
|
||||||
{
|
{
|
||||||
var lines = new List<string>();
|
var lines = new List<string>();
|
||||||
|
|
||||||
@ -90,4 +92,5 @@ namespace MediaBrowser.Providers.ImagesByName
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,14 +174,14 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var currentFile = new FileInfo(currentPath);
|
var currentFile = _fileSystem.GetFileInfo(currentPath);
|
||||||
|
|
||||||
// This will fail if the file is hidden
|
// This will fail if the file is hidden
|
||||||
if (currentFile.Exists)
|
if (currentFile.Exists)
|
||||||
{
|
{
|
||||||
if ((currentFile.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
|
if (currentFile.IsHidden)
|
||||||
{
|
{
|
||||||
currentFile.Attributes &= ~FileAttributes.Hidden;
|
_fileSystem.SetHidden(currentFile.FullName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
_fileSystem.DeleteFile(currentFile.FullName);
|
_fileSystem.DeleteFile(currentFile.FullName);
|
||||||
@ -256,14 +256,14 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
_fileSystem.CreateDirectory(Path.GetDirectoryName(path));
|
_fileSystem.CreateDirectory(Path.GetDirectoryName(path));
|
||||||
|
|
||||||
// If the file is currently hidden we'll have to remove that or the save will fail
|
// If the file is currently hidden we'll have to remove that or the save will fail
|
||||||
var file = new FileInfo(path);
|
var file = _fileSystem.GetFileInfo(path);
|
||||||
|
|
||||||
// This will fail if the file is hidden
|
// This will fail if the file is hidden
|
||||||
if (file.Exists)
|
if (file.Exists)
|
||||||
{
|
{
|
||||||
if ((file.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
|
if (file.IsHidden)
|
||||||
{
|
{
|
||||||
file.Attributes &= ~FileAttributes.Hidden;
|
_fileSystem.SetHidden(file.FullName, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,10 +275,7 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
|
|
||||||
if (_config.Configuration.SaveMetadataHidden)
|
if (_config.Configuration.SaveMetadataHidden)
|
||||||
{
|
{
|
||||||
file.Refresh();
|
_fileSystem.SetHidden(file.FullName, true);
|
||||||
|
|
||||||
// Add back the attribute
|
|
||||||
file.Attributes |= FileAttributes.Hidden;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -372,14 +372,14 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Delete the source file
|
// Delete the source file
|
||||||
var currentFile = new FileInfo(image.Path);
|
var currentFile = _fileSystem.GetFileInfo(image.Path);
|
||||||
|
|
||||||
// Deletion will fail if the file is hidden so remove the attribute first
|
// Deletion will fail if the file is hidden so remove the attribute first
|
||||||
if (currentFile.Exists)
|
if (currentFile.Exists)
|
||||||
{
|
{
|
||||||
if ((currentFile.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
|
if (currentFile.IsHidden)
|
||||||
{
|
{
|
||||||
currentFile.Attributes &= ~FileAttributes.Hidden;
|
_fileSystem.SetHidden(currentFile.FullName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
_fileSystem.DeleteFile(currentFile.FullName);
|
_fileSystem.DeleteFile(currentFile.FullName);
|
||||||
@ -613,7 +613,7 @@ namespace MediaBrowser.Providers.Manager
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (item.GetImages(imageType).Any(i => new FileInfo(i.Path).Length == response.ContentLength.Value))
|
if (item.GetImages(imageType).Any(i => _fileSystem.GetFileInfo(i.Path).Length == response.ContentLength.Value))
|
||||||
{
|
{
|
||||||
response.Content.Dispose();
|
response.Content.Dispose();
|
||||||
continue;
|
continue;
|
||||||
|
@ -87,11 +87,11 @@ namespace MediaBrowser.Providers.MediaInfo
|
|||||||
|
|
||||||
var tempFile = await _mediaEncoder.ExtractAudioImage(item.Path, imageStreamIndex, cancellationToken).ConfigureAwait(false);
|
var tempFile = await _mediaEncoder.ExtractAudioImage(item.Path, imageStreamIndex, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
File.Copy(tempFile, path, true);
|
_fileSystem.CopyFile(tempFile, path, true);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File.Delete(tempFile);
|
_fileSystem.DeleteFile(tempFile);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ namespace MediaBrowser.Providers.Movies
|
|||||||
{
|
{
|
||||||
// No biggie. Don't blow up
|
// No biggie. Don't blow up
|
||||||
}
|
}
|
||||||
catch (DirectoryNotFoundException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
// No biggie. Don't blow up
|
// No biggie. Don't blow up
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
namespace MediaBrowser.Providers.Movies
|
namespace MediaBrowser.Providers.Movies
|
||||||
{
|
{
|
||||||
@ -21,11 +22,13 @@ namespace MediaBrowser.Providers.Movies
|
|||||||
{
|
{
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
private readonly IJsonSerializer _jsonSerializer;
|
||||||
private readonly IHttpClient _httpClient;
|
private readonly IHttpClient _httpClient;
|
||||||
|
private readonly IFileSystem _fileSystem;
|
||||||
|
|
||||||
public MovieDbImageProvider(IJsonSerializer jsonSerializer, IHttpClient httpClient)
|
public MovieDbImageProvider(IJsonSerializer jsonSerializer, IHttpClient httpClient, IFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
_jsonSerializer = jsonSerializer;
|
_jsonSerializer = jsonSerializer;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
@ -196,7 +199,7 @@ namespace MediaBrowser.Providers.Movies
|
|||||||
|
|
||||||
if (!string.IsNullOrEmpty(path))
|
if (!string.IsNullOrEmpty(path))
|
||||||
{
|
{
|
||||||
var fileInfo = new FileInfo(path);
|
var fileInfo = _fileSystem.GetFileInfo(path);
|
||||||
|
|
||||||
if (fileInfo.Exists)
|
if (fileInfo.Exists)
|
||||||
{
|
{
|
||||||
|
@ -82,7 +82,7 @@ namespace MediaBrowser.Providers.People
|
|||||||
};
|
};
|
||||||
|
|
||||||
result.SetProviderId(MetadataProviders.Tmdb, info.id.ToString(_usCulture));
|
result.SetProviderId(MetadataProviders.Tmdb, info.id.ToString(_usCulture));
|
||||||
result.SetProviderId(MetadataProviders.Imdb, info.imdb_id.ToString(_usCulture));
|
result.SetProviderId(MetadataProviders.Imdb, info.imdb_id);
|
||||||
|
|
||||||
return new[] { result };
|
return new[] { result };
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ using System.Text;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using MediaBrowser.Model.Xml;
|
||||||
|
|
||||||
namespace MediaBrowser.Providers.People
|
namespace MediaBrowser.Providers.People
|
||||||
{
|
{
|
||||||
@ -23,12 +25,16 @@ namespace MediaBrowser.Providers.People
|
|||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
private readonly IHttpClient _httpClient;
|
private readonly IHttpClient _httpClient;
|
||||||
|
private readonly IFileSystem _fileSystem;
|
||||||
|
private readonly IXmlReaderSettingsFactory _xmlSettings;
|
||||||
|
|
||||||
public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager libraryManager, IHttpClient httpClient)
|
public TvdbPersonImageProvider(IServerConfigurationManager config, ILibraryManager libraryManager, IHttpClient httpClient, IFileSystem fileSystem, IXmlReaderSettingsFactory xmlSettings)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
_httpClient = httpClient;
|
_httpClient = httpClient;
|
||||||
|
_fileSystem = fileSystem;
|
||||||
|
_xmlSettings = xmlSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
@ -89,7 +95,7 @@ namespace MediaBrowser.Providers.People
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
catch (DirectoryNotFoundException)
|
catch (IOException)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -97,15 +103,15 @@ namespace MediaBrowser.Providers.People
|
|||||||
|
|
||||||
private RemoteImageInfo GetImageInfo(string xmlFile, string personName, CancellationToken cancellationToken)
|
private RemoteImageInfo GetImageInfo(string xmlFile, string personName, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var settings = new XmlReaderSettings
|
var settings = _xmlSettings.Create(false);
|
||||||
{
|
|
||||||
CheckCharacters = false,
|
|
||||||
IgnoreProcessingInstructions = true,
|
|
||||||
IgnoreComments = true,
|
|
||||||
ValidationType = ValidationType.None
|
|
||||||
};
|
|
||||||
|
|
||||||
using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8))
|
settings.CheckCharacters = false;
|
||||||
|
settings.IgnoreProcessingInstructions = true;
|
||||||
|
settings.IgnoreComments = true;
|
||||||
|
|
||||||
|
using (var fileStream = _fileSystem.GetFileStream(xmlFile, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
|
||||||
|
{
|
||||||
|
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
|
||||||
{
|
{
|
||||||
// Use XmlReader for best performance
|
// Use XmlReader for best performance
|
||||||
using (var reader = XmlReader.Create(streamReader, settings))
|
using (var reader = XmlReader.Create(streamReader, settings))
|
||||||
@ -142,6 +148,7 @@ namespace MediaBrowser.Providers.People
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -35,12 +35,12 @@ namespace MediaBrowser.Providers.TV
|
|||||||
private readonly IZipClient _zipClient;
|
private readonly IZipClient _zipClient;
|
||||||
private readonly IHttpClient _httpClient;
|
private readonly IHttpClient _httpClient;
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
|
private readonly IXmlReaderSettingsFactory _xmlSettings;
|
||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
private readonly IMemoryStreamProvider _memoryStreamProvider;
|
private readonly IMemoryStreamProvider _memoryStreamProvider;
|
||||||
private readonly IXmlReaderSettingsFactory _xmlSettings;
|
|
||||||
private readonly ILocalizationManager _localizationManager;
|
private readonly ILocalizationManager _localizationManager;
|
||||||
|
|
||||||
public TvdbSeriesProvider(IZipClient zipClient, IHttpClient httpClient, IFileSystem fileSystem, IServerConfigurationManager config, ILogger logger, ILibraryManager libraryManager, IMemoryStreamProvider memoryStreamProvider, IXmlReaderSettingsFactory xmlSettings, ILocalizationManager localizationManager)
|
public TvdbSeriesProvider(IZipClient zipClient, IHttpClient httpClient, IFileSystem fileSystem, IServerConfigurationManager config, ILogger logger, ILibraryManager libraryManager, IMemoryStreamProvider memoryStreamProvider, IXmlReaderSettingsFactory xmlSettings, ILocalizationManager localizationManager)
|
||||||
@ -512,9 +512,11 @@ namespace MediaBrowser.Providers.TV
|
|||||||
private async Task<IEnumerable<RemoteSearchResult>> FindSeriesInternal(string name, string language, CancellationToken cancellationToken)
|
private async Task<IEnumerable<RemoteSearchResult>> FindSeriesInternal(string name, string language, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var url = string.Format(SeriesSearchUrl, WebUtility.UrlEncode(name), NormalizeLanguage(language));
|
var url = string.Format(SeriesSearchUrl, WebUtility.UrlEncode(name), NormalizeLanguage(language));
|
||||||
var doc = new XmlDocument();
|
var searchResults = new List<RemoteSearchResult>();
|
||||||
|
|
||||||
using (var results = await _httpClient.Get(new HttpRequestOptions
|
var comparableName = GetComparableName(name);
|
||||||
|
|
||||||
|
using (var stream = await _httpClient.Get(new HttpRequestOptions
|
||||||
{
|
{
|
||||||
Url = url,
|
Url = url,
|
||||||
ResourcePool = TvDbResourcePool,
|
ResourcePool = TvDbResourcePool,
|
||||||
@ -522,89 +524,47 @@ namespace MediaBrowser.Providers.TV
|
|||||||
|
|
||||||
}).ConfigureAwait(false))
|
}).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
doc.Load(results);
|
var settings = _xmlSettings.Create(false);
|
||||||
}
|
|
||||||
|
|
||||||
var searchResults = new List<RemoteSearchResult>();
|
settings.CheckCharacters = false;
|
||||||
|
settings.IgnoreProcessingInstructions = true;
|
||||||
|
settings.IgnoreComments = true;
|
||||||
|
|
||||||
if (doc.HasChildNodes)
|
using (var streamReader = new StreamReader(stream, Encoding.UTF8))
|
||||||
{
|
{
|
||||||
var nodes = doc.SelectNodes("//Series");
|
// Use XmlReader for best performance
|
||||||
var comparableName = GetComparableName(name);
|
using (var reader = XmlReader.Create(streamReader, settings))
|
||||||
if (nodes != null)
|
|
||||||
{
|
{
|
||||||
foreach (XmlNode node in nodes)
|
reader.MoveToContent();
|
||||||
{
|
|
||||||
var searchResult = new RemoteSearchResult
|
|
||||||
{
|
|
||||||
SearchProviderName = Name
|
|
||||||
};
|
|
||||||
|
|
||||||
var titles = new List<string>();
|
// Loop through each element
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
cancellationToken.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
var nameNode = node.SelectSingleNode("./SeriesName");
|
if (reader.NodeType == XmlNodeType.Element)
|
||||||
if (nameNode != null)
|
|
||||||
{
|
{
|
||||||
titles.Add(GetComparableName(nameNode.InnerText));
|
switch (reader.Name)
|
||||||
}
|
|
||||||
|
|
||||||
var aliasNode = node.SelectSingleNode("./AliasNames");
|
|
||||||
if (aliasNode != null)
|
|
||||||
{
|
{
|
||||||
var alias = aliasNode.InnerText.Split('|').Select(GetComparableName);
|
case "Series":
|
||||||
titles.AddRange(alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
var imdbIdNode = node.SelectSingleNode("./IMDB_ID");
|
|
||||||
if (imdbIdNode != null)
|
|
||||||
{
|
{
|
||||||
var val = imdbIdNode.InnerText;
|
using (var subtree = reader.ReadSubtree())
|
||||||
if (!string.IsNullOrWhiteSpace(val))
|
|
||||||
{
|
{
|
||||||
searchResult.SetProviderId(MetadataProviders.Imdb, val);
|
var searchResult = GetSeriesSearchResultFromSubTree(subtree, comparableName);
|
||||||
}
|
if (searchResult != null)
|
||||||
}
|
|
||||||
|
|
||||||
var bannerNode = node.SelectSingleNode("./banner");
|
|
||||||
if (bannerNode != null)
|
|
||||||
{
|
{
|
||||||
var val = bannerNode.InnerText;
|
searchResult.SearchProviderName = Name;
|
||||||
if (!string.IsNullOrWhiteSpace(val))
|
|
||||||
{
|
|
||||||
searchResult.ImageUrl = TVUtils.BannerUrl + val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var airDateNode = node.SelectSingleNode("./FirstAired");
|
|
||||||
if (airDateNode != null)
|
|
||||||
{
|
|
||||||
var val = airDateNode.InnerText;
|
|
||||||
if (!string.IsNullOrWhiteSpace(val))
|
|
||||||
{
|
|
||||||
DateTime date;
|
|
||||||
if (DateTime.TryParse(val, out date))
|
|
||||||
{
|
|
||||||
searchResult.ProductionYear = date.Year;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var title in titles)
|
|
||||||
{
|
|
||||||
if (string.Equals(title, comparableName, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
var id = node.SelectSingleNode("./seriesid") ??
|
|
||||||
node.SelectSingleNode("./id");
|
|
||||||
|
|
||||||
if (id != null)
|
|
||||||
{
|
|
||||||
searchResult.Name = title;
|
|
||||||
searchResult.SetProviderId(MetadataProviders.Tvdb, id.InnerText);
|
|
||||||
searchResults.Add(searchResult);
|
searchResults.Add(searchResult);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_logger.Info("TVDb Provider - " + title + " did not match " + comparableName);
|
|
||||||
|
default:
|
||||||
|
reader.Skip();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -618,6 +578,118 @@ namespace MediaBrowser.Providers.TV
|
|||||||
return searchResults;
|
return searchResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private RemoteSearchResult GetSeriesSearchResultFromSubTree(XmlReader reader, string comparableName)
|
||||||
|
{
|
||||||
|
var searchResult = new RemoteSearchResult
|
||||||
|
{
|
||||||
|
SearchProviderName = Name
|
||||||
|
};
|
||||||
|
|
||||||
|
var titles = new List<string>();
|
||||||
|
string seriesId = null;
|
||||||
|
|
||||||
|
reader.MoveToContent();
|
||||||
|
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
if (reader.NodeType == XmlNodeType.Element)
|
||||||
|
{
|
||||||
|
switch (reader.Name)
|
||||||
|
{
|
||||||
|
case "SeriesName":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(val))
|
||||||
|
{
|
||||||
|
titles.Add(GetComparableName(val));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "AliasNames":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
var alias = (val ?? string.Empty).Split(new [] { '|' }, StringSplitOptions.RemoveEmptyEntries).Select(GetComparableName);
|
||||||
|
titles.AddRange(alias);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "IMDB_ID":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(val))
|
||||||
|
{
|
||||||
|
searchResult.SetProviderId(MetadataProviders.Imdb, val);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "banner":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(val))
|
||||||
|
{
|
||||||
|
searchResult.ImageUrl = TVUtils.BannerUrl + val;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "FirstAired":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(val))
|
||||||
|
{
|
||||||
|
DateTime date;
|
||||||
|
if (DateTime.TryParse(val, out date))
|
||||||
|
{
|
||||||
|
searchResult.ProductionYear = date.Year;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "id":
|
||||||
|
case "seriesid":
|
||||||
|
{
|
||||||
|
var val = reader.ReadElementContentAsString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(val))
|
||||||
|
{
|
||||||
|
seriesId = val;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
reader.Skip();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var title in titles)
|
||||||
|
{
|
||||||
|
if (string.Equals(title, comparableName, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(seriesId))
|
||||||
|
{
|
||||||
|
searchResult.Name = title;
|
||||||
|
searchResult.SetProviderId(MetadataProviders.Tvdb, seriesId);
|
||||||
|
return searchResult;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_logger.Info("TVDb Provider - " + title + " did not match " + comparableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The remove
|
/// The remove
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user