using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.Providers ;
using MediaBrowser.LocalMetadata.Parsers ;
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Logging ;
using System.Collections.Generic ;
using System.IO ;
using System.Threading ;
using MediaBrowser.Common.IO ;
using MediaBrowser.Controller.IO ;
using MediaBrowser.Model.IO ;
using MediaBrowser.Model.Xml ;
namespace MediaBrowser.LocalMetadata.Providers
{
public class EpisodeXmlProvider : BaseXmlProvider < Episode >
{
private readonly ILogger _logger ;
private readonly IProviderManager _providerManager ;
private readonly IXmlReaderSettingsFactory _xmlSettings ;
public EpisodeXmlProvider ( IFileSystem fileSystem , ILogger logger , IProviderManager providerManager , IXmlReaderSettingsFactory xmlSettings )
: base ( fileSystem )
{
_logger = logger ;
_providerManager = providerManager ;
_xmlSettings = xmlSettings ;
}
protected override void Fetch ( MetadataResult < Episode > result , string path , CancellationToken cancellationToken )
{
var images = new List < LocalImageInfo > ( ) ;
var chapters = new List < ChapterInfo > ( ) ;
new EpisodeXmlParser ( _logger , FileSystem , _providerManager , _xmlSettings ) . Fetch ( result , images , path , cancellationToken ) ;
result . Images = images ;
}
protected override FileSystemMetadata GetXmlFile ( ItemInfo info , IDirectoryService directoryService )
{
var metadataPath = Path . GetDirectoryName ( info . Path ) ;
metadataPath = Path . Combine ( metadataPath , "metadata" ) ;
var metadataFile = Path . Combine ( metadataPath , Path . ChangeExtension ( Path . GetFileName ( info . Path ) , ".xml" ) ) ;
return directoryService . GetFile ( metadataFile ) ;
}
}
}