@ -1,6 +1,7 @@
using System ;
using System.Globalization ;
using System.IO ;
using System.Text ;
using System.Threading ;
using System.Xml ;
using MediaBrowser.Common.Configuration ;
@ -81,7 +82,10 @@ namespace MediaBrowser.XbmcMetadata.Parsers
}
// Extract the last episode number from nfo
// Retrieves all title and plot tags from the rest of the nfo and concatenates them with the first episode
// This is needed because XBMC metadata uses multiple episodedetails blocks instead of episodenumberend tag
var name = new StringBuilder ( item . Item . Name ) ;
var overview = new StringBuilder ( item . Item . Overview ) ;
while ( ( index = xmlFile . IndexOf ( srch , StringComparison . OrdinalIgnoreCase ) ) ! = - 1 )
{
xml = xmlFile . Substring ( 0 , index + srch . Length ) ;
@ -92,12 +96,44 @@ namespace MediaBrowser.XbmcMetadata.Parsers
{
reader . MoveToContent ( ) ;
if ( reader . ReadToDescendant ( "episode" ) & & int . TryParse ( reader . ReadElementContentAsString ( ) , out var num ) )
while ( ! reader . EOF & & reader . ReadState = = ReadState . Interactive )
{
item . Item . IndexNumberEnd = Math . Max ( num , item . Item . IndexNumberEnd ? ? num ) ;
cancellationToken . ThrowIfCancellationRequested ( ) ;
if ( reader . NodeType = = XmlNodeType . Element )
{
switch ( reader . Name )
{
case "name" :
case "title" :
case "localtitle" :
name . Append ( " / " ) . Append ( reader . ReadElementContentAsString ( ) ) ;
break ;
case "episode" :
{
if ( int . TryParse ( reader . ReadElementContentAsString ( ) , out var num ) )
{
item . Item . IndexNumberEnd = Math . Max ( num , item . Item . IndexNumberEnd ? ? num ) ;
}
break ;
}
case "biography" :
case "plot" :
case "review" :
overview . Append ( " / " ) . Append ( reader . ReadElementContentAsString ( ) ) ;
break ;
}
}
reader . Read ( ) ;
}
}
}
item . Item . Name = name . ToString ( ) ;
item . Item . Overview = overview . ToString ( ) ;
}
catch ( XmlException )
{
@ -172,6 +208,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
break ;
}
case "displayafterseason" :
case "airsafter_season" :
{
var val = reader . ReadElementContentAsString ( ) ;