@ -12,6 +12,7 @@ using System.Xml;
using MediaBrowser.Common.Configuration ;
using MediaBrowser.Common.Configuration ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.Library ;
using MediaBrowser.Controller.Providers ;
using MediaBrowser.Controller.Providers ;
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Entities ;
using MediaBrowser.XbmcMetadata.Configuration ;
using MediaBrowser.XbmcMetadata.Configuration ;
@ -24,20 +25,31 @@ namespace MediaBrowser.XbmcMetadata.Parsers
where T : BaseItem
where T : BaseItem
{
{
private readonly IConfigurationManager _config ;
private readonly IConfigurationManager _config ;
private readonly IUserManager _userManager ;
private readonly IUserDataManager _userDataManager ;
private Dictionary < string , string > _validProviderIds ;
private Dictionary < string , string > _validProviderIds ;
/// <summary>
/// <summary>
/// Initializes a new instance of the <see cref="BaseNfoParser{T}" /> class.
/// Initializes a new instance of the <see cref="BaseNfoParser{T}" /> class.
/// </summary>
/// </summary>
/// <param name="logger">The logger.</param>
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
/// <param name="config">the configuration manager.</param>
/// <param name="config">Instance of the <see cref="IConfigurationManager"/> interface.</param>
/// <param name="providerManager">The provider manager.</param>
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
public BaseNfoParser ( ILogger logger , IConfigurationManager config , IProviderManager providerManager )
/// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
/// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
public BaseNfoParser (
ILogger logger ,
IConfigurationManager config ,
IProviderManager providerManager ,
IUserManager userManager ,
IUserDataManager userDataManager )
{
{
Logger = logger ;
Logger = logger ;
_config = config ;
_config = config ;
ProviderManager = providerManager ;
ProviderManager = providerManager ;
_validProviderIds = new Dictionary < string , string > ( ) ;
_validProviderIds = new Dictionary < string , string > ( ) ;
_userManager = userManager ;
_userDataManager = userDataManager ;
}
}
protected CultureInfo UsCulture { get ; } = new CultureInfo ( "en-US" ) ;
protected CultureInfo UsCulture { get ; } = new CultureInfo ( "en-US" ) ;
@ -261,6 +273,14 @@ namespace MediaBrowser.XbmcMetadata.Parsers
{
{
var item = itemResult . Item ;
var item = itemResult . Item ;
var nfoConfiguration = _config . GetNfoConfiguration ( ) ;
UserItemData ? userData = null ;
if ( ! string . IsNullOrWhiteSpace ( nfoConfiguration . UserId ) )
{
var user = _userManager . GetUserById ( Guid . Parse ( nfoConfiguration . UserId ) ) ;
userData = _userDataManager . GetUserData ( user , item ) ;
}
switch ( reader . Name )
switch ( reader . Name )
{
{
// DateCreated
// DateCreated
@ -355,6 +375,50 @@ namespace MediaBrowser.XbmcMetadata.Parsers
break ;
break ;
}
}
case "watched" :
{
var val = reader . ReadElementContentAsBoolean ( ) ;
if ( userData ! = null )
{
userData . Played = val ;
}
break ;
}
case "playcount" :
{
var val = reader . ReadElementContentAsString ( ) ;
if ( ! string . IsNullOrWhiteSpace ( val ) & & userData ! = null )
{
if ( int . TryParse ( val , NumberStyles . Integer , UsCulture , out var count ) )
{
userData . PlayCount = count ;
}
}
break ;
}
case "lastplayed" :
{
var val = reader . ReadElementContentAsString ( ) ;
if ( ! string . IsNullOrWhiteSpace ( val ) & & userData ! = null )
{
if ( DateTime . TryParse ( val , CultureInfo . InvariantCulture , DateTimeStyles . AssumeUniversal , out var added ) )
{
userData . LastPlayedDate = added . ToUniversalTime ( ) ;
}
else
{
Logger . LogWarning ( "Invalid lastplayed value found: {Value}" , val ) ;
}
}
break ;
}
case "countrycode" :
case "countrycode" :
{
{
var val = reader . ReadElementContentAsString ( ) ;
var val = reader . ReadElementContentAsString ( ) ;
@ -622,7 +686,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
case "premiered" :
case "premiered" :
case "releasedate" :
case "releasedate" :
{
{
var formatString = _co nfig. GetNf oConfiguration( ) . ReleaseDateFormat ;
var formatString = nfoConfiguration. ReleaseDateFormat ;
var val = reader . ReadElementContentAsString ( ) ;
var val = reader . ReadElementContentAsString ( ) ;
@ -640,7 +704,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
case "enddate" :
case "enddate" :
{
{
var formatString = _co nfig. GetNf oConfiguration( ) . ReleaseDateFormat ;
var formatString = nfoConfiguration. ReleaseDateFormat ;
var val = reader . ReadElementContentAsString ( ) ;
var val = reader . ReadElementContentAsString ( ) ;