|
@@ -256,8 +256,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
|
|
{
|
|
|
var item = itemResult.Item;
|
|
|
|
|
|
- var userDataUserId = _config.GetNfoConfiguration().UserId;
|
|
|
-
|
|
|
switch (reader.Name)
|
|
|
{
|
|
|
// DateCreated
|
|
@@ -792,117 +790,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- case "watched":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val) && !string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- bool parsedValue;
|
|
|
- if (bool.TryParse(val, out parsedValue))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- userData.Played = parsedValue;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case "playcount":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val) && !string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- int parsedValue;
|
|
|
- if (int.TryParse(val, NumberStyles.Integer, _usCulture, out parsedValue))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- userData.PlayCount = parsedValue;
|
|
|
-
|
|
|
- if (parsedValue > 0)
|
|
|
- {
|
|
|
- userData.Played = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case "lastplayed":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val) && !string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- DateTime parsedValue;
|
|
|
- if (DateTime.TryParseExact(val, "yyyy-MM-dd HH:mm:ss", _usCulture, DateTimeStyles.AssumeLocal, out parsedValue))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- userData.LastPlayedDate = parsedValue.ToUniversalTime();
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case "resume":
|
|
|
- {
|
|
|
- if (!reader.IsEmptyElement)
|
|
|
- {
|
|
|
- using (var subtree = reader.ReadSubtree())
|
|
|
- {
|
|
|
- if (!string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- FetchFromResumeNode(subtree, item, userData);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- reader.Read();
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case "isuserfavorite":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val) && !string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- bool parsedValue;
|
|
|
- if (bool.TryParse(val, out parsedValue))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- userData.IsFavorite = parsedValue;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case "userrating":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val) && !string.IsNullOrWhiteSpace(userDataUserId))
|
|
|
- {
|
|
|
- double parsedValue;
|
|
|
- if (double.TryParse(val, NumberStyles.Any, _usCulture, out parsedValue))
|
|
|
- {
|
|
|
- var userData = GetOrAdd(itemResult, userDataUserId);
|
|
|
-
|
|
|
- userData.Rating = parsedValue;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
default:
|
|
|
string readerName = reader.Name;
|
|
|
string providerIdValue;
|
|
@@ -922,50 +809,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private UserItemData GetOrAdd(MetadataResult<T> result, string userId)
|
|
|
- {
|
|
|
- return result.GetOrAddUserData(userId);
|
|
|
- }
|
|
|
-
|
|
|
- private void FetchFromResumeNode(XmlReader reader, T item, UserItemData userData)
|
|
|
- {
|
|
|
- reader.MoveToContent();
|
|
|
- reader.Read();
|
|
|
-
|
|
|
- // Loop through each element
|
|
|
- while (!reader.EOF && reader.ReadState == ReadState.Interactive)
|
|
|
- {
|
|
|
- if (reader.NodeType == XmlNodeType.Element)
|
|
|
- {
|
|
|
- switch (reader.Name)
|
|
|
- {
|
|
|
- case "position":
|
|
|
- {
|
|
|
- var val = reader.ReadElementContentAsString();
|
|
|
-
|
|
|
- if (!string.IsNullOrWhiteSpace(val))
|
|
|
- {
|
|
|
- double parsedValue;
|
|
|
- if (double.TryParse(val, NumberStyles.Any, _usCulture, out parsedValue))
|
|
|
- {
|
|
|
- userData.PlaybackPositionTicks = TimeSpan.FromSeconds(parsedValue).Ticks;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- default:
|
|
|
- reader.Skip();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- reader.Read();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private void FetchFromFileInfoNode(XmlReader reader, T item)
|
|
|
{
|
|
|
reader.MoveToContent();
|